iMAOnArray

 
Как переписать iMA в iMAOnArray?

iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_HIGH, 0) и
iMAOnArray(High, 0, 5, 0, MODE_SMA, 0) что то разное считает.

Ну и замечание маленькое - в хелпе про StringFind не написано что функция возвращает если не находит ничего (-1).
 
в iMAOnArray нельзя передавать таймсерию, для этого есть штатный iMA. посмотрите в логи эксперта, там должно быть сообщение "series array cannot be used for iMAOnArray indicator". и GetLastError ошибку вернёт
 
А вот такой фрагмент эксперта:
double Prices[30];  int i;
for (i = 0; i < 30; i++)  Prices[i] = High[i];
Comment ("iMA: ", iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_HIGH, 0),
         "\niMAOnArray: ", iMAOnArray(Prices, 0, 5, 0, MODE_SMA, 0));


тоже показывает разные значения.

 
Сдается мне, что Вы конструкцией Prices[i] = High[i]; перекопировали буфер в обратной последовательности?
 
Сдается мне, что Вы конструкцией Prices[i] = High[i]; перекопировали буфер в обратной последовательности?

Ну в какой был, в такой и скопировал. :) А надо писать Prices[29-i] = High[i];? Так вроде бы все правильно расчитывает. Надо бы в хелпе заметку сделать.
 
в хелпе описана функция SetAsSeries. как раз для таких случаев.