Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
ArraySetAsSeries и там же хороший пример.
В MQL5 индикаторе элементы массивов (time[], open[],high[], low[], close[], tick_volume[], volume[] и spread[]), передаваемые в функцию OnCalculate(), имеют индексацию от начала массива к концу. Вот как это выглядит на примере графика:
Рис. 6. Индексация элементов массива, если массив не таймсерия
То есть в массиве, не являющемся таймсерией, самый правый элемент будет иметь максимальный индекс. Это нужно учитывать при математических вычислениях.
И ещё: вместо цены или объёма принтуйте значения из массива time[] - так сразу будет понятно. Также по коду - научитесь оформлять индикатор - потому что приведённый Вами огрызок никак не тянет на название индикатора. Ваш код даже MetaEditor по ошибке суёт в эксперты.
Вот образец:
Очень странно. Я пытаюсь донести то что мне кажется можно улучшить, но это воспринимается как тролинг или типа я специально ищу ошибки!
Да, ищу, но не для того чтобы насолить а чтобы улучшить.
Больше не буду тревожить. Пойду на англ форум. Спасибо за внимание.
Вывод. Сегодня переписывал индикатор с mql4 на mql5. Крайне не удобный для программирования язык.
P.S. Индексировать таймсерии и пользовательские буфера задом наперёд это ошибка 100%. И инициализировать пользовательские буфера 0 тоже.
P.S2 Для тех кому только предстоит помучатся. Данные баров получать так.
Очень странно. Я пытаюсь донести то что мне кажется можно улучшить, но это воспринимается как тролинг или типа я специально ищу ошибки!
Да, ищу, но не для того чтобы насолить а чтобы улучшить.
Больше не буду тревожить. Пойду на англ форум. Спасибо за внимание.
Вывод. Сегодня переписывал индикатор с mql4 на mql5. Крайне не удобный для программирования язык.
P.S. Индексировать таймсерии и пользовательские буфера задом наперёд это ошибка 100%. И инициализировать пользовательские буфера 0 тоже.
P.S2 Для тех кому только предстоит помучатся. Данные баров получать так.
Так это был скрытый вопрос про направление массива, а не про ошибку выдачи неправильного результата.
Тогда подскажу, что уже больше двух лет в MetaTrader 4 все штатные индикаторы используют формат OnCalculate от MetaTrader 5.
Вот для сравнения два описания:
То есть, давно уже индикаторы близко совместимы в обоих языках, включая одинаковые направления массивов в вызове OnCalculate(...). Мы специально с выпуском 600 билда максимально свели вместе языки, включая идеологию индикаторов.
Никакого требования менять направление массива нет - используйте любой режим, как вам захочется в обоих платформах. Если вам нравится использовать старый режим перевернутого серийного массива, то просто вызовите ArraySetAsSeries (это очень быстрый вызов, не требующий никаких ресурсов) для массива и работайте. Но лучше использовать прямой метод индексирования - он меньше запутывает.
Не вижу никакого повода, чтобы назвать это ошибкой.
eevviill:
Больше не буду тревожить. Пойду на англ форум. Спасибо за внимание.
Вывод. Сегодня переписывал индикатор с mql4 на mql5. Крайне не удобный для программирования язык.
значит так неправильно пишите.
Уже давно можно писать один код для двух платформ, используя макрос __MQL5__, __MQL4__. И индикаторы и скрипты.
Стремитесь к универсальным алгоритмам для обеих платформ.
MQL5 удобен в равной мере как и MQL4. Просто есть некоторые специфики у каждого.