Значения индикаторов на закачанных данных ArrayCopyRates() в тестере

 

Приветствую.

Делаю тестирование эксперта. Для его написания использовались индикаторы (их исходники и алгоритмы).

Вот в чём проблема. Для закачки данных разных периодов была использована функция ArrayCopyRates. На основе её данных о ценах закрытия arrClose[i][4] вычислялись значения индикаторов:

int number_copied = ArrayCopyRates(arrClose, NULL, PERIOD_H1);

Сами исходные индикаторы в оригинале вычисляются по ценам Close[i].

Так вот, в эксперте значения индикаторов на основе значений в arrClose[i][4] по результатам торгов в тестере зачастую другие, чем показывает индикатор на данную дату (в эксперте дата берётся как datetime currValue = arrClose[0][0];).

В чём подвох? Либо тестер так сильно расходится с реальностью, либо вариант: допустим, часовой график H1 для периода с 12:00 до 13:00 окончательно сформируется к 13:00, но в течении этого часа, в 12:05, 12:10, 12:15 и т.д. он уже выдаёт значение часового бара, но только оно всё время в течении этого часа меняется с учётом накопления истории цен.
Не может это повлиять на расчёт значений индикатора в эксперте?

 
arrClose[i][4] - - - arrClose[0][0] - - - опечатка?


Не может это повлиять на расчёт значений индикатора в эксперте?


Может, если используется 0-й бар
 
komposter писал (а):
arrClose[i][4] - - - arrClose[0][0] - - - опечатка?


Не может это повлиять на расчёт значений индикатора в эксперте?


Может, если используется 0-й бар

Вот-вот, и я об этом же. Текущий, т.е. 0-й бар постоянно пересчитывается, я верно понял, если он по времени ещё не завершён? Значит, чтобы не зависеть от его не окончательных, т.е. по сути "левых" значений, нужно смотреть текущее время относительно будущего времени закрытия бара, или есть ещё какие-то механизмы нейтрализации неточного 0-го бара?
 
arrClose[i][4] - это цена закрытия.
arrClose[0][0] - это дата/время закрытия.
 
Может эта тема поможет - https://www.mql5.com/ru/forum/50043

рисунок здесь https://c.mql5.com/mql4/forum/2005/12/zigtester.jpg
 
Если я верно понял, в этом топике есть два ключевых момента (цитаты):
1. Так дело в том, что ZigZag правит свою собственную историю (на Depth шагов назад), если новый экстремум того же типа (максимум после максимума, например) появился менее, чем в Deviation от старого?!
2. Верный вывод только в том, что индикаторы при бек-тесте рассчитываются также, как и в он-лайне.

Первый пункт является ключевым, а именно: в течении текущего периода 0-й бар постоянно пересчитывается, и гарантировать его окончательное и точное значение можно только после окончания бара. Значит, значения 0-го бара "внутри" него самого (интервала времени) нужно игнорировать для чистоты расчёта и совпадения значений в экспертах с индикаторами.
Я прав?
 
Значит, значения 0-го бара "внутри" него самого (интервала времени) нужно игнорировать для чистоты расчёта и совпадения значений в экспертах с индикаторами.
Я прав?

Да, чтобы значения во время тестирования совпадали со значениями на графике после тестирования, надо использовать 1-й бар.
 
Понятно...
Спасибо, будет учитывать это.
Причина обращения: