Автор |
Сообщение |
ID
Советник
Зарегистрирован: 07.01.2008
Сообщения: 370
|
Всем привет!
Как известно, получить 500 пунктов за два месяца - это непонятный резалт, поскольку мы покупаем товары в магазине на рубли. При чистом выходе 500 пунктов можно и хорошо поднять, а можно и слиться. Вообщем, тема ИМХО избитая.
Поэтому я, получив резалты сделок в АМИ, загонял их в Эксель и смотрел на то, что я получу в реальных денежках, а также на денежное соотношение риск-доходность. Вопрос такой: можно ли в ами написать такой код, который будет сам давать долларовый репорт в бактесте для форекса или фьючерса? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
Всем привет!
Как известно, получить 500 пунктов за два месяца - это непонятный резалт, поскольку мы покупаем товары в магазине на рубли. При чистом выходе 500 пунктов можно и хорошо поднять, а можно и слиться. Вообщем, тема ИМХО избитая.
Поэтому я, получив резалты сделок в АМИ, загонял их в Эксель и смотрел на то, что я получу в реальных денежках, а также на денежное соотношение риск-доходность. Вопрос такой: можно ли в ами написать такой код, который будет сам давать долларовый репорт в бактесте для форекса или фьючерса?
|
Привет. Вообще обычно труднее получить профит в пунктах т.к. это более общий вариант. Ами позволяет получать профит в чем угодно. Это зависит от настроек. По умолчанию Ами дает результаты в процентах от использованных денег. Если включен Futures mode, то один тик торгуемого актива приносит денег столько, сколько задано в поле Point value в окне information.
Более того. Можно даже переводить результат в национальную валюту используя настройки currencies (только я ни разу этого не делал и не в курсе... ) |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
ID
Советник
Зарегистрирован: 07.01.2008
Сообщения: 370
|
Олег, здарова
написал такой код:
Код: |
InitialEquity = 1000; //Начальный депозит
SetOption("InitialEquity", InitialEquity);
SetOption("AllowSameBarExit", True);
SetOption("ActivateStopsImmediately", False);
SetOption("AllowPositionShrinking", False);
SetOption("FuturesMode", True);
PositionSize = -3; // Использую х процентов от капитала в каждой сделке
MarginDeposit = 10;
RoundLotSize = 1;
PointValue = 0.1*10000; |
работает нормально на обратных котировках.
Но есть одно но.
в хелпере сказано, что PointValue - это величина прибыли, которую дает один контракт при измении цены на один пункт.
Я код сделал, через маржу 10 долларов (минималка на ФК). То есть если купил 2 контракта евро, то купил реально 2000 евро.
Так вот, если взять 1 контракт, то один пункт дает прибыль 0,1 доллара. Если указать:
то резалт будет неправильный. Почему? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вечером поковыряюсь - напишу. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Привет. Чета башка плохо соображает, но она надумала вот что.
PositionSize = -3; // Использую х процентов от капитала в каждой сделке
тут все прально
MarginDeposit = 10; для покупки одного контракта (например одного евро) при плече 1/100 надо одну сотую базовой валюты т.е. пишем
MarginDeposit = 0.01;
RoundLotSize = 1;
Минимальный лот в булке равен одну тысячную стандартного, милионного лота. Т.е. 1000 единиц базовой валюты. Пишем
RoundLotSize = 1000;
PointValue = 0.1*10000;
Тут все просто. Изменение одного евро на один тик приносит прибыль в размере этого тика т.е. пишем
PointValue = 0.001;
Итого треба писать
Код: |
InitialEquity = 1000; //Начальный депозит
SetOption("InitialEquity", InitialEquity);
SetOption("AllowSameBarExit", True);
SetOption("ActivateStopsImmediately", False);
SetOption("AllowPositionShrinking", False);
SetOption("FuturesMode", True);
PositionSize = -3; // Использую х процентов от капитала в каждой сделке
MarginDeposit = 0.01;
RoundLotSize = 1000;
PointValue = 0.001;
|
Проверил. Вроде все прально...
А может и нет, голова плохо соображает. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
ID
Советник
Зарегистрирован: 07.01.2008
Сообщения: 370
|
Олег, твой код непрально считает:
Пара евродоллар,день, период теста 01/01/2000-01/01/2008
Твой код:
Код: |
InitialEquity = 1000; //Начальный депозит
SetOption("InitialEquity", InitialEquity);
SetOption("AllowSameBarExit", True);
SetOption("ActivateStopsImmediately", False);
SetOption("AllowPositionShrinking", False);
SetOption("FuturesMode", True);
PositionSize = -3; // Использую х процентов от капитала в каждой сделке
MarginDeposit = 0.01;
RoundLotSize = 1000;
PointValue = 0.001;
Buy= Ref(Cross(MA(C,28),MA(C,35)),-1);
BuyPrice= O;
Sell= Ref(Cross(MA(C,35),MA(C,28)),-1);
SellPrice= O;
Short= 0;
Cover= 0; |
Первая сделка: убыток -84 пункта, долларовый резалт -0,03 (а должно быть -25,2: 3000*0,0084).
Мой код прально считает, но я не понимаю почему ((
Код: |
InitialEquity = 1000; //Начальный депозит
SetOption("InitialEquity", InitialEquity);
SetOption("AllowSameBarExit", True);
SetOption("ActivateStopsImmediately", False);
SetOption("AllowPositionShrinking", False);
SetOption("FuturesMode", True);
PositionSize = -Param("Percent",3,0,100,1); // Использую х процентов от капитала в каждой сделке
MarginDeposit = 10;
RoundLotSize = 1;
PointValue = 0.1*10000;
Buy= Ref(Cross(MA(C,28),MA(C,35)),-1);
BuyPrice= O;
Sell= Ref(Cross(MA(C,35),MA(C,28)),-1);
SellPrice= O;
Short= 0;
Cover= 0; |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Хм. Действительно... Может косяк... надо подумать как следует. Похоже придется писать в тех. поддержку.
Посмотрел детальный отчет. Про кеш пишет полную фигню. Если хочешь посмотреть включи в настройках тестера на закладке Report опцию Detailed log
(((
Пока делай как считаешь правильным. Обращай внимание на Position Value (сколько денег стоит позиция) |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Аааа. Во вроде понял. Все у меня прально кроме одного
Цитата: |
PointValue = 0.1*10000;
Тут все просто. Изменение одного евро на один тик приносит прибыль в размере этого тика т.е. пишем
PointValue = 0.001;
|
В PointValue надо писать не прибыль на один тик, а прибыль на 1. Т.е. в данном случае 1. Тогда все прально. Но в Detailed log похоже всеравно косяки.
Код: |
PositionSize = -3;
MarginDeposit = 0.01;
RoundLotSize = 1000;
PointValue = 1;
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
ID
Советник
Зарегистрирован: 07.01.2008
Сообщения: 370
|
000 писал(а): |
Похоже придется писать в тех. поддержку.) |
Накатал я им письмо... поглядим чего скажут |
|
|
Посмотреть профиль Отправить личное сообщение |
|
ID
Советник
Зарегистрирован: 07.01.2008
Сообщения: 370
|
Получил ответ: все стало понятно.
Написал письмо:
hello, dear creator Amibroker
>
> I am from Russia. I not good know English grammar, but i need your help.
> 1. I have symbol EUR. You can see symbol settings in file 2.GIF in
> attachment
> 2. I create easy AFL code. You can see this code in file others.afl in
> attachment
> 3. When i test my code in AA, i have INCORRECT results. Incorrect info you
> can see in file 1.gif in attachment. Account "CASH" is not correct.
>
> Tell me please why Account "CASH" is not correct. Is it my error or this
> is error of Amibroker?
> Thank you....
Ответ такой:
Hello,
Note that in your settings you're using maring account (go to AA ->
Settings -> General and enter 100 if you don't want to use marigin). Please
also send your settings from AA window (Automatic Analysis -> Settings ->
SAVE).
Best regards
Marcin Gorzynski
Amibroker.com Technical Support
Мораль такая:
1. Настраиваем тикеры как сказано здесь http://www.amibroker.com/kb/2006/08/09/amibroker-for-forex/#more-31
2. В настройках AA ->
Settings -> General ставим 100 для поля Account margin
3. Получаем красивый резалт |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|