Как получить котировки на указанное время? - страница 3

 
R.Sergey:

Да я поставил изначально еще, 0 выдавало до наступления 01,05, но пару дней все ок, а потом iBarShift  всегда оттдает ноль и все. 

Не стал разбираться вернул опять как было iOpen(Symbol(),PERIOD_D1,0);  ((( но вопрос всеже остался открытым. Как мне правильно получить Price на 01:05 каждого дня.

Может вы не правильно меня поняли? Я имел ввиду вот так

      datetime some_time = StringToTime(TimeToString(TimeCurrent(), TIME_DATE)+" 01:05");      
      int shift;
      double myPrice;
      if(TimeCurrent() >= some_time)
       {
        shift = iBarShift(Symbol(), PERIOD_M5, some_time);
        myPrice = iOpen(Symbol(), PERIOD_M5, shift );
       }
А до наступления указанного времени return или другие действия...
 

Спасибо, в принципе это тоже самое условие что я поставил только я проверял позже уже на последующих дейсвтиях.

Попробовал Ваш вариант работает точно также как и мой. Но мне кажется тут дело не в коде, а в качестве котировок. 

Я вот начал внимательно просматривать те дни где shift = 0. И обратил внимание что нужного мне времени вообще почемуто нет


при этом на графике все бары отображаются и ордера открываются/закрываются. А что это за перепрыгивания не понятно.... вот и получается что в какието дни нормально все работает, а в какие-то портит всю статистику. И как проводить тестирование непонятно ((((

 
R.Sergey:

Спасибо, в принципе это тоже самое условие что я поставил только я проверял позже уже на последующих дейсвтиях.

Попробовал Ваш вариант работает точно также как и мой. Но мне кажется тут дело не в коде, а в качестве котировок. 

Я вот начал внимательно просматривать те дни где shift = 0. И обратил внимание что нужного мне времени вообще почемуто нет


при этом на графике все бары отображаются и ордера открываются/закрываются. А что это за перепрыгивания не понятно.... вот и получается что в какието дни нормально все работает, а в какие-то портит всю статистику. И как проводить тестирование непонятно ((((

На скрине вообще нет времени 1:05

Попробуйте такой код

datetime timeOld;

/********************Script program start function*******************/
void OnStart()
{
  datetime some_time = StringToTime(TimeToString(TimeCurrent(), TIME_DATE)+" 01:05");      
  if(newBar(PERIOD_M5, timeOld) && TimeCurrent() >= some_time)
   {
    Print(iOpen(Symbol(), PERIOD_M5, 0));
   }
       
}/*******************************************************************/

bool newBar(ENUM_TIMEFRAMES timeframe, datetime & tOld)
{
  MqlRates newBarRates[];
  if(CopyRates(_Symbol, timeframe, 0, 1, newBarRates) < 0)
   return(false);
    datetime tNew = newBarRates[0].time;
   bool ret = tOld != tNew;
   if(ret)
    tOld = tNew;
   return(ret);
}/********************************************************************/
Только не скриптом... Просто мне было проще прогнать в дебагере скрипт. Да и окно было уже открыто. )))))
Причина обращения: