Максимальное смещение в буфере индикатора

 

Столкнулся с проблемой: когда пробую получить в советнике (в тестере стратегий) значение индикатора, к примеру iMA(NULL,0,10,0,MODE_EMA,PRICE_MEDIAN,4000) он возвращает ноль... Я считал, что индикатор рассчитывается для всей истории, по которой проводится тестирование. Но похоже, существует какой-то лимит на величину его буфера, причем существенно меньший, чем располагаемая история. Как мне получить значение скользящей средней, или другого индикатора с большим значением индекса в буфере, например, как выше, 4000 или 10000?

PS В настройках Метатрейдера установлено 2000000 баров в истории и столько же в окне, так что их более чем достаточно для вычислений.

 
ouch:

Столкнулся с проблемой: когда пробую получить в советнике (в тестере стратегий) значение индикатора, к примеру iMA(NULL,0,10,0,MODE_EMA,PRICE_MEDIAN,4000) он возвращает ноль... Я считал, что индикатор рассчитывается для всей истории, по которой проводится тестирование. Но похоже, существует какой-то лимит на величину его буфера, причем существенно меньший, чем располагаемая история. Как мне получить значение скользящей средней, или другого индикатора с большим значением индекса в буфере, например, как выше, 4000 или 10000?

PS В настройках Метатрейдера установлено 2000000 баров в истории и столько же в окне, так что их более чем достаточно для вычислений.

То что в настройках установлено 2млн не значит что они есть.
 
Есть. В тестере можно прогнать всю эту историю. Но советник не может получить доступ к данным индикаторов с большими индексами, то есть теми, которые находятся где-то далеко "левее" стартовой даты тестирования.
 

Если мне не изменяет память, в тестере доступно изначально 1000 баров текущего таймфрейма.

Плюс по мере прохождения уже пройденные бары.

Если нужно больше 1000 - начинайте тест раньше, а на каждом OnTick проверяйте количество доступных баров. Ничего не делать, пока их меньше, чем нужно.

 
Y.A.K._:

Если мне не изменяет память, в тестере доступно изначально 1000 баров текущего таймфрейма.

Плюс по мере прохождения уже пройденные бары.

Если нужно больше 1000 - начинайте тест раньше, а на каждом OnTick проверяйте количество доступных баров. Ничего не делать, пока их меньше, чем нужно.

Так и приходится делать, проверяю выход iMA(), что он больше нуля. Вот только пропускать нужно слишком много вначале, если требуется большой интервал.

Проблема еще в том, что глубина индекса является настраиваемым параметром. И может меняться в больших пределах. Вообще, компилятор должен иметь директиву настройки глубины буферов индикаторов.


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