в 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. как раз для таких случаев.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_HIGH, 0) и
iMAOnArray(High, 0, 5, 0, MODE_SMA, 0) что то разное считает.
Ну и замечание маленькое - в хелпе про StringFind не написано что функция возвращает если не находит ничего (-1).