//+-----------------------------------------------------------------------+//| Gena.mq4 |//+-----------------------------------------------------------------------+// Описание ТС// 1. Открытие позиций происходит при пробитии High или Low предыдущего дня// SL ставиться на High или Low текущего дня, TP выставляется во внешних переменных, // единственная оговорка не более 1 позиции в день в переменной LastTradeTime // если в ней нет необходимост смело сносите /RomanS/// 2.// 3.// 4.// 5.// Внешние переменныеexterndouble TakeProfit =4000;externstring vybor_perioda ="1;5;15;30;60;240;1440";externint period =1440;externint Fractals_TF =240;//externdouble Lots =0.1;// Глобальные переменныеint LastTradeTime =0;// Время последней открытой сделки//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+// Поехали... :)int start(){//+----фсяки разны значения, индикаторы и т.д. и т.п. :)double SL=0,TP=0,
Spread=Ask-Bid,
StopLevel=Point*MarketInfo(Symbol(),MODE_STOPLEVEL);int per;switch(period){case1440: per=PERIOD_D1;break;case240: per=PERIOD_H4;break;case60: per=PERIOD_H1;break;case30: per=PERIOD_M30;break;case15: per=PERIOD_M15;break;case5: per=PERIOD_M5;break;case1: per=PERIOD_M1;break;default: per=0;break;}
HighD1=iHigh(Symbol(),per,1),
LowD1=iLow(Symbol(),per,1);//----Критерии открытия позицийbool Open_Bay=false,Open_Sell=false;if(Bid> HighD1+0.5*Point) Open_Bay =true;if(Bid< LowD1-0.5*Point) Open_Sell =true;//----Проверяем нужно ли торговать :)// Закрытие позиции// Модификация ордераint Ticket,cnt,Total=0;for(cnt=0;cnt<OrdersTotal();cnt++){OrderSelect(cnt,SELECT_BY_POS);if(OrderSymbol()==Symbol()){
Total++;if(OrderType()==OP_BUY)// long position is opened{
SL=LowerFractal();if(SL-0.5*Point>OrderStopLoss()&& SL-0.5*Point>OrderOpenPrice()&&Bid-SL>StopLevel+0.5*Point){OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0);return(0);}}//--------if(OrderType()==OP_SELL)// Short position is opened{
SL=UpperFractal();if(SL+0.5*Point<OrderStopLoss()&& SL+0.5*Point<OrderOpenPrice()&& SL-Ask>StopLevel+0.5*Point){OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0);return(0);}}}}//+----Открытие позицийint TradeTime=TimeDay(TimeCurrent());if(Total<1&& LastTradeTime!=TradeTime){if(Open_Bay){//SL = LowerFractal();
SL =iLow(NULL,PERIOD_D1,0);if(TakeProfit>0) TP =Ask+ TakeProfit*Point;if(Bid-SL<StopLevel-0.5*Point)return(0);// проверяем минимальный уровень стопов//Alert("Пробуем открыть Buy ",SYMBOL, " по ",ASK, SL, TP);
Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,20,SL,TP);if(Ticket >0){//Alert ("Открыт ордер Buy ",Ticket);
LastTradeTime=TradeTime;// задаем время сделки, чтобы сегодня больше не торговать }return(0);}//+----if(Open_Sell){//SL = UpperFractal()+Spread;
SL =iHigh(NULL,PERIOD_D1,0)+Spread;if(TakeProfit>0) TP =Bid- TakeProfit*Point;if(SL-Ask<StopLevel-0.5*Point)return(0);// проверяем минимальный уровень стопов
Ticket =OrderSend(Symbol(),OP_SELL,Lots,Bid,20,SL,TP);if(Ticket >0){//Alert ("Открыт ордер Sell ",Ticket);
LastTradeTime=TradeTime;// задаем время сделки, чтобы сегодня больше не торговать}}}return(0);}//+------------------------------------------------------------------+double LowerFractal(){for(int i=3;i<iBars(NULL,Fractals_TF)-3;i++){double Fractal=iFractals(NULL,Fractals_TF,MODE_LOWER,i);if(Fractal!=0.0)return(Fractal);}}//+-----double UpperFractal(){for(int i=3;i<iBars(NULL,Fractals_TF)-3;i++){double Fractal=iFractals(NULL,Fractals_TF,MODE_UPPER,i);if(Fractal!=0.0)return(Fractal);}}//+-----
- характер движения внутри пробойного диапазона, и настроения перед пробоем(что менее важно)
- общая тенденция, возможно на большем ТФ.
Касаемо последнего, попробуйте сплясать от Параболика, может поможет.
Написал... Результат оказался хуже изначальнго.... проф. фактор всего 1,31 после оптимизации :(
Думаю в данной системе более целесообразно использовать осцилляторы
//+-----------------------------------------------------------------------+//| Крокодил ГЕНА.mq4 |//| Крокодил ГЕНА |//+-----------------------------------------------------------------------+// Описание ТС// 1. Открытие позиций происходит при пробитии High или Low предыдущего дня// SL ставиться на High или Low текущего дня, TP выставляется во внешних переменных, // единственная оговорка не более 1 позиции в день в переменной LastTradeTime // если в ней нет необходимости смело сносите /RomanS/// 2. Добавил к условию открытия трендовый параболик + трал. стоп по нему же на М5. // Результат оказался хуже :( /RomanS/// 3.// 4.// 5.// Внешние переменныеexterndouble TakeProfit =900;externdouble SAR_steep =0.0005;externdouble Lot =1;externstring SYMBOL ="EURUSD";// Глобальные переменныеint LastTradeTime =0;// Время последней открытой сделки// Поехали... :)int start(){int Ticket;double BID,
ASK,
SL=0,
TP=0;bool Trade =true,
Open_Bay =false,
Open_Sell =false;// Проверяем можно ли торговатьif(Trade==true){// Критерии открытия позиций
ASK =MarketInfo(SYMBOL,10);
BID =MarketInfo(SYMBOL,9);if(BID >iHigh(SYMBOL,PERIOD_D1,1)&&iSAR(SYMBOL,PERIOD_M5,SAR_steep,0.2,0)<BID) Open_Bay =true;if(BID <iLow(SYMBOL,PERIOD_D1,1)&&iSAR(SYMBOL,PERIOD_M5,SAR_steep,0.2,0)>BID) Open_Sell =true;// Открытие позицийif(Open_Bay ==true&&OrdersTotal()==0&&TimeDay(TimeCurrent())!=LastTradeTime){RefreshRates();
SL =iLow(SYMBOL,PERIOD_D1,0);
TP = ASK + TakeProfit*Point;if((ASK-SL)/Point<MarketInfo(SYMBOL,14))return;// проверяем минимальный уровень стоповAlert("Пробуем открыть Buy ",SYMBOL," по ",ASK, SL, TP);
Ticket=OrderSend(SYMBOL,OP_BUY,Lot,ASK,20,SL,TP);if(Ticket >0){Alert("Открыт ордер Buy ",Ticket);
LastTradeTime=TimeDay(TimeCurrent());// задаем время сделки, чтобы сегодня больше не торговать return;}}if(Open_Sell ==true&&OrdersTotal()==0&&TimeDay(TimeCurrent())!=LastTradeTime){RefreshRates();
SL =iHigh(SYMBOL,PERIOD_D1,0);
TP = BID - TakeProfit*Point;if((SL-BID)/Point<MarketInfo(SYMBOL,14))return;// проверяем минимальный уровень стопов
Ticket =OrderSend(SYMBOL,OP_SELL,Lot,BID,20,SL,TP);if(Ticket >0){Alert("Открыт ордер Sell ",Ticket);
LastTradeTime=TimeDay(TimeCurrent());// задаем время сделки, чтобы сегодня больше не торговатьreturn;}return;}// Закрытие позиции// .......// Модификация ордераfor(int i=0; i<=OrdersTotal(); i++){if(OrderSelect(i,SELECT_BY_POS)==true){if(OrderSymbol()!=SYMBOL)continue;if(OrderType()==0){double TralStop =iSAR(SYMBOL,PERIOD_M5,SAR_steep,0.2,0);if(SL < TralStop){
SL=TralStop;bool Ans=OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0);if(Ans ==true){// Alert ("Ордер Bay ","EURUSD"," №",Ticket," модифицирован. Новый Stop Loss ", SL); break;}}}if(OrderType()==1){
TralStop =iSAR(SYMBOL,PERIOD_M5,SAR_steep,0.2,0);if(SL > TralStop){
SL=TralStop;if((SL-ASK)/Point<MarketInfo("EURUSD",14))break;
Ans=OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0);if(Ans ==true){// Alert ("Ордер Sell ","EURUSD"," №",Ticket," модифицирован. Новый Stop Loss ", SL); break;}}}}}}return;}
А вообще, я не пытаюсь тут написать супер систему... Причину по которой все это затеял описал в начале ветки.
Хотелось кое-что проверить, а именно. Главной моей целью является (не хотел сначала говорить но чую ветка потухнет) выяснить как система которую улучшаешь на историческом периоде (допустим последние пол года), будет вести себя на прошлых периодах. В начале я уже говорил что это система 50/50 в долгосрочке, т.е. вытянув систему в 2009г. в максимальную профитность, будет ли она лучше работать и в прошлом... Допустим мы ее выводим на уровень пр.ф. 2,0 или выше... станет ли она работать лучше к примеру с 2000г. ???
Я предпологаю (и только предпологаю!!!), что чем лучше она будет работать сегодня, тем хуже она отработает в долгосрочке. Т.е. сегодня мы дабиваемся макс. профита, а на истории это система уже не даст 1,0 а наверное упадет к 0,9
Но это только предположения... Я пока ни чего не пытаюсь доказать.... И честно говоря, надеюсь что я не прав.
Я если честно не понимаю, зачем пытаться понять как будет вести себя система в прошлом. Лучше уже в будущее смотреть. Рынок меняется, и это никуда не денешь. Даже если
Я предпологаю (и только предпологаю!!!), что чем лучше она будет работать сегодня, тем хуже она отработает в долгосрочке.
и так, то что с этого?
Лично моё предположение (и только предположение))), что никакой зависимости нет, а сказав (даже доказав) это для одной системы, та даже для тысячи систем, не факт, что это будет закономерно для абсолютно всех систем.
Есть такая хорошая поговорка - не надо искать счастья там, где его нет.
Лично моё предположение (и только предположение))), что никакой зависимости нет
Вот я и хочу убедиться в этом...
Взять советника, который на истории работает 50/50 накрутить его дополнительными индикаторами, осциляторами другими примочками. Протестить его на небольшом периоде (пол года) и посмотреть что получиться...
Большое спасибо Swan и gince за то что проявили интерес. А вы бы лучшеsayfuji предложили бы что-нить.... например как закрыть позицию не по т.п. может и толк был бы...
Просто открываемся на пробитие High/Low предыдущего дня с фиксированным т.профитом и со стопом на High/Low сегоднешнего дня. Почему именно так? Да потому что во-первых, такая система не использует ни одного индикатора...
можно открываться на дневках и потом поддягивать стоп по нижним фракталам меньшего ТФ
Поигрался)
добавил трейлинг по фракталам.
еще немного и грааль :D
Только наверное Fractals_TF должен именятся
Только наверное Fractals_TF должен именятся
думаю, корректно опираться на следующие вещи:
- характер движения внутри пробойного диапазона, и настроения перед пробоем(что менее важно)
- общая тенденция, возможно на большем ТФ.
Касаемо последнего, попробуйте сплясать от Параболика, может поможет.
Написал... Результат оказался хуже изначальнго.... проф. фактор всего 1,31 после оптимизации :(
Думаю в данной системе более целесообразно использовать осцилляторы
А вообще, я не пытаюсь тут написать супер систему... Причину по которой все это затеял описал в начале ветки.
Хотелось кое-что проверить, а именно. Главной моей целью является (не хотел сначала говорить но чую ветка потухнет) выяснить как система которую улучшаешь на историческом периоде (допустим последние пол года), будет вести себя на прошлых периодах. В начале я уже говорил что это система 50/50 в долгосрочке, т.е. вытянув систему в 2009г. в максимальную профитность, будет ли она лучше работать и в прошлом... Допустим мы ее выводим на уровень пр.ф. 2,0 или выше... станет ли она работать лучше к примеру с 2000г. ???
Я предпологаю (и только предпологаю!!!), что чем лучше она будет работать сегодня, тем хуже она отработает в долгосрочке. Т.е. сегодня мы дабиваемся макс. профита, а на истории это система уже не даст 1,0 а наверное упадет к 0,9
Но это только предположения... Я пока ни чего не пытаюсь доказать.... И честно говоря, надеюсь что я не прав.
Я если честно не понимаю, зачем пытаться понять как будет вести себя система в прошлом. Лучше уже в будущее смотреть. Рынок меняется, и это никуда не денешь. Даже если
Я предпологаю (и только предпологаю!!!), что чем лучше она будет работать сегодня, тем хуже она отработает в долгосрочке.
и так, то что с этого?
Лично моё предположение (и только предположение))), что никакой зависимости нет, а сказав (даже доказав) это для одной системы, та даже для тысячи систем, не факт, что это будет закономерно для абсолютно всех систем.
Есть такая хорошая поговорка - не надо искать счастья там, где его нет.
Лично моё предположение (и только предположение))), что никакой зависимости нет
Вот я и хочу убедиться в этом...
Взять советника, который на истории работает 50/50 накрутить его дополнительными индикаторами, осциляторами другими примочками. Протестить его на небольшом периоде (пол года) и посмотреть что получиться...
Большое спасибо Swan и gince за то что проявили интерес. А вы бы лучше sayfuji предложили бы что-нить.... например как закрыть позицию не по т.п. может и толк был бы...
Просто открываемся на пробитие High/Low предыдущего дня с фиксированным т.профитом и со стопом на High/Low сегоднешнего дня. Почему именно так? Да потому что во-первых, такая система не использует ни одного индикатора...
Моя идея 100% такая же)) только на H4 Результаты тестера..
Единственное... у меня направление выберается по предидущей свече, а стоп ставится по меньшему из двух - текущего/ предидущего хая/лоу..
Моя идея 100% такая же)) только на H4 Результаты тестера..
Единственное... у меня направление выберается по предидущей свече, а стоп ставится по меньшему из двух - текущего/ предидущего хая/лоу..
Отличная идея... стоит попробовать и от нее потанцевать...
По ссылке смотрел, период маловат.. не пробовал с 2000? может такая же проблема будет.... 50/50???