Смотри, как бесплатно скачать роботов
Find us on Telegram!
Join our fan page
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Индикаторы

iSpread-индикатор спреда для парной торговли - индикатор для MetaTrader 5

Просмотров:
7128
Рейтинг:
(32)
Опубликован:
2014.01.21 08:30
Обновлен:
2016.11.22 07:33
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Индикатор позволяет создать свой синтетик на основе двух других выбранных пар.

Алгоритм работы с индикатором следующий:

Выбор начальных данных

  1. С какой даты начинаем - Выбор начальной даты для построения синтетика. Нужно чтобы отсечь слишком старую историю за ненадобностью.
  2. Символ 1/2 - Выбор двух начальных пар.
Следующим этапом проводим предварительную подготовку исходных данных.

Преобразование данных

  1. Действие - Выбор арифметического действия, которым оба ряда будут слиты в один. Доступно 4 действия: - + / * Я сталкивался с использованием разности либо отношения. Вероятно сумма и произведение тоже может понадобиться, но с такими ситуациями не знаком. Буду рад, если кто просветит, как их можно использовать.
  2. Реверс символа 1/2 - Инверсия выбранного ряда, если корреляция отрицательная.
  3. Степень символа 1/2 - Возведение в степень выбранного ряда. Знаю, что это нужно, хотя сам этот параметр не использую, так как не понимаю точно, зачем возводить ряд в степень. Подозреваю, что для выравнивания размерностей обоих рядов, но я для этого использую множители. Если предположение верное, то в чём преимущество одного подхода перед другим ?
  4. Множитель символа 1/2 - Возможность умножить ряд на определённое число. Использую для выравнивания размерностей рядов.
  5. Логарифмирование - Перевод полученного ряда в логарифмическую шкалу. Если я использую логарифмирование, то итоговый ряд готовлю с помощью разности двух исходных рядов, если не использую перевод, то тогда выбираю действие - отношение. Вообще перевод в данную шкалу позволяет избавиться от влияния квадратичного тренда, но на коротких участках разницу лично я не вижу и поэтому чаще его не использую и ставлю действие - отношение. Если я в чём то заблуждаюсь, то буду рад объяснению.
  6. Сглаживание.Период - Когда все действия проведены, перед сливанием двух рядов в один, иногда используют легкое сглаживание полученных данных. Я этот ряд сглаживаю простой машкой с указанным периодом. Искажение это практически никаких не вносит, но позволяет значительно подрезать различные выбросы и нерыночные котировки. Сглаживание можно не использовать, поставив значение параметра в 0 . При использовании небольшого периода для удаления тренда (параметры дальше) я сглаживание не использую. При больших значения сглаживание не вредит, а итоговый ряд получается немного более гладким с меньшим шумом.

На этом подготовка данных и создание синтетика закончено. Вот что мы сделали:

Взяли EURUSD:

eurusd

Взяли GBPUSD:

gbpusd

Созданный нами синтетик:

синтетик


Остался последний этап - Определение необходимого отклонения для поиска точек входа:

Поиск отклонений

  1. Выбор алгоритма - Детренд простой машкой или Первая разность. Из полученного ряда необходимо удалить тренд. Я знаю для этого два способа (предпочитаю второй). Способ первый - из полученного ряда удаляем машку с необходимым периодом (лагом). Период выбирается исходя из горизонта инвестирования. Машка строится по простому алгоритму. Есть ли смысл использовать тут экспоненту и существенна ли разница - вопрос открытый, буду рад, если кто просветит. Способ второй - два раза берём первую разность, сначала у каждого цВр, потом между полученными результатами. Итоговый результат между обоими способами похож при отсутствии сильных движений по одному из рядов, при сильном же движении первый способ даёт более быстрый возврат синтетика к 0, что чаще всего является неверным показателем. Единственный нюанс у первой разности. Вместо Close[1]-Close[2] я использую Close[1]/Close[2], то есть "первое отношение" - хотя с таким термином я не сталкивался
  2. Период для алгоритма - Лаг, смещение, окно. Если поставить 0, то синтетик не модифицируется.
  3. Отображать уровни - Показывать или нет уровни отклонений, при пересечении которых принимается решение о входе в рынок. Я использую 3 уровня в обе стороны: красный, жёлтый, зелёный.
  4. Способ расчёта уровней - Знаю 3 способа для определения данных уровней. Способ 1 (называется нормализация в 0..1 со смещением) - детрендированный синтетик нормализуем в единичный диапазон с последующим смещением =-0.5, чтобы колебания были вокруг 0. Чаще всего использую именно этот способ, но нужно понимать что начальные данные, когда у нас ещё нет устойчивых экстремумов, всё равно нормализуются, и эти показания нельзя брать в расчёт. Так как индикатор не перерисовывает прошлое после прихода обновлённых экстремумов, то на графике это будет выглядеть следующим образом:

нормализация


Но после 2-3 хороших расхождений начальных рядов этим уровням уже можно начинать верить. С накоплением данных экстремумы для нормализации не теряются.

Способ 2 (называется уровни от экстремумов) - Просто отслеживание абсолютного максимального отклонения и его деление на 3 уровня для входа.

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

При использовании данного способа видим такую картинку:

Отклонения по экстремумам

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

Способ 3 для построения уровней - Расчёт СКО. В индикаторе данный вариант не реализован, так как этот способ даёт сужение уровней, что я считаю неприемлемым. В результате уровни похожи на пузыри, которые постоянно сужаются и расширяются. Скринов к сожалению нет, так как я удалил этот способ расчёта со всех индикаторов. Ещё один недостаток - постоянно приходиться проверять все доступные данные, чтобы корректно всё это рассчитать.

P.S. Индикатор перенёс с MetaTrader 4 чтобы проверить некоторые идеи в мультитестере, но есть некоторые особенности:

  1. Индикатор рисует какой-то левый шум, если не может получить все данные. Почему это возникает я не понял, в MetaTrader 4 этого у меня нет;
  2. При дырах в истории по идее индикатор должен брать предыдущие значения, но ввиду пункта 1 я оставил эти данные пустыми, чтобы было видно, где именно находится дыра.
  3. Если нарисовано что-то непонятное, то обновите график сменив период, пару и т.д.
  4. Пробовал использовать таймер при отсутствии данных - результат неудовлетворительный, таймер удалил.
  5. Подозреваю, что пункты 1-4 из-за моего "не очень" знакомства с MQL5 - буду признателен за просвещение.
Exp_The_20s_v020 Exp_The_20s_v020

Торговая система с использованием семафорного стрелочного индикатора The_20s_v020.

Chandelier Exit Chandelier Exit

Трендовый индикатор, выполненный в виде цветного облака со стопами за границей цветного облака.

Simple EA Simple EA

Самый простой робот, который покупает и продает!

DM DM

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