нужен скрипт, запускающий робота в нужное время и останавливающий в нужное с закрытием всех открытых позиций

 
всем здрасьте! нужен скрипт, запускающий робота в нужное время и останавливающий в нужное с закрытием всех открытых позиций
 
Viktor Bylkov: всем здрасьте! нужен скрипт, запускающий робота в нужное время и останавливающий в нужное с закрытием всех открытых позиций
А зачем делать для этого отдельный скрипт? Можно разместить в самом советнике логику запуска и остановки торговли в нужное время с закрытием всех открытых позиций.
 
input string               TradingHours="Trading Hours";
input int                  StartHour = 1;
input int                  StartMinute = 0;
input int                  EndHour = 18;
input int                  EndMinute = 0;
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 30.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    hb - часы времени начала торговли                                       |
//|    mb - минуты времени начала торговли                                     |
//|    he - часы времени окончания торговли                                    |
//|    me - минуты времени окончания торговли                                  |
//+----------------------------------------------------------------------------+
bool isTradeTimeInt(int hb=0, int mb=0, int he=0, int me=0) {
  datetime db, de;           // Время начала и окончания работы
  int      hc;               // Часы текущего времени торгового сервера

  db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+DoubleToString(hb,0)+":"+DoubleToString(mb,0));
  de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+DoubleToString(he,0)+":"+DoubleToString(me,0));
  hc=TimeHour(TimeCurrent());
  if (db>=de) {
    if (hc>=he) de+=24*60*60; else db-=24*60*60;
  }

  if (TimeCurrent()>=db && TimeCurrent()<=de) return(True);
  else return(False);
}
//END

Вставляете функцию контроля работы по времени в советник, в рабочее время функция возвращает True в не рабочее время False, Как вернула False - закрываете все позиции.

 

Это если необходимо оптимизировать время торговли в тестере стратегий. А если торговый интервал уже известен, то можно задать его непосредственно, примерно так:

  sinput string               TIME_                  = "ТОРГОВЫЙ ИНТЕРВАЛ (задается только время)"; // .
   input datetime             TIME_START             = D'06:00:00';  // Торговая сессия. Время начала-->
   input datetime             TIME_STOP              = D'20:00:00';  // Торговая сессия. Время окончания <--
 

блин, плохо у меня с этим, но попробую внедрить))))

да мартина по времени запускать, убыток резать по убытку 

 
может запакуешь мне отдельный скрипт, а? а то пока я разберусь, блин)))
 
Viktor Bylkov:
может запакуешь мне отдельный скрипт, а? а то пока я разберусь, блин)))

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

https://www.mql5.com/ru/job 

Фриланс-сервис на MQL5.com
Фриланс-сервис на MQL5.com
  • www.mql5.com
Заказы на разработку программ для трейдинга
 
а сделки как он закроет???
 
Viktor Bylkov:
а сделки как он закроет???

Примерно так, да быстрее бы сами разобрались, там не сложно.

//+------------------------------------------------------------------+
//|                 Закрыть все Buy ордера                           |
//+------------------------------------------------------------------+

bool CloseOrdersBuy()
{
   int cnt = OrdersTotal();
   for (int i=cnt-1; i>=0; i--)
      {
         if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;

         //Опционально
         if (OrderSymbol() != Symbol()) continue;

         //Опционально
         if (OrderMagicNumber() != Magic) continue;

         if (OrderType() == OP_BUY) bool CloseBuy = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),Slippage,CloseColor);

      }
return (True);
}
//END
 
//+------------------------------------------------------------------+
//|                 Закрыть все Sell ордера                          |
//+------------------------------------------------------------------+

bool CloseOrdersSell()
{
   int cnt = OrdersTotal();
   for (int i=cnt-1; i>=0; i--)
      {
         if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;

         //Опционально
         if (OrderSymbol() != Symbol()) continue;

         //Опционально
         if (OrderMagicNumber() != Magic) continue;

         if (OrderType() == OP_SELL) bool CloseSell = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),Slippage,CloseColor);

      }
return (True);
}
//END
 

просто этот код туда прописывать, да? извиняюсь за тупость...

сначала он закроет все позиции, потом остановит торговлю,  да?

Причина обращения: