суббота, 23 марта 2013 г.

Как сделать симметричный по шкале осциллятор

В этом посте я расскажу, как сделать симметричный осциллятор для МТ4.
На самом деле это очень просто и делается ценой одного буфера.

симметричная шкала у индикаторов для мт4

Покажу пример на базе индикатора MACD.
Есть два способа сделать его отображение относительно нуля -- очень простой и простой.

1. Задать одинаковые по модулю минимум и максимум у индикатора.

задание максимума и минимума для индикатора в мт4

Этот способ очень прост. Но минусов у такого способа немало.

Во-первых их надо постоянно задавать.
Во-вторых амплитуда MACD очень сильно разнится на разных таймфреймах и инструментах. Даже если задавать их программно, это неудобно, потому что амплитуда может сильно отличаться даже на одном инструменте на значительном куске истории. Это значит что гистограмма будет мелкой, что очень неудобно.
Поэтом лучше использовать второй способ.

2. Завести дополнительный буфер у индикатора, который будет симметрично отражать максимальное по модулю значение всех буферов, и сделать его невидимым (стиль DRAW_NONE)

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

Пример симметричного MACD можно скачать здесь

скачать

12 комментариев:

  1. Первый способ не подходит. Если задать одинаковый минимум и максимум у некоторых индикаторов, то один пропадает, так как он привязан к своим уровням.
    Второй способ я не понял. Как завести дополнительный буфер?

    ОтветитьУдалить
  2. Если индикатор завязан на уровни, он обычно имеет заданный минимум и максимум.
    Смысл второго способа -- написать новый индикатор, который будет копировать буферы базового индикатора + дополнительный буфер специально для выравнивания шкалы.

    ОтветитьУдалить
  3. Как этому научиться? У меня есть два осциллятора, которые я бы хотел трансформировать в один.

    ОтветитьУдалить
    Ответы
    1. На самом деле на графике два индикатора, совмещенных в одном окне, МТ это позволяет, а за счет совмещения нулевой оси их удобно просматривать при таком отображении.

      Удалить
  4. Возможно ли такое сделать на индикаторе ClusterX_Delta?

    ОтветитьУдалить
    Ответы
    1. Да.
      Вы можете попробовать это сделать сами на основе этой статьи :)

      Удалить
  5. Понравился индикатор. Могли бы вы сделать также с индикатором TVI. А то я сам не программист. Ссылка на индикатор https://yadi.sk/d/xtpHe4fpoefMf

    ОтветитьУдалить
    Ответы
    1. Поспрашивайте на форумах, думаю найдете человека, который вам все реализует, в крайнем случае есть фриланс на mql5.com

      Удалить
  6. Можете помимо шаблона выложить готовый пример с первого скрина?

    ОтветитьУдалить
    Ответы
    1. в смысле два индикатора в одном подокне?
      так там все просто
      - качаете симметричный MACD из статьи и компилируете
      - вешаете стохастик
      - MACD перетаскиваете мышкой в подокно стохастика

      Удалить
  7. Значит я не понял смысла доработки. Сперва решил, что можно заменить imacd на icustom, вписав второй индикатор и оба индикатора будут построены по одной нулевой линии Но тогда зачем вообще такая симметричность? Ведь шкалы всерно расходятся.

    ОтветитьУдалить
    Ответы
    1. для нескольких индикаторов в одном подокне логично совместить уровни вокруг которых они осциллируют. смысл в картинке в начале статьи - макд и стохастик вполне органично и удобно совмещаются в одном подокне

      Удалить