Как правильно получить данные от индикатора?

 

Пытаюсь запрограммировать советника.

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

FD1 = iCustom( Symbol(), mPeriod, "FDM Oscillator", 1, step );

Но! В окне данных (CtrlD или Вид>Окно данных) отображаются именно те данные что мне нужны. Причем данные можно посмотреть для

любого бара. При вычислении с помощью указанной функции, как я понимаю, рассчет происходит без использования истории значений самого индикатора, что значительно портит картину. Как получить данные в таком же виде, как они отображаются в "Окне данных"?

Немого примера:

Индикатор имеет 4 индекса. каждый может быть либо = 100, либо = 0. Предположим текущее значение индексов такое:

FD0 = 0;

FD1 = 0;

FD2 = 0;

FD3 = 100;

Далее происходит расчет и FD2 становится равным 100, при этом FD3 не обнуляется. На графике все видно красиво, окно данных дает:

FD0 = 0;

FD1 = 0;

FD2 = 100;

FD3 = 100;

Но

iCustom( Symbol(), mPeriod, "FDM Oscillator", 2, step ) = 100;

iCustom( Symbol(), mPeriod, "FDM Oscillator", 3, step ) = 0;

Сам индикатор значение индекса 3 не обнуляет и оно остается с предыдущего бара, а когда я использую iCustom( Symbol(), mPeriod, "FDM Oscillator", 2, step ), предыдущего бара нет и у меня FD3=0.

Возможно ли как-то получить правильные данные?

 
Ищите у себя. Окно данных совпадает с данными iCustom. Зрительно это может казаться не так из-за того, что некоторые индикаторы изменяют старые значения постфактум. С первых баров данные должны соответствовать истине на момент их извлечения. Дальше они могут "улучшиться", и возникнет расхождение.
Кроме того, если Вы исследуете индикатор, накинутый в тестере на визуальный график, то там происходит подсматривание в будущее и индикатору верить нельзя. А iCustom в будущее не заглядывает, надо верить ему.