Помогаем советнику определить своё местоположение и принять правильное решение - страница 6

 
geratdc_: Само собой, если плотно работать с графиком, то что-то можно заработать наверняка

Опишите словами плотную работу - напишу робота. Грааль мне нужен

 
Дед пенсионер:

 Если их сейчас закрыть, то баланс и средства останутся без изменения.

Если признавать убытки, то советники будут топтаться на месте. Смысл заморачиваться тогда? Проще денежку в банк отнести и ждать окончания года, забрать свои 7% годовых. Нам от стратегии нужен результат - или профит или слив. Стандартная ситуация с просадкой, поглядим чем закончится.

 
Ответь на простой вопрос: что произойдет, если сейчас закрыть два верхних встречных ордера?
 

Примерно ноль будет. А дальше советник из-за пропажи двух ордеров из трёх начнёт доигрывать - откроет второй ордер на продажу через 600 пунктов от первого, при шаге в настройках 30 пунктов!, а потом третий ордер откроет на покупку скорее всего. Но такой селл - ордер вытягивать советник будет ооочень долго. Так что это не выгодно просто. Я включил тестовый VPS от MQL5 на 1 день. Терминал закрыл на ПК. Может хоть до завтрашнего вечера цена вернётся. Далее мониторить смысла нет, просадка длительная получилась. 


Я там ошибся в тактике, надо было два советника ставить на пипсовку контр-ордерами на EURUSD и GBPUSD с разными режимами входа в торговлю, а другие два на тех же парах на пипсовку 1 ордером и также с разными режимами входа. А у меня получилось дублирование 1 настройки на EURUSD аналогичной настройкой на GBPUSD и так далее, вот только графики у этих очень схожи, поэтому все 4 советника зависли и ждут возврата цены... если бы два советника были с торговлей 1 ордером то веселее бы было, так что на будущее учту этот момент.

 
Дед пенсионер:

Опишите словами плотную работу - напишу робота. Грааль мне нужен

https://www.mql5.com/ru/forum/246830/page5#comment_7594815

 

Всё, работа советников завершена. Пытался вручную оставшиеся ордера вытянуть в ноль и конъюнктурно поставил на продажу.

Не угадал))

Ждём слива...

 

В безубыток удалось вывести, ок. Сигнал остановлен.


ПРОБЛЕМА РАСШИРЕНИЯ СПРЕДА В НОЧНОЙ ТОРГОВЛЕ.

Вчера смотрел этот момент на демо-счёте, действительно спред увеличивался до 20 и более пунктов. Какую обработку этого момента посоветуете?

Есть такое предложение:

if(MarketInfo(_Symbol, MODE_SPREAD) > Step/2)) // где Step - шаг открытия встречного ордера

{

1. Советник закрывает все открытые позиции.

2. Советник делает паузу функцией Sleep() на... пусть будет 8 часов.

}

Что ещё можно здесь применить? Ведь при торговле контр-ордерами спред очень важен, так как в настройках пользователь может установить небольшой шаг в 10 пунктов. Это значит что при спреде в 20 пунктов ерунда получится, а не торговля.

 
//+------------------------------------------------------------------+
//| Проверка спреда                                                  |
//+------------------------------------------------------------------+    
   if(locktrade==0 && spread==0 && cn>=0 && FoxTrading==false && (false || PipsTrading==true) && MarketInfo(_Symbol,MODE_SPREAD)>MaxSpread && op>=0)
     {
      locktrade=1;
      spread=1;
      CloseAll();
      restart=TimeLocal()+10800; // Расчёт времени рестарта
      if(Language==RUS) {Print("MAGIC "+IntegerToString(Magic)+":"+" Высокий спред: Эксперт продолжит работу в "+TimeToString(restart,TIME_MINUTES));} else if(Language==DEU){Print("MAGIC "+IntegerToString(Magic)+":"+" HIGH SPREAD: EXPERT WIRD BEARBEITET "+TimeToString(restart,TIME_MINUTES));} else if(Language==ENG){Print("MAGIC "+IntegerToString(Magic)+":"+" HIGH SPREAD: EXPERT WILL CONTINUE WORK AT "+TimeToString(restart,TIME_MINUTES));} else if(Language==FRA){Print("MAGIC "+IntegerToString(Magic)+":"+" HIGH SPREAD: L’EXPERT CONTINUERA DE TRAVAILLER À "+TimeToString(restart,TIME_MINUTES));} else if(Language==ITA){Print("MAGIC "+IntegerToString(Magic)+":"+" ALTA DIFFUSIONE: L'ESPERTO CONTINUERÀ IL LAVORO A "+TimeToString(restart,TIME_MINUTES));} else if(Language==ESP){Print("MAGIC "+IntegerToString(Magic)+":"+" SPREAD ALTO: EL EXPERTO CONTINUARÁ TRABAJANDO EN "+TimeToString(restart,TIME_MINUTES));} else if(Language==SWA){Print("MAGIC "+IntegerToString(Magic)+":"+" UFUMU WA MAHIMU: MFIDUO WA KUJUMA KUTUMIA AT "+TimeToString(restart,TIME_MINUTES));} else if(Language==TUR){Print("MAGIC "+IntegerToString(Magic)+":"+" YÜKSEK YÜKSEKLİK: UZMAN ÇALIŞIYOR "+TimeToString(restart,TIME_MINUTES));}
      if(Language==RUS) {SendMail("BLACKJACK&HOOKERS","MAGIC "+IntegerToString(Magic)+":"+" Высокий спред: Эксперт продолжит работу в "+TimeToString(restart,TIME_MINUTES));} else if(Language==DEU){SendMail("BLACKJACK&HOOKERS","MAGIC "+IntegerToString(Magic)+":"+" HIGH SPREAD: EXPERT WIRD BEARBEITET "+TimeToString(restart,TIME_MINUTES));} else if(Language==ENG){SendMail("BLACKJACK&HOOKERS","MAGIC "+IntegerToString(Magic)+":"+" HIGH SPREAD: EXPERT WILL CONTINUE WORK AT "+TimeToString(restart,TIME_MINUTES));} else if(Language==FRA){SendMail("BLACKJACK&HOOKERS","MAGIC "+IntegerToString(Magic)+":"+" HIGH SPREAD: L’EXPERT CONTINUERA DE TRAVAILLER À "+TimeToString(restart,TIME_MINUTES));} else if(Language==ITA){SendMail("BLACKJACK&HOOKERS","MAGIC "+IntegerToString(Magic)+":"+" ALTA DIFFUSIONE: L'ESPERTO CONTINUERÀ IL LAVORO A "+TimeToString(restart,TIME_MINUTES));} else if(Language==ESP){SendMail("BLACKJACK&HOOKERS","MAGIC "+IntegerToString(Magic)+":"+" SPREAD ALTO: EL EXPERTO CONTINUARÁ TRABAJANDO EN "+TimeToString(restart,TIME_MINUTES));} else if(Language==SWA){SendMail("BLACKJACK&HOOKERS","MAGIC "+IntegerToString(Magic)+":"+" UFUMU WA MAHIMU: MFIDUO WA KUJUMA KUTUMIA AT "+TimeToString(restart,TIME_MINUTES));} else if(Language==TUR){SendMail("BLACKJACK&HOOKERS","MAGIC "+IntegerToString(Magic)+":"+" YÜKSEK YÜKSEKLİK: UZMAN ÇALIŞIYOR "+TimeToString(restart,TIME_MINUTES));}
     }
   else if(locktrade==1 && spread==1 && cn>=0 && FoxTrading==false && (false || PipsTrading==true) && MarketInfo(_Symbol,MODE_SPREAD)<MaxSpread && TimeLocal()>=restart)
     {
      locktrade=0;
      spread=0;
     }
   else if(locktrade==1 && spread==1 && cn>=0 && FoxTrading==false && (false || PipsTrading==true) && MarketInfo(_Symbol,MODE_SPREAD)>MaxSpread && TimeLocal()>=restart)
     {
      restart=TimeLocal()+10800;
     }

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


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