Как синхронизировать данные из разных фреймов?

 
Мне нужно создать советник для М15 графика, в котором используются М1 данные. Если я открываю М15 график Offline, его данные не обновляются автоматически. Простая проверка используя

Print(TimeToStr(iTime("EURUSD",PERIOD_M15,0))," ",TimeToStr(iTime("EURUSD",PERIOD_M1,0)));

выдаёт такой результат

2006.09.25 13:15:14 Indicator EURUSD,M15: 2006.08.24 23:45 2006.09.25 20:15

То есть, на открытом Offline М15 графике, нулевой бар соответсвует времени 2006.08.24 23:45, которое является последним временем на этом графике. Тот же нулевой бар соответствует 2006.09.25 20:15 в "подкачиваемых" М1 данных. В связи а этим, возникает такая проблема:

Во время тестирования экспертного советника на открытом Offline M15 графике, нулевой бар проходит через прошлые бары. Если в моём советнике используются функции типа iClose("EURUSD",PERIOD_M1,0), то они будут брать данные за самый последий бар в реальном времени, то есть из будущего по отношению к тестируемому нулевому бару на М15 графике. Подскажите пожалуйста как создать советник таким образом чтобы нулевой бар соответствовал одному и тому же времени в тестируемых М15 данных и подкачиваемых М1 данных? Я ещё плохо знаком со всеми возможностями МТ. Но если бы была такая функция как TimeToBar(Symbol,Frame,Bar), то я смог бы сделать такое:
M1BarShift=TimeToBar("EURUSD",PERIOD_M1,Time[0]);
и потом использовать iClose("EURUSD",PERIOD_M1,i+M1BarShift) в моих вычислениях.

Нашёл эту функцию: iBarShift(). Пока вопросов нет до тех пор пока не разберусь со своим кодом.
 
А почему Вы используете offline график?
 
А почему Вы используете offline график?



Мой индикатор очень медленный. Если я открою real-time график, то он будет постоянно обновлять самый последний бар даже если он ещё полностью не закончен. Мой компьютор будет всё время в напряге перерасчитывая мой индикатор для промежуточных значений последнего бара, не позволяя мне ничего сделать. Неплохо бы иметь команду внутри индикатора, которая указавыла что перерасчёт индикатора делается только по окончании самого последнего бара, то есть по истечении его фрейма.
 
Вы совершаете большую ошибку, запуская советника на оффлайн графике.
 
Я запускаю советник через Strategy Tester, который открывает график M15(Visual). Контроля я над тем какой график (real-time or offline) открывается не имею. Тестирование происходит на прошлых барах. После тестирования, чертю индикаторы на том же графике чтобы объяснить результаты. Я подозреваю что тестирование советника через Strategy Tester может дать ошибочные результаты если этот советник использует функции типа iClose(), которые берут данные из несинхронизированных котировок, т.е. заглядывают в будущее. А как ещё можно тестировать советник?
Причина обращения: