Помогите чайнику!!!

 

Не могу понять, почему позиция иногда закрывается, иногда нет в тестере в 23:59, как проаписано в коде!!! Подскажите плиз, что не так?

// Торговые критерии
  A=iClose(Symbol(), PERIOD_D1, 1);
  B=iOpen(Symbol(), PERIOD_D1, 1);

   if (A > B && Hour()==0 && Minute()==0 )       
     {                                         
      Opn_B=true;                                                            
     }
   if (B > A &&  Hour()==0 && Minute()==0)       
     {                                          
      Opn_S=true;                               
     }
    if(Hour()==23 && Minute()==59)
     {
      Cls_B=true;
      Cls_S=true;
     }  
//--------------------------------------------------------------- 6 --
   // Закрытие ордеров
   while(true)                                  // Цикл закрытия орд.
     {
      if (Tip==0 && Cls_B==true)                // Открыт ордер Buy..
        {                                       //и есть критерий закр
         Alert("Попытка закрыть Buy ",Ticket,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
         Ans=OrderClose(Ticket,Lot,Bid,2,Red);      // Закрытие Buy
         if (Ans==true)                         // Получилось :)
           {
            Alert ("Закрыт ордер Buy ",Ticket);
            break;                              // Выход из цикла закр
           }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }

      if (Tip==1 && Cls_S==true)                // Открыт ордер Sell..
        {                                       // и есть критерий закр
         Alert("Попытка закрыть Sell ",Ticket,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
         Ans=OrderClose(Ticket,Lot,Ask,2,Red);      // Закрытие Sell
         if (Ans==true)                         // Получилось :)
           {
            Alert ("Закрыт ордер Sell ",Ticket);
            break;                              // Выход из цикла закр
           }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }
      break;                                    // Выход из while
     }
 
Столкнулся с той же проблемой. Подозреваю, что тестер не всегда корректно обрабатывает бар в 23:59. По крайней мере, стоило мне расширить условие до нескольких минут вместо одной, все заработало. Теперь вот думаю, можно иначе: внутри start() - вечный цикл, тогда не будешь зависеть от тиков...
 
DrShumiloff писал (а) >>
Столкнулся с той же проблемой. Подозреваю, что тестер не всегда корректно обрабатывает бар в 23:59. По крайней мере, стоило мне расширить условие до нескольких минут вместо одной, все заработало. Теперь вот думаю, можно иначе: внутри start() - вечный цикл, тогда не будешь зависеть от тиков...

Поставил значение 23:45 стало чаще срабатывать! Просто, наверное, надо закачать архив минуток!

 
Я слышал, тестер пропускает бары, на которые приходится время "простаивания" котировок. То есть, если цена, например EURJPY, не изменяется в течении всей 23:59-ой минуты, то этот бар попросту пропускается
 
Похоже на то.
 
Чего проще, засеките в какой день был пропуск и посмотрите по истории, а был ли в этот момент бар. Тема уже сто раз пройденная на этом форуме. Меняйте код.
 
Даже если бар и был, в реале на торговую операцию уходит некоторое время, иногда очень даже продолжительное, а еще бывают реквоты. может есть смысл выставлять не такие строгие временные рамки ?
 
xrust писал (а) >>
Даже если бар и был, в реале на торговую операцию уходит некоторое время, иногда очень даже продолжительное, а еще бывают реквоты. может есть смысл выставлять не такие строгие временные рамки ?

Понял, меняю код! )

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