Автор |
Сообщение |
Darkchemist
Зарегистрирован: 12.07.2011
Сообщения: 30
|
Пытаюсь оптимизировать простенькую систему:
Код: |
LookBack = Optimize ("lookback", 22, 10, 50, 3);
Smooth1 = Optimize ("Smooth1", 22, 10, 50, 3);
Smooth2 = Optimize ("Smooth2", 22, 10, 50, 3);
Period = Optimize ("Period", 25, 10, 30, 2);
HH = HHV( H, LookBack );
LL = LLV( L, LookBack );
StoMom = 100 * EMA( EMA( C - 0.5 * ( HH + LL ), Smooth1 ), Smooth2 ) /
( 0.5 * EMA( EMA( HH - LL, Smooth1 ), Smooth2 ) );
Buy = (
MA(StoMom,15) > Ref(MA(StoMom,period), -1)
);
Sell = (
MA(StoMom,15) < Ref(MA(StoMom,period), -1)
);
Short = (
MA(StoMom,15) < Ref(MA(StoMom,period), -1)
);
Cover = (
MA(StoMom,15) > Ref(MA(StoMom,period), -1)
);
|
В отчете количество сделок порядка 1000 на годовом промежутке, хотя если посчитать сигналы вручную, их получается не более сотни. (пробовал по основным ликвидных инструментам GPR, SBR и т.п.)
В чем ошибка? При таком раскладе не реально учитывать комиссию, т.к. она съедает всю потенциальную прибыль... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну выведи ни график эти две средние MA(StoMom,15) и Ref(MA(StoMom,period) и посмотри |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Darkchemist
Зарегистрирован: 12.07.2011
Сообщения: 30
|
Тогда я похоже не понимаю смысла функции REF. Я думал, что в случае если период "-1", то она ссылается на предыдущее значение функции, заданной в качестве "array". Разве не так? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В общем да. Ref() сдвигает array на период.
Кстати, у тебя период положительный, т.е. Ref() смотрит не назад а вперед т.е. смотрит в будущее..... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Darkchemist
Зарегистрирован: 12.07.2011
Сообщения: 30
|
Код: |
Ref(MA(StoMom,period), [b]-1[/b])
|
вроде как отрицательный...
Почему у меня график ref(MA(), -1) и самого МА как-то очень сильно различаются?
Код: |
_SECTION_BEGIN("Stochastic Momentum");
LookBack = Param("Lookback", 13, 2, 100 );
Smooth1 = Param("Smooth 1", 25, 1, 100 );
Smooth2 = Param("Smooth 2", 2, 1, 100 );
HH = HHV( H, LookBack );
LL = LLV( L, LookBack );
StoMom = 100 * EMA( EMA( C - 0.5 * ( HH + LL ), Smooth1 ), Smooth2 ) /
( 0.5 * EMA( EMA( HH - LL, Smooth1 ), Smooth2 ) );
Plot(StoMom, _DEFAULT_NAME(), ParamColor("Color", ColorCycle ) );
_SECTION_END();
_SECTION_BEGIN("MA1");
P = ParamField("Price field",-1);
Periods = Param("Periods", 15, 2, 300, 1, 10 );
Plot( MA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), ParamStyle("Style") );
_SECTION_END();
_SECTION_BEGIN("REF");
P = ParamField("Price field",-1);
Periods = Param("Periods", 15, 2, 300, 1, 10 );
Plot( Ref(MA( P, Periods ), -1), _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), ParamStyle("Style") );
_SECTION_END(); |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
belin
Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user
|
Darkchemist писал(а): |
Почему у меня график ref(MA(), -1) и самого МА как-то очень сильно различаются?
|
Посмотри в параметрах на что ссылаются P = ParamField("Price field",-1); в обоих случаях, часто бывает, эти поля отличаются. А для оптимизатора нужно явно указывать , например, Close, во избежание разночтений. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Darkchemist писал(а): |
вроде как отрицательный...
|
Ой. Это я не туда глянул. Срри.
Ща поподробнее посмотрю... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Если тестировался первый код, то и смотреть на графике надо вот такой
Код: |
LookBack = Optimize ("lookback", 22, 10, 50, 3);
Smooth1 = Optimize ("Smooth1", 22, 10, 50, 3);
Smooth2 = Optimize ("Smooth2", 22, 10, 50, 3);
Period = Optimize ("Period", 25, 10, 30, 2);
HH = HHV( H, LookBack );
LL = LLV( L, LookBack );
StoMom = 100 * EMA( EMA( C - 0.5 * ( HH + LL ), Smooth1 ), Smooth2 ) /
( 0.5 * EMA( EMA( HH - LL, Smooth1 ), Smooth2 ) );
Plot(C, "", colorBlack, styleCandle);
Plot(MA(StoMom,15), "", colorRed, styleLeftAxisScale);
Plot(Ref(MA(StoMom,period), -1), "", colorBlue, styleLeftAxisScale);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Darkchemist
Зарегистрирован: 12.07.2011
Сообщения: 30
|
Заменив в коде
на
и оптимизировав систему на дневках получил минимальный убыток при значении параметров 16,49,49,28 соответственно. При этом по отчету было совершено 209 операций, в то время как взглянув на график МА и ее Ref(,-1), было 2 сигнала разворота, т.е. максимум 6 сделок... не понимаю |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Переменная которая меняется при оптимизации функцией Optimize в индикаторе остается неизменной. Тебе надо посмотреть параметры полученные после оптимизации и подставить их в код индикатора явно
Типа
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Darkchemist
Зарегистрирован: 12.07.2011
Сообщения: 30
|
Ну я вобщем-то так и делаю...
При этом если использовать функцию Cross(MA,Ref), то все в порядке. А вот при операции сравнения что-то не то... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Darkchemist писал(а): |
Ну я вобщем-то так и делаю...
При этом если использовать функцию Cross(MA,Ref), то все в порядке. А вот при операции сравнения что-то не то... |
Угу. А стопы в АА используешь? или может в коде? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Darkchemist
Зарегистрирован: 12.07.2011
Сообщения: 30
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну вот поэтому.
Смотри. Cross генерирует только один сигнал в момент пересечения. Если поставить просто >, то сигналов получается масса, на каждом баре когда МА > Ref есть сигнал, но эти сигналы тестер игнорирует пока находится в позиции.
Получается так. MA стала выше Ref, начали генериться сигналы, тестер вошел в позицию и пока сигналы ингнорирует. Потом сработал стоп, система из позиции вышла, а сигналы все поступают. В результате тестер сразу снова открывает позицию. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Darkchemist
Зарегистрирован: 12.07.2011
Сообщения: 30
|
Ааа. Блин! Все понял ) Спасибо ) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|