Скачать MetaTrader 5

Теоретические основы построения кластерных индикаторов для рынка FOREX

6 апреля 2007, 13:25
Simeon Semenych
24
7 418

Введение

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

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


Особенности работы кластерных индикаторов

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

Если требуется посмотреть на относительное колебание трех валют, например EUR, USD, GBP, то для этого требуются котировки трех валютных пар: EURUSD, GBPUSD и EURGBP. А вот если хочется подключить еще, к примеру, и JPY, то кроме указанных выше валютных пар, нужны котировки GBPJPY, USDJPY, EURJPY, итого шесть валютных пар, где каждая валюта имеет три связи с другими валютам. Графически, это можно представить как квадрат, в углах которого расположены валюты, а связи (стороны и диагонали квадрата) между валютами - это валютные пары. Из каждого угла этого квадрата будет проведена линия ко всем остальным углам. Такая замкнутая сеть получила название кластер. Отсюда и название кластерные индикаторы.

В торговом терминале MetaTrader 4 индикаторы, как правило, отображаются в отдельном подокне ниже ценового графика и внешний вид их зависит от изучаемой валютной пары. В свою очередь, кластерные индикаторы выглядят одинаково везде, к какому графику их не подключали бы. Это является второй отличительной особенностью кластерных индикаторов. На рисунке Fig 1 показан индикатор CCFp (Complex_Common_Frames percent). Не смотря на то, что он прикреплен к графику EURUSD, точно такой же вид он будет иметь на любой другой валютной паре даже, если эта пара не входит в рассматриваемый кластер.


Основные понятия, принятые при работе с кластерными индикаторами

На рисунке Fig 1 видны восемь разноцветных линий. Каждая линия соответствует отдельно взятой валюте. Кластерные индикаторы отображают не индексы валют, а их относительные колебания друг относительно друга. Индикаторы представляют собой замкнутую систему, что уже приводит к упрощению модели рынка, но для успешной торговли по ним такое упрощение не мешает.

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

Если валюта находится около линии баланса, то это говорит о том, что валюта находится в состоянии равновесия относительно других валют. Еще один важный элемент кластерных индикаторов, это точка пересечения двух линий, говорящий о смене тренда или подающий сигнал. Кроме того, можно на индикаторах выделять дивергенции и конвергенции, но об этих всех элементах подробнее пойдет речь в следующей статье «Практическое применение кластерных индикаторов на рынке FOREX».

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

Если индикатор отображается под парой EURUSD, то он кроме этой валютной пары еще учитывают пары EURGBP, USDGBP, USDCHF, EURJPY и так далее, то есть все остальные, где есть USD и EUR. И если приходит торговый сигнал по индикатору, необходимо помнить, что торгуется не конкретная валютная пара, а рынок целиком, точнее рыночный кластер. Такое обстоятельство является и плюсом и в тоже время и минусом. Сигналы по этим индикаторам более уверенные, так как строятся на основании всех валютных пар. В тоже время всегда остается риск того, что выбранная валютная пара начнет выбиваться из всего комплекса валют. На рынке такое случается, например, когда происходят крупные продажи именно фунта и именно за доллар США. Ведь влияние отдельной валюты на весь кластер составляет чуть более 4% (одна пара из двадцати четырех). В этом ключе индикаторы имеют наибольшую ценность как информационные, а не как торговые. Хотя известно, что на основе индикаторов созданы торговые системы.


Требования для работы кластерных индикаторов

Терминал MetaTrader 4 вводит ряд ограничений, который не позволяет использовать кластерные индикаторы для всего многообразия финансовых инструментов. Максимальное количество линий на индикаторе не может превышать восьми. Потому самый большой кластер возможен только из восьми валют. В этот набор входят: USD, EUR, GBP, CHF, JPY, CAD, AUD, NZD. И для своей работы индикаторы требуют котировки двадцати четырех валютных пар: EURUSD, EURGBP, EURCHF, EURJPY, EURCAD, EURAUD, EURNZD, GBPUSD, GBPCHF, GBPJPY, GBPCAD, GBPAUD, GBPNZD, USDCHF, USDJPY, USDCAD, AUDUSD, AUDJPY, AUDCAD, AUDNZD, NZDUSD, NZDCHF, NZDCAD, NZDJPY. Необходимость котировок по указанным парам еще недавно снижало круг ДЦ, на платформах которых могли бы работать индикаторы.

В настоящее время в последних модификациях индикаторов требования стали ниже, теперь достаточно иметь все кроссы, в которых участвует доллар США. Таким образом, чтобы индикаторы работали, необходимы следующие валютные пары: EURUSD, GBPUSD, USDCHF, USDJPY, USDCAD, AUDUSD, NZDUSD. Насколько известно автору, все ДЦ, работающие с платформой MetaTrader 4, предоставляют котировки по указанным валютным парам. Но следует помнить, что более старые версии индикаторов, а они еще встречаются в сети Интернета требуют полный набор, то есть двадцать четыре валютные пары.

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


Виды кластерных индикаторов

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

Первый - это индикатор CCFp, внешний вид которого можно увидеть на рисунке Fig 1.


CCFp (Complex_Common_Frames percent) – это трендоследящий индикатор. Его предшественник CCF рассчитывал абсолютное расхождение валют в пунктах, в то время как индикатор CCFp работает с относительными значениями, что позволило снять искажения вызванные «тяжестью» отдельных валют. Под «тяжестью» тут понимается то что, например, фунт почти в два раза дороже доллара США (февраль 2007 года – время написания статьи). В результате пункты для каждой валюты имеют разную стоимость. Потому было принято решение расчет делать в процентах.

Второй индикатор CC (Complex_Common) - это импульсный индикатор или сигнальный. Он очень чувствительный и быстро реагирует на ценовые движения. Внешний вид индикаторов можно увидеть на рисунке Fig 2.


На рисунке рассматривается пара EURUSD, снизу расположены два окна с одним и тем же индикатором. В верхнем окне показаны все валюты, а линии доллара США и евро выделены полужирной линией. В нижнем окне тот же самый индикатор, но у которого скрыты все остальные валюты и оставлены только для соответствующей пары.

Третий индикатор Complex_Pair1 – это производный индикатор от СС. Если посмотреть на рисунок Fig 2, на нижнее окно индикатора, то видны всего две линии: EUR и USD. Если просуммировать эти две линии то получится индикатор Complex_Pair1, на котором отображается всего одна импульсная (сигнальная) линия. Увидеть этот индикатор можно на рисунке Fig 3.


Надо отметить, что изначально был разработан индикатор Complex_Pair, но он был достаточно ресурсоемким. Позже в процессе исследований был обнаружен иной принцип построения того же самого индикатора, но с использованием очень быстрого алгоритма, который позволял выделять ту же информацию, но исключительно только из ценового графика отдельной валюты. Несмотря на то, что Complex_Pair и Complex_Pair1 совершенно по разному получают данные, визуальное сходство их на старших таймфремах было абсолютным. На мелких таймфремах отличия наблюдались, но зато Complex_Pair1, может работать на любом финансовом инструменте, будь это акции, фьючерсы или сырье.

Автор кластерных индикаторов отмечает, что алгоритм индикатора Complex_Pair1 был разработан не им, а другим человеком. (Форум сайта Onix, разработчик arzuma, ссылка на сообщение).


Краткое описание алгоритмов работы кластерных индикаторов

Идея разделения замкнутого кластера валютных пар на отдельные валюты предельно проста. Предположим, что используется малый кластер для валютных пар: EURUSD, GBPUSD, EURGBP и ставиться задача выделить валюты EUR, USD, GBP. Если за выбранный период времени выросла пара EURUSD, тогда изменения прибавляются к EUR и отнимаются от USD. Если за это время так же выросла пара GBPUSD, тогда изменения в цене прибавляются к GBP и отнимаются от USD. И, наконец, необходимо учесть изменения в цене пары EURGBP. Допустим, пара снизилась, тогда изменение цены прибавиться к GBP и отнимется от EUR.


В виду того, что на Форексе невозможно определить общий знаменатель, который являлся бы устойчивым во времени эталоном, то при разделении валют нормировка не осуществляется, и все изменения цен определяются в условных единицах. До недавнего времени такой единицей был пункт. Но поскольку стоимость пункта сама по себе изменчива во времени и отличается у разных валютных пар, в последних модификациях кластерных индикаторов изменение цены стало рассчитываться в процентном отношении. Кроме того, опыт показал, что современные котировальные автоматы не допускают сильного расхождения валютных кроссов. Потому для снижения трафика подкачки котировок и увеличения быстродействия индикаторов расчеты всех валютных пар происходят на основе только долларовых кроссов. Таким образом, общий алгоритм индикаторов выглядит следующим образом:

  1. Определение валют, которые будут входить в кластер. Задается пользовательскими установками;
  2. Математический расчет недолларовых кроссов на основе долларовых даже, если сам доллар США исключен из кластера;
  3. Фильтрация шумов методом скользящих средних. Параметры задаются пользователем;
  4. Анализ всех валютных пар кластера на изменение цены и заполнение матрицы валют входящих в кластер;
  5. Далее идет логическая реализация уже конкретного вида индикатора, то есть для трендоследящего индикатора обрабатываются несколько таймфремов (не только текущий), а для импульсного проводятся более простые преобразования.

Исходные файлы индикаторов CCFp, CC, CFP, Complex_pairs1 прилагаются к статье.


Параметры кластерных индикаторов

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

Первая группа параметров задает метод фильтрации
MA_Method - метод вычисления скользящего среднего, может принимать один из вариантов:

  • 0 - Простое скользящее среднее;
  • 1 - Экспоненциальное скользящее среднее;
  • 2 - Сглаженное скользящее среднее;
  • 3 - Линейно-взвешенное скользящее среднее.

По-умолчанию выставляется значение 3.

Price – используемая цена, может принимать любое из следующих значений:

  • 0 - Цена закрытия, (close);
  • 1 - Цена открытия, (open);
  • 2 - Максимальная цена, (high);
  • 3 - Минимальная цена, (low);
  • 4 - Средняя цена, (high+low)/2;
  • 5 - Типичная цена, (high+low+close)/3;
  • 6 - Взвешенная цена закрытия, (high+low+close+close)/4.

По-умолчанию выставлено значение 6.

Fast – период быстрой средней, по умолчанию 3.

Slow – период медленной средней, по умолчанию 5.

Вторая группа параметров позволяет формировать различные виды кластеров

В этой группе восемь логический параметров, которые могут принимать значение истина/ложь (1/0). Каждый параметр включает ту или иную валюту в кластер либо отключает ее:

  • USD – включает в кластер или отключает из него доллар США (по умолчанию включено – true);
  • EUR – включает в кластер или отключает из него единую европейскую валюту евро (по умолчанию включено – true);
  • GBP – включает в кластер или отключает из него английский фунт (по умолчанию включено – true);
  • CHF – включает в кластер или отключает из него швейцарский франк (по умолчанию включено – true;
  • JPY – включает в кластер или отключает из него японскую Йену (по умолчанию включено – true);
  • CAD – включает в кластер или отключает из него канадский доллар (по умолчанию включено – true);
  • AUD – включает в кластер или отключает из него австралийский доллар (по умолчанию включено – true);
  • NZD – включает в кластер или отключает из него новозеландский доллар (по умолчанию включено – true).


Третья группа параметров управляет внешним видом индикаторов

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

  • Color_USD – цвет линии для доллара США;
  • Color_EUD – цвет линии для единой европейской валюты;
  • Color_GBP – цвет линии для английского фунта;
  • Color_CHF – цвет линии для швейцарского франка;
  • Color_JPY – цвет линии для японской Йены;
  • Color_CAD – цвет линии для канадского доллара;
  • Color_AUD – цвет линии для австралийского доллара;
  • Color_NZD – цвет линии для новозеландского доллара;
  • Line_Thickness – задает толщину линии отображаемой валютной пары. Иногда это удобно. Например, если рассматривается график EURUSD, то удобно когда линии EUR и USD будут выделяться не только цветом, но и толщиной линии.

В тоже время, индикаторы можно настроить так, что другие валюты будут вообще не видны, а останутся только интересуемые валюты. Увидеть такую настройку можно на картинке Fig 3.

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

All_Bars – определяет количество рассчитываемых баров истории. Если этот параметр равен 0 (по умолчанию именно так), то рассчитывается вся доступная история. Но, как отмечалось ранее, индикаторы очень ресурсоемки, потому на слабых машинах его использование становиться проблемой, и, чтобы снять нагрузку, введен этот параметр, который позволит ограничить рассматриваемую историю котировок. Замечено, что уже при значениях 1000 или 500, скорость работы индикаторов значительно возрастает.


Заключение.

Удобство кластерных индикаторов заключается в том, что позволяют сразу в одном окне видеть динамику относительного колебания валют, что позволяет выявлять перспективные валютные пары, по которым можно ожидать значительные трендовые движения. Кластерные индикаторы позволяют отслеживать зарождение трендов и могут давать сигналы к открытию и закрытию позиций. Более подробно о работе индикаторов будет рассказано в статье «Практическое применение кластерных индикаторов на рынке FOREX». Познакомиться с историей создания индикаторов можно на форуме сайта Оникс в ветке «Кластерные индикаторы».

Прикрепленные файлы |
CC.mq4 (16.97 KB)
CCFp.mq4 (17.15 KB)
CFP.mq4 (13.82 KB)
Complex_pairs1.mq4 (3.69 KB)
Последние комментарии | Перейти к обсуждению на форуме трейдеров (24)
gara
gara | 28 окт 2011 в 16:30
Модератору: пожалуйста проверте ссылки на индикаторы в конце статьи, не могу скачать.
MQL4 Comments
MQL4 Comments | 4 май 2012 в 05:19
Crazy_Fox:

Я думаю многие заметили, что индикаторы CC, CCFp и CFP не обновляются автоматически. Я их немного подправил - теперь всё нормально.

Что нужно сделать:

ищем в самом начале функции start() код:

   int counted_bars = IndicatorCounted();
//---- проверка на возможные ошибки
   if(counted_bars < 0) 
       return(-1);
//---- последний посчитанный бар будет пересчитан
   if(All_Bars < 1)
       All_Bars = Bars;
   if(counted_bars > 0 && Last_Bars > 0) 
       counted_bars -= Last_Bars;
   limit = All_Bars - counted_bars;

и заменяем его на следующий:

if (IndicatorCounted()<0) return(-1);
  limit=Bars-IndicatorCounted();
  if (Bars.Count>0 && limit>Bars.Count) limit=Bars.Count;

Теперь в начале файла ищем объявление параметров:

extern int All_Bars = 0;
extern int Last_Bars = 0;

Они нам теперь не нужны, вместо них вставим строчку:

extern int Bars.Count = 0;

Всё, теперь никаких проблем не будет. Это применимо для всех трёх индикаторов.

Для тех, кому неохота ковырять код - вот уже исправленные индикаторы: (это не картинка, это ZIP архив) ===>

PS: Семён Семёныч, спасибо за проделанную работу!


Архив не скачивается((( После того, как вручную хотел поменять код, описанный выше, после компиляции вылезло еще штук 10 ошибок разного рода :))
MQL4 Comments
MQL4 Comments | 19 дек 2012 в 20:21
А как ваши Индюки использовать програмно? Ну там используя скажем: "iCustom" ? Примеры?
MQL4 Comments
MQL4 Comments | 19 дек 2012 в 21:07
iCustom(NULL, 0,"CFP",3,6,3,5,1,1,1,1,1,1,1,1,0,0,0);

iCustom(NULL, 0,"CCFp",3,6,3,5,1,1,1,1,1,1,1,1,Green,DarkBlue,Red,Chocolate,Maroon,DarkOrange,Purple,Teal,2,0,1,0);

Правильно?

bornik
bornik | 15 май 2017 в 12:36

Ваш индикатор продает один наглец - он его переименовал

https://forexsystemsru.com/indikatory/79373-klasternyi-indikator-universum-cluster-currency.html

Опрос: мобильный терминал глазами трейдеров Опрос: мобильный терминал глазами трейдеров

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

Одновременное отображение сигналов нескольких индикаторов с четырех таймфреймов Одновременное отображение сигналов нескольких индикаторов с четырех таймфреймов

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

Советник на заказ. Инструкция для трейдера. Советник на заказ. Инструкция для трейдера.

Далеко не все трейдеры - программисты. А из них далеко не все - хорошие программисты. Что делать, если надо автоматизировать свою систему, а времени и желания учить язык MQL 4 нет?

Автоматическая оптимизация торгового робота в процессе реальной торговли Автоматическая оптимизация торгового робота в процессе реальной торговли

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