Автор |
Сообщение |
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Это я ошибся. Торопился. Бывает. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Mike
Зарегистрирован: 08.04.2008
Сообщения: 24
Откуда: Астрахань
|
Доброго времени суток!
прошу помощи, задумал потестить системку, работающую на двух ТФ. Смысл такой- на график наложены 2 ема, сигналы поступают при их пересечении, это на меньшем ТФ (15мин), на большем же ТФ эти же (или такие же) ема выступают в роли фильтра, т.е. если они пересечены например в лонг, то на меньшем ТФ обрабатываются только сигналы "лонг" и т.п.
Написал код, но что то видимо недодумал, только начал расбираться с языком, и фильтрация не работает , т.е рисуются все пересечения ема на меньшем ТФ...
Код: |
TimeFrameSet(in15Minute);
ema_slow15=EMA(Close,10);
ema_bistr15=EMA(Ref(Open,-2),7);
TimeFrameSet(inHourly);
ema_slow60=EMA(Close,10);
ema_bistr60=EMA(Ref(Open,-2),7);
TimeFrameRestore();
Plot( TimeFrameExpand( ema_slow15, in15Minute), "ema_slow15", colorGreen );
Plot( TimeFrameExpand( ema_bistr15, in15Minute), "ema_bistr15", colorRed );
Plot( TimeFrameExpand( ema_slow60, inHourly), "ema_slow60", colorGreen,styleDots );
Plot( TimeFrameExpand( ema_bistr60, inHourly), "ema_bistr60", colorRed,styleDots );
//Cond_long=ema_bistr60<ema_slow60;
//Cond_short=ema_bistr60>ema_slow60;
trade_cond = IIf( ema_bistr60<ema_slow60, 1, 0 );
Buy=Cross(ema_slow15,ema_bistr15) AND trade_cond=1;
Sell=0;
Short=0;
Cover=0;
Buy=ExRem( Buy, Sell);
PlotShapes(IIf(Buy,shapeUpArrow,0),5,0,L,-15);
|
плиз, если не затруднит, обьясните что тут не так? |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Я бы так написал
Код: |
TimeFrameSet(in15Minute);
ema_slow15=EMA(Close,10);
ema_bistr15=EMA(Ref(Open,-2),7);
TimeFrameRestore(); // Томаш рекомендует каждый раз восстанавливать фрейм
ema_slow15 = TimeFrameExpand( ema_slow15, in15Minute);
ema_bistr15 = TimeFrameExpand( ema_bistr15, in15Minute);
TimeFrameSet(inHourly);
ema_slow60=EMA(Close,10);
ema_bistr60=EMA(Ref(Open,-2),7);
TimeFrameRestore();
ema_slow60 = TimeFrameExpand( ema_slow60, inHourly);
ema_bistr60 = TimeFrameExpand( ema_bistr60, inHourly);
trade_cond = ema_bistr60 < ema_slow60;
Buy = Cross(ema_slow15,ema_bistr15) AND trade_cond;
Sell = 0;
Short = 0;
Cover = 0;
Buy=ExRem( Buy, Sell);
Plot( ema_slow15, "ema_slow15", colorGreen );
Plot( ema_bistr15, "ema_bistr15", colorRed );
Plot( ema_slow60, "ema_slow60", colorGreen,styleDots );
Plot( ema_bistr60, "ema_bistr60", colorRed,styleDots );
PlotShapes(Buy*shapeUpArrow, 5 , 0 , L, -15);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Mike
Зарегистрирован: 08.04.2008
Сообщения: 24
Откуда: Астрахань
|
О, спасибо, за оперативный ответ!
я тут полазил еще по форуму, ну и сделал вот так:
Код: |
RoundLotSize = 1;
MarginDeposit = 1;
TimeFrameSet(in15Minute);
ema_slow15=EMA(Close,10);
ema_bistr15=EMA(Ref(Open,-2),7);
TimeFrameRestore(); // Томаш рекомендует каждый раз восстанавливать фрейм
ema_slow15 = TimeFrameExpand( ema_slow15, in15Minute);
ema_bistr15 = TimeFrameExpand( ema_bistr15, in15Minute);
TimeFrameSet(inHourly);
ema_slow60=EMA(Close,10);
ema_bistr60=EMA(Ref(Open,-2),7);
TimeFrameRestore();
ema_slow60 = TimeFrameExpand( ema_slow60, inHourly);
ema_bistr60 = TimeFrameExpand( ema_bistr60, inHourly);
trade_long = ema_bistr60 < ema_slow60;
trade_short = ema_bistr60 > ema_slow60;
Buy = Cross(ema_slow15,ema_bistr15) AND trade_long;
Sell = Cross(ema_bistr15,ema_slow15) OR trade_short;
Short = 0;
Cover = 0;
Buy=ExRem( Buy, Sell);
Sell=ExRem(Sell,Buy);
Plot( ema_slow15, "ema_slow15", colorGreen );
Plot( ema_bistr15, "ema_bistr15", colorRed );
PlotShapes(Buy*shapeUpArrow, 5 , 0 , L, -15);
PlotShapes(Sell*shapeDownArrow, 4 , 0 , H, -15);
col = IIf( trade_long, colorGreen, colorRed );
Plot( Close, "Price", col, styleBar );
|
щас буду тестить..
еще раз пасиба |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Sergiovy
Зарегистрирован: 03.03.2008
Сообщения: 180
Откуда: Мурманск
|
000 писал(а): |
Вот. Правда в тестере не гонял. Возможны некоторые ошибки в коде, но логика точно правильная.
Код: |
// Определяем фрейм
x1 = 0;
x2 = 0;
x3 = 0; // надо задать реальные границы переключения фреймов
ИТД, ...
inMarket = 1;
sys4 = 1;
Buy[i] = Buy4[i];
}
}
}
}
|
|
Здравствуйте, Господа!
Очень понравилась идея переключения условий. Мне нужна была похожая, но в голову ничего не лезло, особенно с циклами...
Попробовал засунуть код в Ами, немного переделал, вылезли вот какие проблемы:
Сгнал Buy не срабатывает по условиям, а всегда появляется сразу после сигнала sell.
у меня условия конечно другие, но я их отдельно выводил в качестве индикатора, и они сами по себе работают четко. (условия)
условие самое простое - пересечение ценой сверху средней.
А Сам сигнал Buy появляется там, где до средней этой очень далеко, но зато сразу после сигнала Sell...
Ест-нно цена срабатывания не средняя, а close.
Еще я не нашел место в цикле, куда ставить команду Exrem - если неправильно поставить, то она влияет на количество позиций в тесте, или вообще не работает цикл...
Если можно, напишите, я правильно понимаю, что условия определяются режимом (Mode) , конкретный спусковой крючок, это например Buy1, если режим 1.
sys 1 это просто для идентификации - какая из систем ( какой именно Buy) будет работать
Глобально, наверное всем будет интересно увидеть каркас, который можно наращивать или там сокращать в зависимости от необходимости.
Кроме команд Buy/Sell, Short/Cover, внутри цикла надо бы вставить установку стопа, его перенос в точку б/у,
На словах это может выглядеть так:
Есть разные условия входов и выходов, а также стопов для разных ситуаций, например можно взять 3 ситуации:
покупка, при отражении от 3-х разных средних (150,27,9)
Конечно величины оптимальных профитов или стопов будут разными, если входы были разные, и выходы тоже разные в зависимомости от входов. Есть также продажа например при отражении от таких же средних... ну и то же самое про стопы, и про выходы...
Вроде бы предложенный цикл подходит, но т.к. я слаб в циклах, то не смог добиться того, чего писал выше.
Есть код, но приводить не стал - он достаточно большой.
Хорошо то, что его можно отлаживать по частям. Но пока не работает сам механизм выбора...
Если можно, проверьте идею с переключениями,
Если необходимо могу попробовать преобразовать переключатель в болванку, чтобы Вам легче было - но основа - в этом топике., только условия не разные фреймы а разные типы входов...
Если есть какие доп вопросы - плз.
На базе такого шаблона можно строить совершенно разные системы, в т.ч. и сращивать как бы несращиваемое. Есть условия для канала - применяем систему канальную, если тренд вверх - то трендовую, если контр трендовый вход - только опишите условия, , и вперед, также можно пробовать входить на гэпах, ну и кому чего взбредет...
Эта штука могла бы быть универсальной основой МТС.
Как только получится - можно браться за автомат...
Но приказами то надо управлять как я понимаю из цикла - его подгрупп, в зависимости от режима, так?
Еще раз, если нужен сам код - напишите -выложу болванку ( её у меня нет, а есть адаптированная к себе, но переделаю...)
Правда она не работает, но это как я понимаю от "тупости", а не от того, что идея плохая или нереализуемая...
Заранее благодарен,
S.Y. |
_________________ "Единственная pабота, достойная нас, — pабота над собой". Шон де Уоppен |
|
Посмотреть профиль Отправить личное сообщение |
|
Sergiovy
Зарегистрирован: 03.03.2008
Сообщения: 180
Откуда: Мурманск
|
Сгнал Buy не срабатывает по условиям, а всегда появляется сразу после сигнала sell.
---Когда поставил команду exrem туда же куда и buy[i]...
цена покупки в тестере стала появляться по формуле
- видимо надо ставить такие команды в каждый подмодуль mode
-Насчет Sellprice[i]=Sellprice1[i] не получается, т.к. у меня выход основан на цене входа +профит, а цена входа определена в цикле позже ( моя версия)
Еще я не нашел место в цикле, куда ставить команду Exrem - если неправильно поставить, то она влияет на количество позиций в тесте, или вообще не работает цикл...
--- Вроде нашел - см вверху
Копаем дальше, подключайтесь |
_________________ "Единственная pабота, достойная нас, — pабота над собой". Шон де Уоppен |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Sergiovy писал(а): |
Сгнал Buy не срабатывает по условиям, а всегда появляется сразу после сигнала sell.
у меня условия конечно другие, но я их отдельно выводил в качестве индикатора, и они сами по себе работают четко. (условия)
условие самое простое - пересечение ценой сверху средней.
|
В примере который я написал условия покупки тоже пересечение цены и средней.
Sergiovy писал(а): |
Еще я не нашел место в цикле, куда ставить команду Exrem - если неправильно поставить, то она влияет на количество позиций в тесте, или вообще не работает цикл...
|
Exrem там вообще не нужен. В цикле после покупки отсекаются все сигналы на покупку пока не будет закрытия.
Sergiovy писал(а): |
Если можно, напишите, я правильно понимаю, что условия определяются режимом (Mode) , конкретный спусковой крючок, это например Buy1, если режим 1.
sys 1 это просто для идентификации - какая из систем ( какой именно Buy) будет работать
|
Да. Когда система не в рынке сначала проверяется какая из систем (таймфреймов) будет работать в данный момент. Это зависит от Mode. Если осуществляется вход, то запоминается эта система (при помощи sys1, sys2, и т.д.) и затем проверяются только выходы по ней.
Sergiovy писал(а): |
Глобально, наверное всем будет интересно увидеть каркас, который можно наращивать или там сокращать в зависимости от необходимости.
Кроме команд Buy/Sell, Short/Cover, внутри цикла надо бы вставить установку стопа, его перенос в точку б/у,
На словах это может выглядеть так:
Есть разные условия входов и выходов, а также стопов для разных ситуаций, например можно взять 3 ситуации:
покупка, при отражении от 3-х разных средних (150,27,9)
Конечно величины оптимальных профитов или стопов будут разными, если входы были разные, и выходы тоже разные в зависимомости от входов. Есть также продажа например при отражении от таких же средних... ну и то же самое про стопы, и про выходы...
Вроде бы предложенный цикл подходит, но т.к. я слаб в циклах, то не смог добиться того, чего писал выше.
|
Такую болванку написать это целый огромный труд. Тем более, что возможны совершенно разные ваианты (переносов стопов, трейлингов, профитов и т.п.)
Если осуществлять выход только по ордерам Sell = cover = 0; , то все наоборот урощается. Цикл тогдавообще не нужен. Просто входим и устанавливаем стопы при помощи ApplyStop() задавая параметры в зависимости от Mode в момент входа. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Sergiovy писал(а): |
Сгнал Buy не срабатывает по условиям, а всегда появляется сразу после сигнала sell.
---Когда поставил команду exrem туда же куда и buy[i]...
цена покупки в тестере стала появляться по формуле
- видимо надо ставить такие команды в каждый подмодуль mode
-Насчет Sellprice[i]=Sellprice1[i] не получается, т.к. у меня выход основан на цене входа +профит, а цена входа определена в цикле позже ( моя версия)
Еще я не нашел место в цикле, куда ставить команду Exrem - если неправильно поставить, то она влияет на количество позиций в тесте, или вообще не работает цикл...
--- Вроде нашел - см вверху
Копаем дальше, подключайтесь |
Не видя конкретного кода и не зная идеи вообще трудно что-либо сказать |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
DMITRY
Зарегистрирован: 18.09.2009
Сообщения: 179
|
Привет Олег!!! Подскажи плз, почему в этом коде условия Buy = HBuy, Sell = HSell выполняются в Х-часов 15 минут не зависимо от настроек в базе данных. У меня в БД начало торгов указано с 10:30, а сделки в случае если условие истинно происходят в первые Х часов 15 минут.
Код: |
TimeFrameSet(inHourly);
H_ma = MA(C,15);
HBuy = Cross(C,MA(C,15));
HSell = Cross(MA(C,15),C);
TimeFrameRestore();
H_ma = TimeFrameExpand(H_ma,inHourly);
HBuy = TimeFrameExpand(HBuy, inHourly);
HSell = TimeFrameExpand(HSell, inHourly);
TimeFrameSet(in15Minute);
M_ma = MA(C,15);
MBuy = Cross(C,MA(C,15));
MSell = Cross(MA(C,15),C);
TimeFrameRestore();
M_ma = TimeFrameExpand(M_ma, in15Minute);
MBuy = TimeFrameExpand(MBuy, in15Minute);
MSell = TimeFrameExpand(MSell, in15Minute);
Buy = HBuy OR MBuy AND M_ma > H_ma;
Sell = HSell OR MSell;
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
Plot(C,"c",colorBlack,styleCandle);
Plot(H_ma,"H_ma",colorBlue,styleLine);
Plot(M_ma,"M_ma",colorRed,styleLine);
PlotShapes(IIf(Buy , shapeUpArrow, shapeNone) ,colorGreen, 0,L,-25);
PlotShapes(IIf( Sell, shapeDownArrow, shapeNone) ,colorOrange, 0,H,-25); |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Напиши плиз на каком фрейме тестируешь и чем конкретно тебя не устраивает Х:15 |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
DMITRY
Зарегистрирован: 18.09.2009
Сообщения: 179
|
Тестирую на 15 минутном интервале, часовая система дает сигналы в Х:30 мин, хотелось бы чтобы соответствовало. В чем косяк не въеду… |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
На 15 минутках свечка которая закрывается в 30 мин имеет время Х:15 в момент закрытия этой свечки как раз становится известно как закрылась часовая свечка. Вот поэтому..... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
DMITRY
Зарегистрирован: 18.09.2009
Сообщения: 179
|
Блин, правильно, на малые фреймы редко переключаюсь, не учел, спасибо. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
DMITRY
Зарегистрирован: 18.09.2009
Сообщения: 179
|
Привет Олег! Подскажи плз как правильно записать, в этом коде покупка должна происходить:
1. Если часовой клоуз пересек хай прошлой 5-той свечи.
2. Если сработал сигнал продажи на 15-ти минутном фрейме, но при этом сохранился сигнал часовой покупки и выполнилось условие покупки на 15-ти минутном фрейме.
На картинке отметил где должен быть повторный вход.
Код: |
TimeFrameSet(inHourly);
Hh = Ref(H,-5);
HL = Ref(L,-5);
HBuy = Cross(C,Hh);
HShort = Cross(Hl,C);
TimeFrameRestore();
Hh = TimeFrameExpand(Hh, inHourly);
HL = TimeFrameExpand(HL, inHourly);
HBuy = TimeFrameExpand(HBuy, inHourly);
HShort = TimeFrameExpand(HShort, inHourly);
TimeFrameSet(in15Minute);
Mh = Ref(H,-5);
Ml = Ref(L,-5);
MBuy = Cross(C,Mh);
MShort = Cross(Ml,C);
TimeFrameRestore();
Mh = TimeFrameExpand(Mh, in15Minute);
Ml = TimeFrameExpand(Ml, in15Minute);
MBuy = TimeFrameExpand(MBuy, in15Minute);
MShort = TimeFrameExpand(MShort, in15Minute);
Buy = HBuy OR HBuy AND MBuy;
Sell = HShort OR MShort;
Short = HShort OR HShort AND MShort;
Cover = HBuy OR MBuy;
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
Short = ExRem(Short,Cover);
Cover = ExRem(Cover,Short);
Plot(C,"c",colorBlack,styleCandle);
Plot(Hh,"Hh",colorGreen,styleLine);
Plot(Hl,"Hl",colorRed,styleLine);
Plot(Mh,"Mh",colorAqua,styleLine);
Plot(Ml,"Ml",colorOrange,styleLine);
PlotShapes(IIf(Buy , shapeUpArrow, shapeNone), colorLime, 0, L, -25);
PlotShapes(IIf(Sell, shapeDownArrow, shapeNone), colorRed, 0, H, -25);
PlotShapes(IIf(Short, shapeHollowDownArrow, shapeNone), colorRed, 0, H, -35);
PlotShapes(IIf(Cover , shapeHollowUpArrow, shapeNone), colorLime, 0, L, -35); |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
1. Если часовой клоуз пересек хай прошлой 5-той свечи. |
Ну с этим то проблем нет.
Цитата: |
2. Если сработал сигнал продажи на 15-ти минутном фрейме, но при этом сохранился сигнал часовой покупки и выполнилось условие покупки на 15-ти минутном фрейме. |
А вот тут косяки.
Сам вдумайся. Если сработала продажа на 15 мин., значит Clost ниже Ref(L, -5) и при этом выполнилось условие покупки на 15 мин., значит Close выше Ref(H, -5). Это как? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|