Ошибка работы функции iOpen без "следов" в Журнале

 

Прошу помочь.

Работаю с MQL4 уже давно, написал кучу Советников, скриптов, поэтому простых ошибок не допускаю.

На очередном Советнике, который торгует одновременно на двух счетах (Демо и Реал) у брокера GlobalFx, функция iOpen() иногда бессистемно на Реале в режиме Онлайн выдает цену с предыдущих баров, причем на разных Тайм Фремах. На Демо счете в Онлайне или в режиме тестирования Советника на исторических данных подобная ошибка не проявляется ВООБЩЕ.

Мне нужно ВСЕГДА получать данные на НУЛЕВОМ баре на периоде D1 и H1 .

Хотел "поймать" причину в мелочах, вытаскивая пошагово данные во время работы Советника в Онлайне через функцию Print(), но не удается.

Конкретные факты.

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

Советник запущен одновременно с открытием Терминала МТ4.

В первый день (07.11.2013) функция iOpen(EURUSD,PERIOD_D1,0) выдала правильную цену 1,3515. В этот день при последующих вызовах функции iOpen(EURUSD,PERIOD_D1,0) ответ был правильным и всегда 1,3515.

Терминал не выключался и Советник находился в режиме работы и на второй день (08.11.2013).

В этот день при первом обращении к функции iOpen(EURUSD,PERIOD_D1,0) был получен снова результат 1,3515, несмотря на то, что это уже предыдущий бар, т.е. такая цена должна была быть получена при запросе iOpen(EURUSD,PERIOD_D1,1). Работу Советника не прерывал и при приходе очередного тика, Советник при обращении к функции iOpen(EURUSD,PERIOD_D1,0) выдал правильную цену уже текущего нулевого бара 1,3413.

Никаких ошибок, которые MQL4 выводит в Журнал, нет. На вкладке ЭКСПЕРТОВ тоже нет записей об ошибках.

Прошу помочь с этой ошибкой.

 

не поленись выдать iTime вместе с iOpen.

узнаешь время бара с которого пришла инфа. а дальше контролируй его

 
sergeev:

не поленись выдать iTime вместе с iOpen.

узнаешь время бара с которого пришла инфа. а дальше контролируй его


Спасибо большое. Это хорошая идея. Попробую, но уверен, что это исключит ошибку.