• Обзор
  • Отзывы
  • Обсуждение

SOMFX1

Если вы торгуете с использованием свечных фигур и хотите усовершенствовать свои методы современными технологиями, этот индикатор для вас. Фактически он является частью набора инструментов, который основывается на нейросетевом движке самоорганизующихся карт (Self-Organizing Map, SOM) для распознавания и предсказания свечных фигур, а также для исследования входных данных и результатов работы сети. Набор содержит:

  • SOMFX1Builder - скрипт для обучения нейронных сетей; он создает файл с обобщенными данными о наиболее характерных ценовых фигурах, который может использоваться для предсказания баров в фигурах либо в отдельном окне (с помощью индикатора SOMFX1), либо непосредственно на основном графике (SOMFX1Predictor);
  • SOMFX1 - данный индикатор для предсказания и визуального анализа ценовых фигур, входных и выходных данных обученной нейронной сети (в отдельном окне);
  • SOMFX1Predictor - другой индикатор для предсказания ценовых фигур непосредственно в основном окне;
Инструменты реализованы отдельно друг от друга в связи с тем, что MetaTrader 4 имеет некоторые ограничения, например, в данный момент невозможно запустить длительные вычисления в индикаторе, поскольку индикаторы исполняются в главном потоке.

Если кратко, то весь процесс анализа цен, обучения сети, распознавания фигур и их предсказания заключается в следующих шагах:

  1. Создание нейронной сети с помощью SOMFX1Builder;
  2. Анализ качества полученной сети с помощью SOMFX1; если неудовлетворительно, возврат на шаг 1 с новыми настройками; вы можете пропустить шаг 2 по желанию;
  3. Использование окончательной версии сети для предсказания фигур при помощи SOMFX1Predictor.

Все это рассматривается подробнее ниже. 

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


Введение

Что такое свечные фигуры? Это отличительные последовательности баров, которые были "вычислены" много лет назад сообществом трейдеров и получили забавные названия. Нет научных доказательств того, что фигуры работают так, как это ожидается, если не во всех случаях, то хотя бы в статистически обоснованном большинстве случаев. Также не гарантируется, что все поименованные фигуры - это действительно все закономерности современного рынка, особенно принимая во внимание, что большинство из них было создано в эру старых добрых размеренных рынков. Например, если сдвинуть график на время, равное половине длительности бара (например H4 сдвинуть на 2 часа), существующие фигуры исчезнут и появятся совершенно другие фигуры. Не означает ли это, что привычные фигуры должны иметь различные представления? Но тогда "молот" перестанет походить на молот, а "звезда" - на звезду? Кажется, это сломает все искусственную красоту свечной теории, но это честно.

Фигуры (или более научно - образы) - это просто легкое для восприятия описание изменений цены, обычно разницы между ценами закрытия баров. Это, вообще говоря, не свечные, а ценовые фигуры.

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

Данный индикатор предоставляет технологию нейронных сетей, конкретно - самоорганизующихся карт (Self-Orgranizing Map, SOM). Как и любая другая нейросеть, SOM состоит из нейронов - элементарных вычислительных единиц. В SOM каждый нейрон может содержать информацию об одной ценовой фигуре. Причина, по которой сеть называется SOM, в том, что сеть автоматически сравнивает различные фигуры и размещает их на двумерной карте таким образом, что похожие образы находятся рядом, а отличные - далеко. При этом любой ход изменения цены может быть отображен на карту и попадет в некоторую ячейку (нейрон), которая больше всего походит на цену (ячейка называется best matching unit, BMU, см. далее). Имея начальную часть какой-либо фигуры, можно найти ей окончание по содержанию BMU.

Вы можете обратиться за дополнительной информацией о SOM в другие разделы данного сайта mql5.com (например, вот статья по данному предмету) или в Интернет, начиная со статьи в  Википедии.


Принципы работы

Интерфейс индикатора состоит из двух частей. В главном окне выводится сама карта и элементы управления. В дополнительном окне внизу показываются образы входных данных (нормализованный ряд цен) и предсказания. Образы и предсказания нормализованы к диапазону [-1, +1] и строятся как изменения цены между соседними барами. Образы отображаются зеленой линий. Предсказание - светло-голубой толстой линией (она имеет длину PredictionBars баров и может продолжаться в будущем). Справа от линии образов (iчуть дальше в будущем) можно увидеть пучок линий длиной PatternSize баров. Они представляют собой структуру текущего выигравшего нейрона, т.е. BMU. Более подробно об этом - чуть ниже.

Нейросеть нужно обучить на некотором периоде из истории (используя SOMFX1Builder). Это длительный процесс, но чисто номинально его можно запустить лишь однажды (почему номинально? - см. далее). После завершения обучения вы получаете готовую нейронную сеть, которая способна анализировать и предсказывать новые движения цены на лету. Подробности об обучении нейросети можно найти в документации SOMFX1Builder.

В результате обучения вы получаете файл с расширением candlemap (SOMFX1Builder создает такие файлы в папке Files рабочего каталога MQL4). Вам необходимо указать имя этого файла в настройках индикатора, и индикатор выведет 2 квадратных карты на графике.

Левый квадрат показывает текущую активность нейронов: нейроны с более высоким возбуждением выводятся красным, а с меньшим - синим. Другими словами, чем краснее ячейка на карте, тем лучше нейрон соответствует текущей ценовой фигуре. Текущая ценовая фигура - это фрагмент приращений цен, взятый с PatternSize баров слева от вертикальной пунктирной линии желтого цвета с названием "FromPastToFuture". Вы можете двигать линию на произвольную позицию, и индикатор будет считывать образец возле этого места, подавать его на вход SOM, и отображать изменения в активности карты и предсказание следующего движения цены.

Заметьте, что предсказание начинается с текущего бара, то есть текущий бар тоже предсказывается. Это сделано, потому что текущий бар обычно не закончен и требует предсказания сам по себе. Более того, если принять еще назаконченный бар во внимание, предсказание станет противоречивым (нестабильным во время формирования бара). Из-за того, что текущий бар тоже предсказывается, светло-голубая толстая линия (график) начинается на 1 бар левее вертикальной линии "FromPastToFuture" - она показывает, как цена должна меняться на текущем баре.

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

В ответ на перемещение линии "FromPastToFuture" от бара к бару, на карте выбирается ячейка, наиболее подходящая образу цен слева от линии, и помечается круглой точкой. Эта ячейка и называется "ячейкой лучшего соответствия" - best matching unit (BMU). Её веса выводятся в виде красной линии в правой части дополнительного окна. Это и есть ценовая фигура, автоматически выявленная и обобщенная нейросетью. Если ячейка имеет отображающиеся на неё образы цены (входные вектора), среднее по ним выводится оранжевой линией, а дисперсия - двумя серыми линиями над и под.

Эта информация и позволяет делать предсказания: когда новые изменения цены совпадают с началом одной из фигур в сети (скажем, с 4-мя барами из 5-баровой фигуры), окончание фигуры дает наиболее вероятное движение цены (5-й бар в данном примере).

Когда линия "FromPastToFuture" перемещена, индикатор не только показывает предсказание и BMU. Кроме того он подсвечивает ценовые образы, привязанные к этой BMU, синим цветом. Это выглядит так, что синие фрагменты перекрывают частично зеленую кривую с приращениями цен. Образы могут перекрываться. Например, если фигура имеет длину 4 бара, и один образец начинается на баре номер 10, а другой - на баре номер 12, они будут иметь 2 общих бара. В таком случае будет подсвечено 6 последовательных баров, такие образы визуально неразделимы (в этом окне, сеть же конечно их "знает" по отдельности).

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


Параметры

  • LearnStart - номер бара в истории, где начинаются обучающие данные, или точные дата и время этого бара (в формате "YYYY.MM.DD HH:MM"); данный параметр - строка, что позволяет вводить и числа, и даты; данный параметр используется здесь не для обучения, а для воссоздания обучающего набора данных (соответствующих нейросети), что важно если параметр UseAverage равен true (см. далее), а также для визуализации "плотности заселения"; по-умолчанию - 5001; если ввести автоматически сгенерированное имя в параметр NetFileName (см. далее), индикатор разделяет имя на составляющие и использует их вместо других параметров, включая и LearnStart; другими словами, данный параметр не влияет на работу, если в параметр  NetFileName введено автоматически сгенерированное имя файла нейросети;
  • LearnStop - номер бара в истории, где заканчиваются обучающие данные, или точные дата и время этого бара (в формате "YYYY.MM.DD HH:MM"); данный параметр - строка; по-умолчанию - 1; данный параметр используется здесь не для обучения, а для воссоздания обучающего набора данных (соответствующих нейросети), что важно если параметр UseAverage равен true (см. далее), а также для визуализации "плотности заселения"; данный параметр не влияет на работу, если в параметр  NetFileName введено автоматически сгенерированное имя файла нейросети;
  • PatternSize - количество баров в одной фигуре; по-умолчанию - 5; данный параметр не влияет на работу, если в параметр  NetFileName введено автоматически сгенерированное имя файла нейросети;
  • GridSize -  размер карты; это количество ячеек/нейронов по вертикали и горизонтали; допустимые значения: 3 - 50; по-умолчанию - 7; данный параметр не влияет на работу, если в параметр  NetFileName введено автоматически сгенерированное имя файла нейросети;
  • PredictionBars - количество баров предсказания; по-умолчанию - 10; обратите внимание, что каждый следующий бар предсказывается с меньшей точностью, чем предыдущий, поскольку ошибки предсказания накапливаются;
  • UseAverage - это переключатель специального режима; когда он отключен (false, по-умолчанию) предсказания делаются на основе весов выигравшего нейрона, то есть они определяются исключительно картой; когда режим включен (true), предсказания делаются на основе средней цены всех образцов, отобразившихся на выигравший нейрон; это означает, что в предсказании участвует не только карта, но и данные обучающей выборки, именно поэтому важно указание точных дат и времени для отрезка обучения; с этим параметром можно "поиграть" для получения лучших результатов: использование весов нейронов - это классических подход, но использование средних цен привносит дополнительную привязку к исходным данным - в частности, в этом случае можно принимать во внимание дисперсию и тем самым оценивать точность предсказания;
  • PriceType - тип цены; по-умолчанию - close; данный параметр не влияет на работу, если в параметр  NetFileName введено автоматически сгенерированное имя файла нейросети;
  • AddInvertedPrice -  включение/отключение режима, когда в набор образцов добавляются инвертированные ценовые движения; по-умолчанию - true; это означает, что количество образцов увеличится вдвое;
  • NetFileName - имя файла обученной нейронной сети, сгенерированного скриптом SOMFX1Builder; если имя формировалось автоматически, оно включает несколько необходимых компонентов, чтобы восстановить вышеперечисленные параметры; таким образом, пользователь может заполнить только один этот параметр; структура имени файла следующая: SOM-V-D-SYMBOL-TF-YYYYMMDDHHMM-YYYYMMDDHHMM-P.candlemap, где V - PatternSize, D - GridSize, SYMBOL - текущий символ, TF - текущий таймфрейм, YYYYMMDDHHMM - LearnStart и LearnStop соответственно; P - PriceType;
  • CellSize - размер ячейки при визуализации карты на графике; по-умолчанию - 20, что подходит для карт размером до 10; для больших карт нужно выбрать размер ячеек поменьше, иначе два представления карты будут перекрываться;
  • PrintData - включение/отключение вывода отладочных сообщений в журнал; по-умолчанию - false;

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

Нет отзывов