Свечной индикатор тренда - посоветуйте как быть? - страница 2

 
 
   if (cn==0 && PriceLowMA_Buy==true && CorrectionTradeEntry==false)
   { 
      if (Ask<maprice && maprice-Ask>=Value*Point)
         if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue)<0)
               Print("Не удалось открыть ордер на покупку");
               SendMail("EA BJH", "Не удалось открыть ордер на покупку"); 

      if (Bid>maprice && Bid-maprice>=Value*Point)
         if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red)<0)
               Print("Не удалось открыть ордер на продажу");
               SendMail("EA BJH", "Не удалось открыть ордер на продажу");     
   }
   else if (cn==0 && PriceLowMA_Buy==true && CorrectionTradeEntry==true && MaPeriod>=40)
   { 
      if (Ask<maprice && maprice-Ask>=Value*Point && iClose(Symbol(),0,5)<iClose(Symbol(),0,1)&& iClose(Symbol(),0,1)<Ask)
         if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue)<0)
               Print("Не удалось открыть ордер на покупку");
               SendMail("EA BJH", "Не удалось открыть ордер на покупку");

      if (Bid>maprice && Bid-maprice>=Value*Point && iClose(Symbol(),0,5)>iClose(Symbol(),0,1) && iClose(Symbol(),0,1)>Bid)
         if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red)<0)
               Print("Не удалось открыть ордер на продажу");
               SendMail("EA BJH", "Не удалось открыть ордер на продажу");
   }
   else if (cn==0 && PriceLowMA_Buy==true && CorrectionTradeEntry==true && MaPeriod>=30 && MaPeriod<40)
   { 
      if (Ask<maprice && maprice-Ask>=Value*Point && iClose(Symbol(),0,4)<iClose(Symbol(),0,1)&& iClose(Symbol(),0,1)<Ask)
         if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue)<0)
               Print("Не удалось открыть ордер на покупку");
               SendMail("EA BJH", "Не удалось открыть ордер на покупку");

      if (Bid>maprice && Bid-maprice>=Value*Point && iClose(Symbol(),0,4)>iClose(Symbol(),0,1) && iClose(Symbol(),0,1)>Bid)
         if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red)<0)
               Print("Не удалось открыть ордер на продажу");
               SendMail("EA BJH", "Не удалось открыть ордер на продажу");
   }
   else if (cn==0 && PriceLowMA_Buy==true && CorrectionTradeEntry==true && MaPeriod>=20 && MaPeriod<30)
   { 
      if (Ask<maprice && maprice-Ask>=Value*Point && iClose(Symbol(),0,3)<iClose(Symbol(),0,1)&& iClose(Symbol(),0,1)<Ask)
         if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue)<0)
               Print("Не удалось открыть ордер на покупку");
               SendMail("EA BJH", "Не удалось открыть ордер на покупку");

      if (Bid>maprice && Bid-maprice>=Value*Point && iClose(Symbol(),0,3)>iClose(Symbol(),0,1) && iClose(Symbol(),0,1)>Bid)
         if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red)<0)
               Print("Не удалось открыть ордер на продажу");
               SendMail("EA BJH", "Не удалось открыть ордер на продажу");
   }
   else if (cn==0 && PriceLowMA_Buy==true && CorrectionTradeEntry==true && MaPeriod>=10 && MaPeriod<20)
   { 
      if (Ask<maprice && maprice-Ask>=Value*Point && iClose(Symbol(),0,2)<iClose(Symbol(),0,1)&& iClose(Symbol(),0,1)<Ask)
         if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue)<0)
               Print("Не удалось открыть ордер на покупку");
               SendMail("EA BJH", "Не удалось открыть ордер на покупку");

      if (Bid>maprice && Bid-maprice>=Value*Point && iClose(Symbol(),0,2)>iClose(Symbol(),0,1) && iClose(Symbol(),0,1)>Bid)
         if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red)<0)
               Print("Не удалось открыть ордер на продажу");
               SendMail("EA BJH", "Не удалось открыть ордер на продажу");
   }
   else if (cn==0 && PriceLowMA_Buy==true && CorrectionTradeEntry==true && MaPeriod<10)
   { 
      if (Ask<maprice && maprice-Ask>=Value*Point)
         if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue)<0)
               Print("Не удалось открыть ордер на покупку");
               SendMail("EA BJH", "Не удалось открыть ордер на покупку");

      if (Bid>maprice && Bid-maprice>=Value*Point)
         if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red)<0)
               Print("Не удалось открыть ордер на продажу");
               SendMail("EA BJH", "Не удалось открыть ордер на продажу");
   }
   else if (cn==0 && PriceLowMA_Buy==false && CorrectionTradeEntry==false)
   { 
      if (Ask>maprice && Ask-maprice<=Value*Point)
         if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue)<0)
               Print("Не удалось открыть ордер на покупку");
               SendMail("EA BJH", "Не удалось открыть ордер на покупку");

      if (Bid<maprice && maprice-Bid<=Value*Point)
         if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red)<0)
               Print("Не удалось открыть ордер на продажу");
               SendMail("EA BJH", "Не удалось открыть ордер на продажу");
   }
   else if (cn==0 && PriceLowMA_Buy==false && CorrectionTradeEntry==true && MaPeriod>=40)
   { 
      if (Ask>maprice && Ask-maprice<=Value*Point && iClose(Symbol(),0,5)<iClose(Symbol(),0,1) && iClose(Symbol(),0,1)<Ask)
         if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue)<0)
               Print("Не удалось открыть ордер на покупку");
               SendMail("EA BJH", "Не удалось открыть ордер на покупку");

      if (Bid<maprice && maprice-Bid<=Value*Point && iClose(Symbol(),0,5)>iClose(Symbol(),0,1) && iClose(Symbol(),0,1)>Bid)
         if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red)<0)
               Print("Не удалось открыть ордер на продажу");
               SendMail("EA BJH", "Не удалось открыть ордер на продажу");
   }
   else if (cn==0 && PriceLowMA_Buy==false && CorrectionTradeEntry==true && MaPeriod>=30 && MaPeriod<40)
   { 
      if (Ask>maprice && Ask-maprice<=Value*Point && iClose(Symbol(),0,4)<iClose(Symbol(),0,1) && iClose(Symbol(),0,1)<Ask)
         if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue)<0)
               Print("Не удалось открыть ордер на покупку");
               SendMail("EA BJH", "Не удалось открыть ордер на покупку");

      if (Bid<maprice && maprice-Bid<=Value*Point && iClose(Symbol(),0,4)>iClose(Symbol(),0,1) && iClose(Symbol(),0,1)>Bid)
         if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red)<0)
               Print("Не удалось открыть ордер на продажу");
               SendMail("EA BJH", "Не удалось открыть ордер на продажу");
   }
   else if (cn==0 && PriceLowMA_Buy==false && CorrectionTradeEntry==true && MaPeriod>=20 && MaPeriod<30)
   { 
      if (Ask>maprice && Ask-maprice<=Value*Point && iClose(Symbol(),0,3)<iClose(Symbol(),0,1) && iClose(Symbol(),0,1)<Ask)
         if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue)<0)
               Print("Не удалось открыть ордер на покупку");
               SendMail("EA BJH", "Не удалось открыть ордер на покупку");

      if (Bid<maprice && maprice-Bid<=Value*Point && iClose(Symbol(),0,3)>iClose(Symbol(),0,1) && iClose(Symbol(),0,1)>Bid)
         if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red)<0)
               Print("Не удалось открыть ордер на продажу");
               SendMail("EA BJH", "Не удалось открыть ордер на продажу");
   }
   else if (cn==0 && PriceLowMA_Buy==false && CorrectionTradeEntry==true && MaPeriod>=10 && MaPeriod<20)
   { 
      if (Ask>maprice && Ask-maprice<=Value*Point && iClose(Symbol(),0,2)<iClose(Symbol(),0,1) && iClose(Symbol(),0,1)<Ask)
         if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue)<0)
               Print("Не удалось открыть ордер на покупку");
               SendMail("EA BJH", "Не удалось открыть ордер на покупку");

      if (Bid<maprice && maprice-Bid<=Value*Point && iClose(Symbol(),0,2)>iClose(Symbol(),0,1) && iClose(Symbol(),0,1)>Bid)
         if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red)<0)
               Print("Не удалось открыть ордер на продажу");
               SendMail("EA BJH", "Не удалось открыть ордер на продажу");
   }
   else if (cn==0 && PriceLowMA_Buy==false && CorrectionTradeEntry==true && MaPeriod<10)
   { 
      if (Ask>maprice && Ask-maprice<=Value*Point)
         if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue)<0)
               Print("Не удалось открыть ордер на покупку");
               SendMail("EA BJH", "Не удалось открыть ордер на покупку");

      if (Bid<maprice && maprice-Bid<=Value*Point)
         if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red)<0)
               Print("Не удалось открыть ордер на продажу");
               SendMail("EA BJH", "Не удалось открыть ордер на продажу");
   }

Вот такой блок теперь входа в торговлю. Кстати я ошибки здесь исправил, а где то дополнил немного (см. жёлтый цвет). Кто загружал советника - перезагрузите через 10 минут после времени выхода комментария. Ещё раз спасибо, нашли сразу две ошибки!!! Есть программист который помогает оптимизировать код, но я ещё не успел получить комментарии просто от него.
 

Ну вроде работает - правда я на рабочих настройках проверил и на режиме торговли на волатильности.

нет коррекции тест№1

с коррекцией тест№1

нет коррекции тест№2

с коррекцией тест№2


Два теста на EURUSD с 19.01.2017 по 21.05.2017 на режиме торговли по волатильности (PriceLowMA_Buy=true;)

Здесь видно что за счёт осторожности (ожидания советником "корректного" входа) совершено меньше сделок. Ну естественно, время то не ждёт! Думаю коррекция более убедительна при режиме PriceLowMA_Buy=false; а также при одно-ордерной торговле. Здесь при таком изначально выгодном режиме торговли по волатильности коррекция наоборот уменьшила прибыль. Ну хоть слива нет, спасибо и на том))) А одно-ордерная система торговли тоже есть в советнике. Тестируйте, пишите если что. Спасибо за помощь. Советник обновлён.

 
geratdc:
Вот такой блок теперь входа в торговлю. Кстати я ошибки здесь исправил, а где то дополнил немного (см. жёлтый цвет). Кто загружал советника - перезагрузите через 10 минут после времени выхода комментария. Ещё раз спасибо, нашли сразу две ошибки!!! Есть программист который помогает оптимизировать код, но я ещё не успел получить комментарии просто от него.
А почему вы используете функцию iClose(Symbol(),0,5)? Разве в вашей ситуации не проще использавать Close[5]? Вы же читаете текущую пару а не какую-нибудь связаную...
 
Maksim Neimerik:
А почему вы используете функцию iClose(Symbol(),0,5)? Разве в вашей ситуации не проще использовать Close[5]? Вы же читаете текущую пару а не какую-нибудь связанную...


Приветствую, объясните пожалуйста что за массив? Как он работает? Может поэтому я это не применял - по незнанию просто. Там видите я вчера ошибки исправил - пришлось условие выставлять по поводу MaPeriod - когда мапериод = 2 то некорректно работал советник, точнее советник не работал))). Сегодня устранял недочёт.

Если у вас с учётом новой информации идея по поводу массива в силе - сделайте пожалуйста на досуге и прикрепите сюда вашу версию решения коррекции входа с Moving Average. Посмотрим, потестим и пойдёт в советник. Вы можете загрузить всё по ссылке  - там инструкция и настройки по тестам - не факт что у вас заработают так как при смене периодов котировок советник по старым настройкам спотыкаться начинает. В июне меня не будет, но как-только так сразу загляну. Успехов,


https://yadi.sk/d/MyYzRSja3JQVWK

BLACKJACK&HOOKERS.rar
BLACKJACK&HOOKERS.rar
  • yadi.sk
Посмотреть и скачать с Яндекс.Диска