Автор |
Сообщение |
MSH
Зарегистрирован: 13.07.2011
Сообщения: 16
|
Всем привет.
В стратегии планирую использовать 2 таймфрейма - минутки и пятиминутки. Написал код без изменения таймфреймов под базовый фрейм 5 минут - всё работает ок.
Задал базовый тайм фрейм 1 мин., переписал соответствующим образом код, чтобы из минуток делал пятиминутки.
Запустил - результат другой (((
Никак не могу понять в чём проблема, где ошибка.
Помогите, пожалуйста, разобраться.
Код под базовый фрейм 5 минут:
-------------------------
CondCrossPrice1 = Cross(EMA(Close,25),Close) AND
EMA(Ref(Close,-1),25) > EMA(Close,25);
Cond1 = EMA(Ref(Close,-1),10) > EMA(Close,10);
SellSignal = Cond1 AND CondCrossPrice1;
Sell = SellSignal;
--------------------------
Код под базовый фрейм 1 минута:
-------------------------
Price5min1 = TimeFrameCompress( Close, in5Minute, mode = compressLast);
Price5min = TimeFrameExpand( Price5min1, in5Minute, mode = expandLast);
CondCrossPrice1 = Cross(EMA(Price5min,25),Price5min) AND
EMA(Ref(Price5min,-1),25) > EMA(Price5min,25);
Cond1 = EMA(Ref(Price5min,-1),10) > EMA(Price5min,10);
SellSignal = Cond1 AND CondCrossPrice1;
Sell = SellSignal;
-------------------------- |
Последний раз редактировалось: MSH (Вт Авг 02, 2011 5:52 pm), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Могет так попробовать?
Код: |
TimeFrameSet(in5Minute);
Price5min1 = Close;
TimeFrameRestore();
Price5min= TimeFrameExpand(Price5min1 , in5Minute, expandFirst);
|
|
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
MSH
Зарегистрирован: 13.07.2011
Сообщения: 16
|
Пробовал - не помогает, результат такой же ((
P.S. В последней строке, наверное, имеется ввиду expandLAST, да? С expandFirst вылезают какие-то милиардные прибыли... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
А, ну да, у тебя же тут по клозам сигналы. expandLast
Насчет несовпадения. С чего ты взял что ЕМА 25 периода, построенная по 5минутным клозам должна совпасть с ЕМА25, построенная по минуткам, где клозы - 5минутные?
Возьмем к примеру ЕМА3.
5 минут: исходные данные 1,2,3 - получим 1 точку ема в конце
1 минута: исходные данные: 1,1,1,1,1,2,2,2,2,2,3,3,3,3,3 - тут мы получим для нашей ЕМА3 аж 13 точек, и они точно не будут совпадать с той одной для 5ти минутного фрейма. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
MSH
Зарегистрирован: 13.07.2011
Сообщения: 16
|
Да, ты прав, спасибо
Я ещё только вникаю в язык и до конца не разобрался...
Пробовал ещё вот так, тоже выдаёт другой результат:
---------------------
TimeFrameSet(in5Minute);
CondCrossPrice1 = Cross(EMA(Close,25),Close) AND
EMA(Ref(Close,-1),25) > EMA(Close,25);
Cond1 = EMA(Ref(Close,-1),10) > EMA(Close,10);
SellSignal = Cond1 AND CondCrossPrice1;
Sell = SellSignal;
TimeFrameRestore();
---------------------
Как же быть? Как правильно написать? Что-то я окончательно запутался... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Попробуй вывести стрелки с операциями бай/селл на график и глянь что показывает - думаю найдешь ошибку.
Код: |
PlotShapes(IIf(Buy,shapeUpArrow,shapeNone),colorGreen,0,L,-12); // рисуем стрелку ЛОНГ
PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed,0,H,-28); // рисуем стрелку выхода из ЛОНГ
PlotShapes(IIf(Short, shapeHollowDownArrow,shapeNone),colorRed,0,H,-12); // рисуем стрелку ШОРТ
PlotShapes(IIf(Cover,shapeHollowUpArrow,shapeNone),colorGreen,0,L,-28); // рисуем стрелку выхода из ШОРТ
|
|
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
MSH
Зарегистрирован: 13.07.2011
Сообщения: 16
|
Попробовал - ничего не понял
И возник новый вопрос.
При выведении стрелок кодом, как указано в пред. сообщении, они выводятся на график не все почему-то (т.е. по графику эквити видно, что входит\выходит, но на графике цены стрелки не рисует).
А вот когда в настройках указываешь "show trading arrows - yes", то показывает все.
Как такое вообще возможно? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Странно что стрелки не все рисует, код стопудовый.. Слух, а где ты откопал эту опцию show trading arrows - yes? Впервые про нее слышу Гляну как у себя настроено. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Это не функция. Это опция графика. Когда по результатам теста смотришь трейдинг арроу они могут быть отображены не на всех пане.
http://www.amisite.ru/begin/chart.htm в конце.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
MSH
Зарегистрирован: 13.07.2011
Сообщения: 16
|
А, понял почему не все стрелки рисует - этот код не отображает стопы
И сразу новый вопрос - а как нарисовать выход по стопу? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Опцию нашел - у меня тож стоит Yes. Насчет стрелок по стопам? Разве эти 2 строчки не должны как раз за это отвечать?
Код: |
PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed,0,H,-28); // рисуем стрелку выхода из ЛОНГ
PlotShapes(IIf(Cover,shapeHollowUpArrow,shapeNone),colorGreen,0,L,-28); // рисуем стрелку выхода из ШОРТ |
|
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
MSH
Зарегистрирован: 13.07.2011
Сообщения: 16
|
Насколько я понял, эти стрелки появляются, если есть событие Sell или Cover. Видимо ApplyStop при срабатывании генерирует не sell или cover а событие с другим названием.
На графике у меня входы отображены, а выходы нет. Выходы у меня как раз по стопам. Поэтому и напрашивается такой вывод. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Мб.. У меня в коде все сигналы ручками прописываются, встроенными функциями Ами вообще пользуюсь по минимуму.
Хотя вообще странно. У тебя же в коде выше есть сигнал Sell. Или ты еще в доплнение к нему используешь какой-то другой стоп? |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
MSH
Зарегистрирован: 13.07.2011
Сообщения: 16
|
Да, тоже прихожу к выводу, что функциями ами лучше поменьше пользоваться, пожалуй нужно самому написать стоп, точнее даже трейлинг стоп, поскольку через ApplyStop у меня это реализовать вообще как-то криво получилось. Стопы самостоятельно через цикл пишутся?
В коде использовал два стопа:
ApplyStop(stopTypeLoss, stopModePoint, Stop, ExitAtStop = 1, volatile = 0, ReEntryDelay = 0 ); //стоплосс
ApplyStop(stopTypeProfit, stopModePoint, Take, ExitAtStop = 1, volatile = 0, ReEntryDelay = 0 ); //тейкпрофит |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Аха, я вообще ВСЕ делаю в цикле - лично мне так намного понятней чо происходит ваще Да и дебажить проще, чем пытаться понять как работает конкретная функция и насколько криво.
Для меня еще 1 плюс - чем меньше встроенных функций я испльзую, тем легче могу перенести код системы на какой то другой язык.
Но скорость канеш падает в разы... Для меня впрочем это пока не очень важно. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|