вторник, 28 июня 2011 г.

Индикатор Index


Индекс на основе среднего геометрического. Показывает отношение инструмента ко всем инструментам некоторого набора. Можно комбинировать несколько индексов и кроссов через операции умножения и деления.

Формула расчёта индекса

[math]Index(C)=(\prod\limits^{N}_{i=1}{C/C_i})^\frac{1}{N}[/math]

, где:
  • [m]C[/m] - валюта, для которой ищется индекс
  • [m]C_i[/m] - валюты набора (CalcCurrs), включая [m]C[/m]
  • [m]C/Ci[/m] - котировка кросса
  • [m]N[/m] - количество валют в наборе, включая [m]C[/m]
В индексе все кроссы рассчитываются через базовую валюту. Например, [m]EUR/CHF=EUR/USD\cdot USD/CHF[/m] при базовой валюте USD. Это снижает требования к истории котировок (достаточно всех кроссов валют из набора "Index calculation currency set" и базовой валюты), а также дает возможность получить больше данных, так как для базовой валюты (в случае USD) у большинства брокеров больше исторических данных.

При расчете средней (MA period > 1) вместо расчета средней по индексу рассчитывается индекс по средним. Такая подмена дает достаточно хорошую точность, при этом упрощая расчеты.

Вместо валют могут быть любые другие инструменты.

Основные свойства индекса



На картинке продемонстрированы два свойства индексов:
  • обратимость (отношение индексов двух валют равно их кроссу)
  • произведение всех индексов набора равно 1

Использование формулы

В формуле индикатора можно совмещать сразу несколько индексов или кроссов. Например, может быть интересно посмотреть совокупное движение нескольких инструментов и/или индексов.



Если взять зацикленную формулу (например, EURUSD*USDCHF/EURCHF), то получится горизонтальная прямая с небольшими выбросами. Эти выбросы появляются за счет небольшого (обычно в пределах спреда) расхождения котировок, а также из-за усредненных формул используемой цены (Median, Typical, Weighted), либо предельных (High, Low), время достижения которых может сильно не совпадать у разных инструментов для одного и того же бара.

История котировок

Если вы постоянно не контроллируете наличие котировок в вашем терминале, при использовании индикатора рекомендуется держать открытыми также графики всех кроссов валют из набора "Index calculation currency set" с USD того же таймфрейма.

Параметры

С версии 7 для MT4 и версии 5 для MT5 произошли существенные изменения в наборе параметров. Также они стали одинаковыми по названию и назначению.

Параметр Описание
Formula (* and / only) Формула. Допускаются символы из обзора рынка, индексы и операции между ними - умножение и деление. Трехбуквенный символ распознается как индекс. Чтобы явно указать индекс, нужно поставить перед символом знак "!".

Специальные значения:
  • [0] - кросс графика
  • [1] - индекс первого символа кросса графика (EUR для EURUSD)
  • [2] - индекс второго символа кросса графика (USD для EURUSD)
Примеры:
  • EURUSD*EURCHF - произведение двух кроссов
  • /eurusd - реверс EURUSD
  • /USD - реверс индекса USD
  • /usd/eur - произведение реверсов индексов
  • xauusd*usd - произведение кросса и индекса
  • !#AA*!#AAPL - произведение индексов двух CFD
  • [0]*[1] на графике EURUSD будет равнозначно EURUSD*USD
Power Степень, в которую возводится результат вычисления формулы.
Scale Масштаб. На это число умножается результат. Может быть полезным, когда результат очень мал или велик, так как точность отображения индикаторов в терминале ограничена четырьмя знаками после запятой и максимальными значениями для представления чисел.
Applied price Используемая цена. Стандартные значения от 0 до 6 (от Close до Weighted). Этот тип цены будет использован как для доступа к кроссам, так и для вычисления индексов.
MA period Период усреднения, 0 - отключено.
Diff MA period Период средней, которая будет вычтена из результата, 0 - отключено.
MA method Метод усреднения, стандартные значения: 0 - SMA, 1 - EMA, 2 - SMMA, 3 - LWMA.
Index calculation currency set Инструменты для расчета индексов (без указания кросса). Все индексы также будут добавлены в этот список автоматически. Этот набор будет использован для расчета всех индексов в формуле.

Примеры:
  • AUD,CAD,CHF,EUR,GBP,JPY,NZD,USD - набор по умолчанию
  • #AA, #AAPL, #AIG, #AMZN - небольшой набор из CFD на акции
Logarithmic scale Отображать в логарифмическом масштабе. Дополнительно производится умножение на 100 для грубой оценки процентного изменения.
Bar count limit Ограничение на количество отображаемых и рассчитываемых баров.

См. также

Загрузка

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

  1. Спасибо за индикатор и за проделанную работу!
    Подскажите пожалуйста, можно ли в одном индикаторе настроить отображение сразу 8 индексов?
    Если да, то как это сделать?
    За ответ, заранее благодарю!

    ОтветитьУдалить
    Ответы
    1. Так как диапазон значений индексов может быть любой, то одним индикатором без дополнительных преобразований (типа вычитания средней или вычисления стандартной оценки) такого не добиться. Поэтому можно просто положить несколько индикаторов в одно окно средствами самого MetaTrader, перетащив мышкой второй и последующие индикаторы из навигатора в окно первого индикатора. При установке параметров не забудьте сразу сменить цвет линии.

      Удалить
    2. Александр, пожалуйста, уберите копии моих статей с этого сайта на mql5.com. Если вы хотите разместить там код индикатора, сделайте собственное описание. Хотя я разрешаю делать с кодом почти всё, что угодно, копирование материалов с сайта это не включает.

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

      Удалить
  2. Приношу свои извинения, за размещение без спроса! Копии убраны.
    Вопрос-просьба: можете ли в индикатор добавить функцию автоматического определения суффиксов и префиксов у валютных пар?
    Например, fortfs, exness, roboforex, используют такие добавления.

    ОтветитьУдалить
    Ответы
    1. Спасибо за оперативность.

      По вопросу. Я отказался от подобных определителей в своих индикаторах, и вряд ли буду снова делать. С подобными брокерами проблемы с индикаторами всплывают постоянно (по личному опыту), проще сменить.

      Но если очень надо - код открыт, меняйте сами, заказывайте другим. Подсказка: смотреть надо на заполнение переменных Index::_sym и Index::_syms[], которая происходит через функцию поиска символа Index::findSymbol(). В версии 5.1.

      Удалить
  3. Добрый день, как в прежних, так и в этой версии после перезапуска терминала пропадают начерченные линии (самые обычные терминальные лучи) в МТ4 (на мт5 не пробовал). Применял вставляя формулу деления одной пары на другую (например gpbusd/eurusd)
    Возможно ли исправить данный баг?

    спс.

    ОтветитьУдалить
    Ответы
    1. Проверил, такой баг у меня не проявляется. Индикатор индекса с графическими объектами не работает вообще. Вероятно, какой-то другой индикатор неправильно убирает за собой свои линии. Определите методом исключения.

      Удалить
    2. и снова привет.
      Для наглядности заинсталил новый терминал и закинул только Ваш индикатор. Во избежание недопониманй снял экран на видео http://youtu.be/iXFBIG5K3F4.
      На сколько я понимаю изчезают только символы, которым задать отображение в определенном временном периоде.
      На всякий случай проверил на терминале другого брокера - все тоже самое.

      в индикаторе не менял абсолютно ничего.

      Удалить
    3. Спасибо за видео. Проверил с другими индикаторами - то же самое. Похоже, это баг в самом терминале.

      Удалить
  4. У меня такое впечатление, что индикатор со стандартными настройками всего лишь показывает реверс. Возможно ли его настроить так, чтобы он действительно показывал индекс доллара, евро или другой валюты, как здесь: https://www.mataf.net/ru/forex-charts/usd?

    ОтветитьУдалить
    Ответы
    1. Доллар - сильная валюта, неудивительно, что, если смотреть её индекс в сравнении с кроссами с ней, то для большинства пар типа C/USD будет казаться, что это просто реверс, так как валюта C мало что решает.

      Там (по ссылке) используется другая формула, судя по описанию - на основе изменения относительно фиксированной точки во времени (в прошлом). Не знаю, какая из формул лучше. Их формула такая же синтетическая, как и эта. Посмотрел на их графики, они очень похожи на мои.

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

      Удалить
    2. Нашёл тему, где этот индикатор начинался, там же исследовался вопрос похожести различных подходов, а также схожие темы:
      http://www.speculant.com/forum/showthread.php?t=168

      Рекомендую хотя бы к беглому к прочтению.

      Удалить
    3. Действительно, там используется не USDX. Но часто можно увидеть расхождения, когда индекс остановился, а валюта продолжает двигаться. Затем происходит разворот и общее падение. Также встречаются ситуации, когда индекс пробивает поддержку/сопротивление, а валюта делает откат. После чего происходит продолжение движения. В общем рекомендую понаблюдать.

      ЗЫ Прочитал всю ветку, но в формулах не силен. Поэтому основные мысли уловить не смог.

      Удалить
    4. По поводу "сильной валюты" поправлю. Здесь это скорее "волатильная валюта". Чем больше она движется, тем больший вклад в индекс она вносит. Доллар в последние месяцы трендит, отсюда и его явное влияние на индикатор.

      Удалить
    5. Скорее "сильная валюта" определяется ее весом в корзине индекса доллара. Евро 52%, Иена 33% и 15% все остальные хард кёрренси. Фунт может летать через весь экран, а индекс доллара не шелохнется, еврик пройдет фигуру и индекс отреагирует половиной фигуры

      Удалить
  5. Уважаемый автор, а могли бы Вы, если это вообще возможно, доработать индикатор index.mt4_7.1, что бы его можно было ставить на оффлайн график РЕНКО?

    ОтветитьУдалить
    Ответы
    1. Не очень понял, что нужно - индекс (ренко по индексу), рассчитанный по ренко кроссов, или ренко по индексу, рассчитанный по кроссам. Надеюсь, вы сами знаете и сможете передать более чёткое задание тому, кто возьмётся за эту доработку, я не возьмусь.

      Удалить
  6. Спасибо за труд!!! Классный индикатор, СПАСИБО!!!

    ОтветитьУдалить