Индикаторы: Heikin Ashi Lines

Heikin Ashi Lines:

Более простой способ отображения Heikin Ashi

Heikin Ashi Lines

Author: FMIC

   // Определить макросы последовательности цикла OnCalculate
      #ifdef __MQL4__   // для MQL4 (в виде рядов)
         #define  MOnCalcNext(  _index          ) ( _index--             )
         #define  MOnCalcBack(  _index, _offset ) ( _index + _offset     )
         #define  MOnCalcCheck( _index          ) ( _index >= 0          )
         #define  MOnCalcValid( _index          ) ( _index < rates_total )
         #define  MOnCalcStart \
            ( rates_total - ( prev_calculated < 1 ? 1 : prev_calculated ) )
      #else             // для MQL5 (в виде несерийных данных)
         #define  MOnCalcNext(  _index          ) ( _index++             )
         #define  MOnCalcBack(  _index, _offset ) ( _index - _offset     )
         #define  MOnCalcCheck( _index          ) ( _index < rates_total )
         #define  MOnCalcValid( _index          ) ( _index >= 0          )
         #define  MOnCalcStart \
            ( prev_calculated < 1 ? 0 : prev_calculated - 1 )
      #endif

Почему вы не используете ArraySetAsSeries()? Это позволило бы применять одни и те же макросы для обеих версий языка.

Я не критикую, просто мне интересно.

Наверное, вам так просто удобнее.

Невероятно
[Удален]
Vladislav Boyko #: Почему вы не используете ArraySetAsSeries()? Это позволило бы применять одни и те же макросы для обеих версий языка. Я не критикую, просто интересуюсь. Наверное, вам так просто удобнее.

Я предпочитаю использовать макросы, чтобы решение принималось на этапе компиляции, а не с помощью ArraySetAsSeries(), которая выполняется во время выполнения программы, ради некоторой дополнительной эффективности.

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

[Удален]
Roberto Jacobs #: Невероятно

Прошу прощения, но я не совсем понял смысл вашего сообщения. Не могли бы вы пояснить?

Fernando Carreiro #:

Я решил использовать макросы, чтобы решение принималось на этапе компиляции, а не с помощью ArraySetAsSeries(), которое выполняется во время выполнения, ради некоторой дополнительной эффективности.

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

Спасибо!

Спасибо, Фернандо, это невероятно полезно для новичка. Ещё спасибо за совет по поводу «Публичных проектов ». Я даже не знал, что такая функция существует. Почему-то я её пропустил. Надеюсь, я найду какую-нибудь документацию о том, как ею пользоваться.
[Удален]
Vladislav Boyko #: Спасибо!
linfo2 #: Спасибо , Фернандо, это невероятно полезно для новичка. Также спасибо за совет по поводу публичных проектов. Я даже не знал, что такая функция существует. Почему-то я пропустил эту функцию. Надеюсь, я найду какую-нибудь документацию о том, как ею пользоваться.

Не за что!

Я искал информацию о том, как производятся расчёты для индикатора Хэйкен-Аши, и в отношении максимумов там объясняется: «максимальное значение из значений максимума, цены открытия или цены закрытия текущего периода», а в отношении минимумов — «минимальное значение из значений минимума, цены открытия или цены закрытия текущего периода». Разве это не то же самое, что сказать, что максимумы и минимумы совпадают с целыми свечами? Если это так, то ваша идея отображать их в виде линий проста и гениальна: можно сразу увидеть тренд по индикатору Хэйкен-Аши, не отказываясь от обычных свечей.

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

[Удален]
@Daniel Eduardo San Martin #: Разве это не то же самое, что сказать, что максимумы и минимумы совпадают с ценами на свечах?

В большинстве случаев да, но когда цена открытия Хейкин-Аши (скользящее среднее) выходит за пределы максимума/минимума обычной свечи, она становится максимумом/минимумом Хейкин-Аши.

Fernando Carreiro #:

Прошу прощения, но я не совсем понял смысл вашего сообщения. Не могли бы вы пояснить?

Мне кажется, ваш код очень хорош и функционален. Я не скачивал файл mq5.
Я просто скопировал код для MT4, которым вы поделились, вставил его в MetaEditor MQL5 и сохранил как mq5 — и всё работает без проблем.