Скачать MetaTrader 5

Примеры: Как писать быстрые неперерисовывающиеся зигзаги

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MetaQuotes Software Corp.
Модератор
185381
MetaQuotes Software Corp.  

New article Как писать быстрые неперерисовывающиеся зигзаги has been published:

Предлагается достаточно универсальный подход к написанию индикаторов типа "зигзаг". Метод охватывает значительную часть уже существующих "зигзагов" и позволяет относительно просто создавать новые.

Для начала попробуем сформулировать общий подход к написанию произвольного индикатора. Итак:

- Функция start() любого индикатора (как впрочем, и советника) представляет из себя callback-функцию, то есть функцию, вызываемую для обработки конкретного события. А именно - для обработки тика.

- Целью написания индикатора, как правило, является расчёт одной или нескольких характеристик рынка. Вместе с необходимыми для расчёта вспомогательными величинами они образуют набор ключевых переменных данного индикатора. Определим состояние индикатора как набор значений этих ключевых переменных в конкретный момент времени. Опираясь на это определение, мы можем сформулировать следующие утверждения:

  • Рассчитывая на новом тике новые значения переменных, функция start() рассчитывает новое состояние индикатора.
  • Таким образом, фактически функция start() является оператором, переводящим индикатор из одного состояния в другое.

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

Author: Candid

MQL4 Comments
16319
MQL4 Comments  
Ну наконец то написали "правильный" зигзаг для МТ, без всяких там временных массивов и прочей лабуды. У меня схожие принципы в зигзаге, только UpZ не использую. Просто сравниваю последнюю вершину и предпоследнюю.
Idalgo
266
Idalgo  


Мне тоже очень понравилась статья! Спасибо автору.

Можно уточнить что значит параметр "Средняя задержка", выводимый в комментарии HZZ?

Candid
1630
Candid  
Idalgo:


Можно уточнить что значит параметр "Средняя задержка", выводимый в комментарии HZZ?

Средней задержкой было названо среднее число баров от момента появления вершины до момента её фиксации.
Rustem Bigeev
1045
Rustem Bigeev  

Вы писали:

Как было сказано выше, в этой статье нас интересуют зигзаги с переключением по пробою отстающего уровня. Что понимается под отстающим уровнем? Допустим мы хотим написать зигзаг, для которого фиксация вершины происходит при отходе цены от неё на H пунктов.

А как реализовать фиксацию последней точки при коррекции от нее на заданное число процентов предыдущего импульса? Например Есть нижняя точка + восходящий отрезок. И для того чтобы зафиксировать верхнюю точку мы ловим от нее коррекцию, скажем на 50% от восходящего отрезка.

Candid
1630
Candid  
BigeR:

А как реализовать фиксацию последней точки при коррекции от нее на заданное число процентов предыдущего импульса? Например Есть нижняя точка + восходящий отрезок. И для того чтобы зафиксировать верхнюю точку мы ловим от нее коррекцию, скажем на 50% от восходящего отрезка.

В любой момент времени, в зависимости от UpZ, текущий импульс или CurMax-TempMin или TempMax-CurMin. Делите пополам и прибавляете к TempMin или отнимаете от TempMax. Если я правильно понял вопрос, это и будет требуемый отстающий уровень.


P.S. Это вторая редакция ответа, в первой я недостаточно въехал в вопрос.

MQL4 Comments
16319
MQL4 Comments  
Картинка бы не помешала! :)
Candid
1630
Candid  
Картинку легко посмотреть в своём терминале :) . Любую из переменных состояния можно визуализировать добавив для неё в код отдельный индикаторный буфер.
MQL4 Comments
16319
MQL4 Comments  
Введем переменную bs. Как получить на ней значение -1, если сегмент вверх, соответственно получить значение 1, если сегмент вниз.
Candid
1630
Candid  
Luchiy:
Введем переменную bs. Как получить на ней значение -1, если сегмент вверх, соответственно получить значение 1, если сегмент вниз.

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