НЕЙРОННЫЕ ИНДИКАТОРЫ ФОРЕКС

Лучшие Форекс брокеры 2021:

НЕЙРОННЫЕ ИНДИКАТОРЫ ФОРЕКС

Предсказатель на основе самообучающейся нейронной сети.
Предлагается индикатор использующий нейронную сеть прямого распространения (feedforward neural network), которая самообучается методом Обратного Распространения Ошибки (backpropagation). Сеть загружается через DLL файл, исходный C++ код которого прилагается.
Нейронная сеть это ничто иное как нелинейная модель выходов как функция входов. На входы подаются данные задаваемые пользователем, например выборки временного ряда. Смысл выходных данных также задаётся пользователем, например сигналы 1=buy/0=sell. Структура сети опять же задаётся пользователем. Сеть прямого распространения состоит из

-входного слоя (input layer), элементами которого являются входные данные,

— скрытых слоёв (hidden layers), состоящих из вычислительных узлов называемых нейронами (neurons) и

— выходного слоя (output layer), который состоит из одного или нескольких нейронов, выходы которых являются выходами всей сети.

Все узлы соседних слоёв связаны между собой. Эти связи называются синапсами (synapses). Каждый синапс имеет вес (weight w[i,j,k]), на которой умножаются данные передаваемые по синапсу. Данные передвигается слева направа т.е. от входов сети к её выходам. Отсюда и название, «сеть прямого распространения». Общий пример этой сети изображён на рисунке внизу

Данные перерабатываются нейронами за два шага:

Лучшие Форекс брокеры 2021:

1. Все входы, помноженные на соответствующие веса, сначала суммируются

2. Затем получившиеся суммы обрабатываются функцией активации нейрона (activation or firing function) и посылаются на единственный выход.

Смысл функции активации нейрона заключается в моделировании работы нейрона мозга: нейрон срабатывает только после того как информация достигла определённого порога. В математическом аспекте, эта функция как раз и придаёт нелинейность сети. Без неё, нейронная сеть была бы линейной авторегрессионной моделью (linear prediction model). В прилагаемых библиотечных функциях возможен выбор трёх функций активации нейрона

* сигмоидальная функция sigm(x)=1/(1+exp(-x)) (#0)
* гиперболический тангенс tanh(x)=(1-exp(-2x))/(1+exp(-2x)) (#1)
* рациональная функция x/(1+|x|) (#2)

Порог активации этих функций равен 0. Этот порог может быть сдвинут по горизонтальной оси за счёт дополнительного входа нейрона называемом входом смещения (bias input), которому приписан определённый вес таким же образом как и к другим входам нейрона.

Таким образом, количество входов, слоев, нейронов в каждом слою и веса входов нейронов полностью определяют нейронную сеть, т.е. нелинейную модель, которую она создаёт. Чтобы пользоваться этой моделью необходимо знать веса. Веса вычисляются путём обучения сети на прошлых данных: на входы сети подаются нескольков наборов входных и соответствующих выходных данных и рассчитывается среднеквадратичная ошибка отклонения выхода сети от тестируемого. Цель обучения сети заключается в уменьшении этой ошибки путём оптимизации весов. Существуют несколько методов оптимизации, среди которых основными эвляются метод Обратного Распространения Ошибки (ОРО) и метод генетической оптимизации.

Лучшие Форекс брокеры 2021:

* BPNN.dll — библиотечный файл
* BPNN.zip — архив всех файлов необходимых для создания ДЛЛ файла
* BPNN Predictor.mq4 — индикатор предсказывающий будущее значение цены
* BPNN Predictor with Smoothing.mq4 — индикатор предсказывающий будущее значение цены, сглаженной ЕМА

Библиотечный файл BPNN.cpp содержит две функции: Train() и Test(). Train() предназначен для обучения сети для предоставленных входных и выходных данных. Test() предназначен для вычисления выходных данных на основе весов полученных после прогона Train().

Входными (зелёный цвет) и выходными (синий цвет) параметрами функции Train() являются:

double inpTrain[] — обучивающие входные данные (старый первый)
double outTarget[] — обучивающие выходные данные (старый первый)
double outTrain[] — выходы сети после обучения
int ntr — количество обучающих наборов входы-выходы
int UEW — ключ управляющий использованием внешних значений для инициализации весов (1=используем extInitWt[], 0=используем случайные числа)
double extInitWt[] — исходные значения весов
double trainedWt[] — значения весов после обучения
int numLayers — количество слоев в сети включая входной, скрытые и выходной
int lSz[] — одомерный массив размера numLayers, в котором хранятся количества нейронов в каждом слою. lSz[0] задаёт количество входов сети
int AFT — тип функции активации (0-сигмоидальная, 1-гиперболический тангенс, 2-рациональная)
int OAF — ключ использования функции активации в выходны нейронах (1=используем функцию активации, 0=нет)
int nep — максимальное количество обучающих шагов (эпох). Эпоха состоит из проверки всех обучающих наборов.
double maxMSE — среднеквадратичная ошибка, при которой обучения останавливается.

Входными (зелёный цвет) и выходными (синий цвет) параметрами функции Test() являются:

double inpTest[] — входные данные (старый первый)
double outTest[] — выходные данные
int ntt — колчиство наборов в входных и выходных данных
double extInitWt[] — исходные значения весов
int numLayers — количество слоев в сети включая входной, скрытые и выходной
int lSz[] — одомерный массив размера numLayers, в котором хранятся количества нейронов в каждом слою. lSz[0] задаёт количество входов сети
int AFT — тип функции активации (0-сигмоидальная, 1-гиперболический тангенс, 2-рациональная)
int OAF — ключ использования функции активации в выходны нейронах (1=используем функцию активации, 0=нет)

Использование функции активации в выходных нейронах зависит от характера выходны данных. Если выходами сети являются биноминальные сигналы (0/1 или -1/1), то нужно использовать функцию активации (OAF=1). Причём учтите что для функции №0, уровни сигнала 0 и 1, а для функций №1 и 2 уровни -1 и 1. Если выходом сети является предсказание цены, то функция активации в выходном слое не нужна (OAF=0).
Примеры индикаторов использующих нейронную сеть:

BPNN Predictor.mq4 — предсказывает будущие цены. Входными параметрами сети являются относительные приращения цен:

где delay[i] берётся из ряда Фибоначи. Выходом сети является предсказываемое относительное приращение будущей цены. Фунцкия активации в выходном слое отключена.

Входными параметрами индикатора являются

extern int lastBar — номер последнего бара
extern int futBars — количество будущих предсказываемых баров
extern int numLayers — количество слоев в сети включая входной, скрытые и выходной
extern int numInputs — количество входов сети
extern int numNeurons1 — количество нейронов в слое №1
extern int numNeurons2 — количество нейронов в слое №2
extern int numNeurons3
extern int numNeurons4
extern int numNeurons5
extern int ntr — количество обучающих наборов входы-выходы
extern int nep — максимальное количество обучающих шагов (эпох)
extern int maxMSEpwr — экспонента используемая для расчёта максимальной допустимой среднеквадратической ошибки обучения maxMSE=10^maxMSEpwr
extern int AFT — тип функции активации (0-сигмоидальная, 1-гиперболический тангенс, 2-рациональная)

Индикатор выдаёт такую картинку, где

* красный цвет — предсказания от последней цены Open
* чёрный цвет — прошлые тренировочные цены Open, по котором (как ожидаемым выходным данным) проводилось обучение сети
* синий цвет — выходы обученной сети на тренировочных данных

BPNN Predictor with Smoothing.mq4 — тоже предсказывает цены, но с предварительным сглаживанием цен экспоненциальной скользящей средней (EMA) с периодом smoothPer.

1. Копируйте приложенный BPNN.DLL файл в C:\Program Files\MetaTrader 4\experts\libraries
2. Включайте использование DLL в метатрейдере: Tools — Options — Expert Advisors — Allow DLL imports

Если приложенный DLL файл не работает, то компилируйте сами. Все необходимые файлы содержатся в BPNN.zip.
Советы:

* Сеть с 3-ми слоями (numLayers=3: один входной, один скрытый и один выходной) достаточна для подавляющего большинства применений. По теоремe Cybenko (1989) сеть с одним скрытым слоем может моделировать любую непрерывную нелинейную фунцкию и сеть с двумя скрытыми слоями способна описать функцию с разрывами (http://en.wikipedia.org/wiki/Cybenko_theorem):

* Количество нейронов в скрытом слую определяйте экспериментально. В литературе встречаются такие рекомендации: кол-во скрытых нейронов = (кол-во входов + кол-во выходов)/2, либо SQRT(кол-во входов * кол-во выходов). Следите за сообщениями о среднеквадратичной ошибки обучения в окне experts метатрейдера.
* Для получения хорошего обобщения, количество обучающих выборок должно в 2-3 раза превышать количество оптимизируемых весов. Например, в опубликованных примерах, количество весов равно (12+1)*5 на входах скрытого слоя плюс (5+1) на входах выходоного слоя, т.е. 71. Поэтому количество обучающих выборок должно быть по крайней мере 142. Концепт обобщения объяснён на рисунке внизу для одномерного случая y(x).
* Увеличения количества обучающих эпох может не повысить точность предсказаний на тестируемых данных даже если ошибка обучения (MSE) уменьшилась. При большом количестве весов сеть становится переученной (см объяснения внизу).
* Входные данные должны преобразоваться в стационарный ряд. Цены сами по себе таковым рядом не являются. Рекомендуется также нормализовывать входные данные к диапазону -1..1.

На этом графике показана линейная функция y=b*x (x-вход, y-выход) с добавленным шумом к выходам. Из-за этого шума, измерения функции (чёрные точки) не лежат на прямой. Функция y=f(x) может быть смоделирована нейронной сетью. Сеть с большим количеством весов (степеней свободы) способна уменьшить ошибку обучения по всем имеюшимся измерениям до нуля и описать тренировочные выходные данные плавной кривой. Но эта кривая (показана красным цветом) не имеет ничего общего с нашей линейной фунцкией y=b*x (показана зелёным цветом). Использование такой сети для предсказания будущих значений функции y при новых входных значениях x приведёт к большим ошибкам так как шум не предсказуем.

BPNN Predictor — MT4

Форекс индикатор BPNN Predictor использует нейронную сеть прямого распространения (feedforward neural network), которая самообучается методом Обратного Распространения Ошибки (backpropagation). Сеть загружается через DLL файл.
Нейронная сеть — это ничто иное как нелинейная модель выходов как функция входов. На входы подаются данные задаваемые пользователем, например выборки временного ряда. Смысл выходных данных также задаётся пользователем, например сигналы 1=buy/0=sell. Структура сети опять же задаётся пользователем.

Сеть прямого распространения состоит из:
-входного слоя (input layer), элементами которого являются входные данные,
— скрытых слоёв (hidden layers), состоящих из вычислительных узлов называемых нейронами (neurons) и
— выходного слоя (output layer), который состоит из одного или нескольких нейронов, выходы которых являются выходами всей сети.

Все узлы соседних слоёв связаны между собой. Эти связи называются синапсами (synapses). Каждый синапс имеет вес (weight w[i,j,k]), на которой умножаются данные передаваемые по синапсу. Данные передвигается слева направа т.е. от входов сети к её выходам. Отсюда и название, «сеть прямого распространения».

Данные перерабатываются нейронами за два шага:
1. Все входы, помноженные на соответствующие веса, сначала суммируются
2. Затем получившиеся суммы обрабатываются функцией активации нейрона (activation or firing function) и посылаются на единственный выход.

Смысл функции активации нейрона заключается в моделировании работы нейрона мозга: нейрон срабатывает только после того как информация достигла определённого порога. В математическом аспекте, эта функция как раз и придаёт нелинейность сети. Без неё, нейронная сеть была бы линейной авторегрессионной моделью (linear prediction model). В прилагаемых библиотечных функциях возможен выбор трёх функций активации нейрона
* сигмоидальная функция sigm(x)=1/(1+exp(-x)) (#0)
* гиперболический тангенс tanh(x)=(1-exp(-2x))/(1+exp(-2x)) (#1)
* рациональная функция x/(1+|x|) (#2)

Порог активации этих функций равен 0. Этот порог может быть сдвинут по горизонтальной оси за счёт дополнительного входа нейрона называемом входом смещения (bias input), которому приписан определённый вес таким же образом как и к другим входам нейрона.

Таким образом, количество входов, слоев, нейронов в каждом слою и веса входов нейронов полностью определяют нейронную сеть, т.е. нелинейную модель, которую она создаёт. Чтобы пользоваться этой моделью необходимо знать веса. Веса вычисляются путём обучения сети на прошлых данных: на входы сети подаются нескольков наборов входных и соответствующих выходных данных и рассчитывается среднеквадратичная ошибка отклонения выхода сети от тестируемого. Цель обучения сети заключается в уменьшении этой ошибки путём оптимизации весов. Существуют несколько методов оптимизации, среди которых основными эвляются метод Обратного Распространения Ошибки (ОРО) и метод генетической оптимизации.

Библиотечный файл BPNN.cpp содержит две функции: Train() и Test(). Train() предназначен для обучения сети для предоставленных входных и выходных данных. Test() предназначен для вычисления выходных данных на основе весов полученных после прогона Train().

Входными (зелёный цвет) и выходными (синий цвет) параметрами функции Train() являются:
double inpTrain[] — обучивающие входные данные (старый первый)
double outTarget[] — обучивающие выходные данные (старый первый)
double outTrain[] — выходы сети после обучения
int ntr — количество обучающих наборов входы-выходы
int UEW — ключ управляющий использованием внешних значений для инициализации весов (1=используем extInitWt[], 0=используем случайные числа)
double extInitWt[] — исходные значения весов
double trainedWt[] — значения весов после обучения
int numLayers — количество слоев в сети включая входной, скрытые и выходной
int lSz[] — одомерный массив размера numLayers, в котором хранятся количества нейронов в каждом слою. lSz[0] задаёт количество входов сети
int AFT — тип функции активации (0-сигмоидальная, 1-гиперболический тангенс, 2-рациональная)
int OAF — ключ использования функции активации в выходны нейронах (1=используем функцию активации, 0=нет)
int nep — максимальное количество обучающих шагов (эпох). Эпоха состоит из проверки всех обучающих наборов.
double maxMSE — среднеквадратичная ошибка, при которой обучения останавливается.

Входными (зелёный цвет) и выходными (синий цвет) параметрами функции Test() являются:
double inpTest[] — входные данные (старый первый)
double outTest[] — выходные данные
int ntt — колчиство наборов в входных и выходных данных
double extInitWt[] — исходные значения весов
int numLayers — количество слоев в сети включая входной, скрытые и выходной
int lSz[] — одомерный массив размера numLayers, в котором хранятся количества нейронов в каждом слою. lSz[0] задаёт количество входов сети
int AFT — тип функции активации (0-сигмоидальная, 1-гиперболический тангенс, 2-рациональная)
int OAF — ключ использования функции активации в выходны нейронах (1=используем функцию активации, 0=нет)

Использование функции активации в выходных нейронах зависит от характера выходны данных. Если выходами сети являются биноминальные сигналы (0/1 или -1/1), то нужно использовать функцию активации (OAF=1). Причём учтите что для функции №0, уровни сигнала 0 и 1, а для функций №1 и 2 уровни -1 и 1. Если выходом сети является предсказание цены, то функция активации в выходном слое не нужна (OAF=0).
Примеры индикаторов использующих нейронную сеть:

BPNN Predictor.mq4 — предсказывает будущие цены. Входными параметрами сети являются относительные приращения цен:

где delay[i] берётся из ряда Фибоначи. Выходом сети является предсказываемое относительное приращение будущей цены. Фунцкия активации в выходном слое отключена.

Входные параметры индикатора BPNN Predictor:
extern int lastBar — номер последнего бара
extern int futBars — количество будущих предсказываемых баров
extern int numLayers — количество слоев в сети включая входной, скрытые и выходной
extern int numInputs — количество входов сети
extern int numNeurons1 — количество нейронов в слое №1
extern int numNeurons2 — количество нейронов в слое №2
extern int numNeurons3
extern int numNeurons4
extern int numNeurons5
extern int ntr — количество обучающих наборов входы-выходы
extern int nep — максимальное количество обучающих шагов (эпох)
extern int maxMSEpwr — экспонента используемая для расчёта максимальной допустимой среднеквадратической ошибки обучения maxMSE=10^maxMSEpwr
extern int AFT — тип функции активации (0-сигмоидальная, 1-гиперболический тангенс, 2-рациональная)

Индикатор выдаёт картинку, где:
* фиолетовый цвет — предсказания от последней цены Open
* чёрный цвет — прошлые тренировочные цены Open, по котором (как ожидаемым выходным данным) проводилось обучение сети
* синий цвет — выходы обученной сети на тренировочных данных

Ценовой прогноз с использованием нейронных сетей — индикатор для MetaTrader 4

Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.

Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.

Автор:

История версий:

06/26/2009 — добавлен новый индикатор BPNN Predictor со Smoothing.mq4, в котором цены сглаживались перед прогнозированием с использованием EMA.

08/20/2009 — в коде исправлен расчет функции активации нейронов, чтобы предотвратить арифметическое исключение; обновлены BPNN.cpp и BPNN.dll

08/21/2009 — добавлено очищение памяти после исполнения DLL; обновлены BPNN.cpp и BPNN.dll

Вкратце о теории нейронных сетей:

нейронные сети — регулируемая модель, в которой выход — это функция входа. Она состоит из нескольких уровней:

  • входной уровень, который содержит входные данные;
  • скрытый уровень, содержащий узлы обработки, которые и называются нейронами
  • выходной уровень, состоящий из одного или нескольких нейронов, выходные данные которых являются выходными данными всей сети.

Все узлы смежных уровней соединены между собой. Эти соединения называются синапсами. Каждый синапс имеет назначенный коэффициент, по которому данные, передающиеся через синапс, умножаются. Этот коэффициент называется весовым (w[i][j][k]). В нейронной сети прямого распространения (Feed-Forward Neural Network, FFNN) данные распространяются от входов к выходам. Здесь пример FFNN с одним входным слоем, одним выходным и двумя скрытыми слоями.

Топология FFNN часто сокращается следующим образом: <# входов> — <# нейронов в первом скрытом слое> — <# нейронов во втором скрытом слое> -. — <# выходов>. Сеть, изображенная выше, может быть обозначена как 4-3-3-1.

Данные обрабатываются нейронами в два этапа, соответственно обозначенные на рисунке знаками суммирования и ступеньки.

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

Это функция активации нейронов, которая дает нелинейность в модели нейронной сети. Без этого нет смысла в скрытых слоях, а сама нейронная сеть становится просто линейной авторегрессионной моделью.

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

  • сигмоид sigm(x)=1/(1+exp(-x)) (#0)
  • гиперболический тангенс tanh(x)=(1-exp(-2x))/(1+exp(-2x)) (#1)
  • рациональная функция x/(1+|x|) (#2)

Порог активации этих функций x=0. Этот порог может быть сдвинут вдоль оси X благодаря дополнительным входным параметрам каждого нейрона, так называемому входному смещению, которое также имеет собственный вес.

Количество входов, выходов, скрытых слоев, нейронов в них и значения весов синапсов полностью описывает FFNN, то есть, нелинейную модель, которую она создает. Чтобы найти значения весов, сеть необходимо обучить. Во время обучения с учителем в сеть поступают несколько наборов прошлых входных параметров и соответствующие им ожидаемые выходы. Веса оптимизированы для достижения наименьшей погрешности между ожидаемыми выходами и теми, что дала сеть. Простейший метод оптимизации весов — обратное распространение ошибок, которое представляет собой метод градиентного спуска. Прилагаемая сюда обучающая функция Train() использует вариант этого метода, называемый Improved Resilient back-Propagation Plus (iRProp+). Метод описан здесь:

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

Прилагаемые файлы:

  • BPNN.dll — файл библиотеки
  • BPNN.zip — архив всех файлов, необходимых, чтобы скомпилировать BPNN.dll в C++
  • BPNN Predictor.mq4 — индикатор, прогнозирующий будущие цены открытия
  • BPNN Predictor with Smoothing.mq4 — индикатор, прогнозирующий сглаженные цены открытия

Файл BPNN.cpp содержит две функции: Train() и Test(). Train() используется для обучения сети на основе полученных входных данных и ожидаемых выходных значений. Test() используется для вычисления выходов сети с использованием оптимизированных весов, найденных посредством функции Train().

Здесь список входных (зеленые) и выходных (синие) параметров Train():

double inpTrain[] — входные обучающие данные (одномерный массив, содержащий двухмерные данные, первыми идут те, что получены ранее)
double outTarget[] — выходные ожидаемые данные для обучения (двухмерные данные в одномерном массиве, первыми идут старейшие)
double outTrain[] — одномерный массив выходных данных, хранящий выходные данные сети, полученные в процессе обучения
int ntr — # наборов обучения
int UEW — Use Ext. Веса для инициализации (1=use extInitWt, 0=use rnd)
double extInitWt[] — одномерный массив входных параметров для хранения трехмерного массива внешних начальных весов
double trainedWt[] — Одномерный массив выходов для хранения трехмерного массива весов, полученных в процессе обучения
int numLayers — # слоев, включая входной, скрытые и выходной
int lSz[] — # нейронов в слоях. lSz[0] # входов сети
int AFT — тип функции активации нейронов
int OAF — 1 — разрешенная функция активации для выходного слоя i; 0 — запрещенная
int nep — Максимальное # эпох обучения
double maxMSE — Максимальное MSE; обучение останавливается в тот момент, когда однократно достигается maxMSE .

Здесь список входных (зеленых) и выходных (синих) параметров для функции Test():

double inpTest[] — входные параметры теста (двухмерные данные в одномерном массиве, старейшие идут вначале)
double outTest[] — Одномерный массив выходных параметров для сохранения выходных данных сети после обучения (старейшие идут вначале)
int ntt — # наборов в тестировании
double extInitWt[] — одномерный массив входов для сохранения трехмерного массива внешних начальных весов
int numLayers — # слоев, включая входной, скрытый и выходной
int lSz[] — # нейронов в слоях. lSz[0] # входов сети
int AFT — Тип функции активации нейронов (0:sigm, 1:tanh, 2:x/(1+x))
int OAF — 1 — разрешенная функция активации для выходного слоя; 0 — запрещенная

От того, используется ли функция активации в выходном слое (значение параметра OAF), зависит характер выходов. Если выходы бинарные, что часто встречается в случае решения проблем классификации, то функция активации должна использоваться в выходном слое (OAF=1). Пожалуйста, обратите внимание на то, что функция активации #0 (сигмоид) имеет уровни насыщения 0 и 1, а функции активации #1 and #2 — уровни насыщения -1 и 1. Если в выходах сети будут содержаться ценовые прогнозы, то в этом слое функция активации не нужна (OAF=0).

Примеры использования библиотеки нейронной сети:

BPNN Predictor.mq4 — прогнозы будущей цены открытия. Входы сети — относительные изменения цены:

где замедление[i] рассчитывается как число Фибоначчи (1,2,3,5,8,13,21..). Выход сети — спрогнозированное следующее относительное изменение цены. Функция активации в выходном слое выключена.

Входные параметры индикатора:

extern int lastBar — последний бар в прошлых данных
extern int futBars — # будущих баров для прогноза
extern int numLayers — # слоев, включая входной, скрытый и выходной(2..6)
extern int numInputs — # входов
extern int numNeurons1 — # нейронов в первом скрытом или выходном слое
extern int numNeurons2 — # нейронов во втором скрытом или выходном слое
extern int numNeurons3 — # нейронов в третьем скрытом или выходном слое
extern int numNeurons4 — # нейронов в четвертом скрытом или выходном слое
extern int numNeurons5 — # нейронов в пятом скрытом или выходном слое
\ extern int ntr — # наборов обучения
extern int nep — максимальное # эпох
extern int maxMSEpwr — наборы maxMSE=10^maxMSEpwr; обучение останавливается < maxMSE
extern int AFT — тип функции активации (0:sigm, 1:tanh, 2:x/(1+x))

ИНдикатор строит три кривых на графике:

  • красная — прогноз будущей цены
  • black color — прошлые цены открытия, которые во время обучения были использованы как ожидаемые выходы сети
  • blue color — выходы сети, полученные при обучении на заданных входных данных

BPNN Predictor.mq4 — спрогнозированные сглаженные будущие цены открытия Используется EMA-сглаживание с периодом smoothPer.

Общие настройки:

  1. Скопируйте приложенный файл BPNN.DLL в C:\Program Files\MetaTrader 4\experts\libraries
  2. В терминале: Tools — Options — Expert Advisors — Allow DLL imports

Также вы можете скомпилировать ваш собственный файл DLL с использованием исходного кода в BPNN.zip.

Рекомендации:

  • Сеть с тремя слоями (numLayers=3: один входной, один скрытый и один выходной) обычно достаточна в подавляющем большинстве случаев. В соответствии с теоремой Цыбенко, сеть с одним скрытым слоем способна аппроксимировать любую непрерывную многомерную функцию с любой желаемой степенью точности. Сеть с двумя скрытыми слоями способна аппроксимировать любую дискретную многомерную функцию.
  • Оптимальное количество нейронов в скрытом слое может быть найдено методом проб и ошибок. Следующие «правила большого пальца» можно найти в литературе: # скрытых нейронов = (# входов + # выходов)/2, или SQRT(# входов * # выходов). Отчет об ошибках обучения демонстрируется в специальном окне эксперта.
  • Для генерализации количество обучающих наборов должно быть в 2 — раз больше общей цифры весов в сети. К примеру, по умолчанию BPNN Predictor.mq4 использует сеть с параметрами 12-5-1. Общая сумма весов составляет (12+1)*5+6=71. Поэтому число обучающих наборов должно быть как минимум 142. Общее представление о генерализации и «меморизации» (переобучении) демонстрируется на графике ниже.
  • Входные данные в сети должны быть преобразованы в стационарные. Цены на Forex — не стационарные, а динамические. Также рекомендуется нормализовать входные параметры в диапазон -1 . +1.

Куда вложить в 2017 ! Роботы forex

На графике ниже показана линейная функция y=b*x (x-вход, y-выход), выходы которой искажены шумом. Этот добавленный шум приводит к тому, что функция измерения выходов (черные точки) отклоняется от прямой линии. Функция y=f(x) может быть модифицирована добавлением данных из нейронной сети. Сеть с большим количеством весов может исключить ошибки в измерении данных. Ее поведение показано на графике как красная кривая, проходящая через все черные точки. Тем не менее, эта красная линия не имеет ничего общего с оригинальной линейной функцией (зеленая линия). Когда эта нейронная сеть используется для прогнозирования будущих значений y(x), это приводит к крупным ошибкам из-за «рандомности» добавленного шума.

NeuroNirvamanEA. Нейронные сети в автоматической торговле на форекс.

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

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

А недавняя история о том, как боты на основе искусственного интеллекта в Фейсбук создали свой язык и начали на нем общаться между собой.

Вы думаете, только высокий мир инноваций и информационных технологий применяет способности машин к обучению?

Торгуй по крупному только с ведущим брокером

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

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

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

Особенностью NeuroNirvamanEA является тот факт, что он использует нейронную сеть не в качестве основы, а в качестве фильтра.

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

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

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

Установка советника NeuroNirvamanEA

Для применения торгового робота NeuroNirvamanEA вам потребуется произвести установку. Стоит заметить что советник NeuroNirvamanEA был создан в 2022 году, более того он библиотеке разработчиков МТ5 что позволяет нам его применять совершенно бесплатно.

Также из-за того что робот был помещен в библиотеку доступно два способа установки.

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

Затем следующим шагом вам потребуется переместиться в «Библиотеку» и выполнить простую сортировку, теперь в списке появятся только советники.

В отсортированном списке найдите NeuroNirvamanEA и с помощью дополнительного меню как это показано на изображении ниже произведите загрузку:

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

Индикаторы Форекс — Absolute Strengh Histogram | Подробный разбор

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

После установки советника обязательно произведите перезапуск торгового терминала, либо обновите его в панели навигатор, поскольку в противном случае робот не появится в списке советников.

Для того чтобы эксперт начал самостоятельную торговлю перетащите его название на график выбранной вами валютной пары.

Стратегия советника. Настройки

Как мы уже отмечали в самом начале статьи, советник NeuroNirvamanEA построен на трендовой стратегии с применение нейронной сети.

Так робот использует два индикатора, а именно Laguerre_PlusDi и SilverTrend_Signal. В качестве сигнального инструмента выступает SilverTrend_Signal, в то время как Laguerre_PlusDi служит лишь для подтверждения сигнала.

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

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

Так в переменной SilverTrend #1,2,3: RISK вы можете задать ключевой параметр для расчета данных индикатора SilverTrend Signal. Переменная Laguerre #1,2,3: Period позволяет изменять периоды индикатора Laguerre.

Переменные x11 и x12 отвечают за обучение нейросети. Переменные Take Profit и Stop Loss позволяют задавать профит и стоп приказ в пунктах для позиций.

Тестирование и оптимизация

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

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

Так в качестве эксперимента мы провели обучение нейронной сети советника за 2022 год на часовом тайм фрейме валютной пары Евро/Доллар. Результаты после обучения эксперта выглядят следующим образом:

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

Также представленный робот отлично подойдет трейдерам с небольшим капиталом, так как в роботе присутствует четкая фиксация рисков.

Предупреждение о рисках.

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

Нейронные индикаторы: NN TREND PREDICTOR + NN PATTERN RECOGNIZER V1.1

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

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

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

Лаборатория торговых роботов "NNEA" предлагает вам свою разработку: Nеural Nеtwork Trеnd Prеdictor — Нейросетевой индикатор распознавания ценовых фигур и прогнозирования направления тренда.

Прогнозирование поведения цены, рассчитывается с помощью полносвязной нейронной сети (feedforward neaural network), которая распознает ценовые фигуры и расчитывает вероятностный прогноз изменения цены.

Проверка качества настройки нейросети

Вопрос настройки — отдельная большая тема. В сложных ситуациях процесс может занимать часы и дни. Один из критериев качества настройки — способность сети распознавать данные, не участвующие в обучении. Для этого из обучающего набора извлекается «тестовое множество» (обычно 10-20%), которым периодически проверяется работоспособность сети. Отсюда же вытекает понятие «переобучения», когда тестовая ошибка начинает расти, хотя обучающая уменьшается. Такая ситуация говорит о том, что обучение надо прекратить и поменять исходные настройки и (или) состав данных.

Это полезно знать (финансовый ликбез)

Критерием работоспособности сети является для вас среднеквадратичная ошибка обучения. Ее можно характеризовать как «степень разброса» прогнозируемых данных. Точнее — вероятность выхода прогнозируемой величины за диапазон, заданный при настройке. Диапазон изменения — весьма существенный показатель, вне которого сеть не сможет функционировать корректно. Другой критерий работоспособности — статистическая повторяемость точности получаемых прогнозов, определяемая серией экспериментов в «реальном» режиме.

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

Фактически нейронная сеть обрабатывает все индикаторы и находит скрытые взаимосвязи между ними и данным значением цены, что и гарантирует нам правильное решение практически на 100%. Стоит указать особенность применения нейронных сетей в финансах. Она базируется на одном фундаментальном допущении: замене прогнозирования распознаванием. По большому счёту, нейросеть не предсказывает будущее, а «узнаёт» в текущем состоянии рынка ранее встречавшуюся ситуацию и воспроизводит последовавшую реакцию рынка. Конечно, сети не всесильны, поэтому забывать о фундаментальном анализе, который в некоторых ситуациях может сильно влиять на рынок — нельзя. Это говорит о том, что применять сеть в момент выхода «сильных» новостей не рекомендуется. Используя это нехитрое правило, можно рассчитывать на успех.

Создайте свою собственную нейронную сеть предсказатель легко (пример: МА и RSI Предсказатели) – индикатор для MetaTrader 4

Я просто переименованы несколько ВАР для того, чтобы легче читать код, и создал новый прокси-функцию.

Все кредиты должны пойти в gpwr за его много отличный источник.

Описание:

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

этот вопрос, который остался без ответа на все нейронная сеть связанных источников, Я решил ответить на него.

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

В конце кода, Вы найдете функцию:

двойной ПолучитьЗначение(INT I) <
вернуть(IMA(НОЛЬ,0,15,0,MODE_SMMA,PRICE_OPEN,Я));
>

Как показано, индикатор является скользящая средняя предсказатель. Просто замените индикатор Moving Average другим индикатором. Вы даже можете использовать iCustom() для того, чтобы получить прогнозы на ваших собственных показателей.

Например, если вы хотите RSI предсказатель:

двойной ПолучитьЗначение(INT I) <
вернуть(наследственный(НОЛЬ,0,14,PRICE_OPEN,Я));
>

Монтаж:

BPNN.DLL должны быть скопированы на экспертов / библиотеки / папки.

Необходимо настроить MT4 запрещать импорт (инструменты > опции > Советники > Проверьте “Разрешить импорт DLL”).

Показатели MT4 – Инструкции по загрузке

Создайте свою собственную нейронную сеть предсказатель легко (пример: МА и RSI Предсказатели) – индикатор для MetaTrader 4 является Метатрейдер 4 (MT4) индикатор и суть этого технического индикатора заключается в преобразовании накопленных данных по истории.

Создайте свою собственную нейронную сеть предсказатель легко (пример: МА и RSI Предсказатели) – индикатор для MetaTrader 4 предоставляет возможность обнаруживать различные особенности и закономерности в динамике цен, которые невидимы невооруженным глазом.

На основе этой информации, трейдеры могут взять на себя дальнейшее движение цен и соответствующим образом скорректировать свою стратегию. Нажмите здесь для MT4 Стратегии

Далее цена предсказатель с помощью нейронной сети – индикатор для MetaTrader 4

06/26/2009 – добавлен новый индикатор BPNN предсказателя с Smoothing.mq4, в котором цены сглаживаются с помощью EMA, прежде чем предсказания.

08/20/2009 – исправлен код вычисления функции активации нейрона чтобы предотвратить арифметическое исключение; обновлено BPNN.cpp и BPNN.dll

08/21/2009 – добавлена ​​Очистка памяти в конце исполнения DLL; обновлено BPNN.cpp и BPNN.dll

Краткая теория нейронных сетей:

Нейронная сеть является регулируемым модель выходов как функции входов. Он состоит из нескольких слои:

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

Все узлы соседних слоев соединены между собой. Эти соединения называются синапсы. Каждый синапс имеет назначенный коэффициент масштабирования, с помощью которой данные распространяются через синапс умножается. Эти масштабирования коэффициент называются весами (вес[Я][J][К]). В Прямоточной нейронной сеть (FFNN) данные распространяются от входов к выходам. Ниже приведен пример FFNN с одним входным слоем, один выходной слой и два скрытых слоев:

Показатели MT4 – Инструкции по загрузке

Далее цена предсказатель с помощью нейронной сети – индикатор для MetaTrader 4 является Метатрейдер 4 (MT4) индикатор и суть этого технического индикатора заключается в преобразовании накопленных данных по истории.

Далее цена предсказатель с помощью нейронной сети – индикатор для MetaTrader 4 предоставляет возможность обнаруживать различные особенности и закономерности в динамике цен, которые невидимы невооруженным глазом.

На основе этой информации, трейдеры могут взять на себя дальнейшее движение цен и соответствующим образом скорректировать свою стратегию. Нажмите здесь для MT4 Стратегии

Nexus 6.1 — индикатор бинарных опционов без перерисовки с использованием нейронной сети

Индикатор Nexus 6.1 и снова нейронные сети в торговле бинарными опционами. Маркетологи не угомонятся, и теперь в любом продукте вы можете найти знак «Нейронные сети». Теперь нам недостаточно того, что индикатор не перерисовывается и без промедления, нам все еще нужно, чтобы он мог адаптироваться к постоянно меняющемуся рынку. Но так ли это? Именно этот показатель будет обсуждаться в этом посте.

Основные характеристики Nexus 6.1

Платформа: MetaTrader4
Торгуемые пары: основные (мажоры);
Таймфрейм: M1;
Время: Лондонская и нью-йоркская сессии;
Срок действия: 5 минут;
Работает со знаком: 4, 5

Правила торговли

Индикатор Nexus 6.1 показывает стрелку, если все аналитические условия выполнены. И мы можем только следить за сигналом и размещать сделку на той же свече с истечением 5 минут. Это все!

Примеры торговых сигналов:

Хотя в стратегии есть 2 дополнительных индикатора NEXtrendH и WAextreme, об этом нет упоминания в руководстве. В видео. Также не заметно, что автор как-то использовал эти фильтры в торговле. Наверное, они лишние в этой стратегии. NEXtrendH — это вариация скользящей средней , показывающая общее направление тренда , которым можно пренебречь на минутном графике. Или его настройки следует выбирать в соответствии с таймфреймом M1. Кроме того, NEXtrendH очень сильно загружает терминал, и тот начинает сильно тормозить. WAextreme также неэффективен в применении к условиям торговли. Другие фильтры нужны здесь. Но это только мое мнение. Вы можете предложить свои решения в комментариях.

В руководстве автор дает 3 условия для более точных сигналов:

Состояние поддержки и сопротивления

Эти условия имеют более значимое значение, чем приведенные выше показатели-фильтры. Подробнее об этом читайте в руководстве пользователя. Там все подробно описано.

В этом видео вы можете увидеть пример реальной торговли на платформе IQ Option с использованием индикатора Nexus 6.1:

Нейронные сети

Автор предлагает простые правила управления капиталом :

Используйте 1, 2 мартингейл Шаг в случае, если вы потеряете свою сделку

Используйте от 1 до 10% от вашего общего баланса для торговли

Вы должны решить, что если вы потеряете 3, 4 сделки в день, то остановите торговлю на этот день

Не размещайте сделки до или после 15 минут новостей (см. Экономический календарь)

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

В архиве Nexus_6_1.rar (1,24 М):

Скачать бесплатно индикатор Nexus 6.1

Если вам понравился индикатор Nexus 6.1, поделитесь с друзьями, коллегами, знакомыми в соцсетях по кнопкам ниже.

Для скачивания файлов из этой категории необходима авторизация. Если вы не зарегистрированы — выполните регистрацию.

Traders //

Программистам MQL: подпишитесь на группу, чтобы получать уведомления о заказах.

Не забывайте указывать платформу: MT4 или MT5

Свыше 1000 заказов уже выполнено бесплатно!

** уровень должен быть 3 или выше, чтобы заказ был рассмотрен штатным программистом Стола (см. правила)

РЕКОМЕНДУЮ

Лучшее от Mtyvnel

BPNN — Предсказатель На Основе Самообучающейся Нейронной Сети

Здравствуйте. Прошу вас написать советника, в основе которого лежит индикатор BPNN ( на основе самообучающейся нейронной сети ). Вся статья про этот индикатор находиться здесь forex2.info/%D1%81%D0%B0%D0%BC%D0%BE%D0%BE%D0%B1%D1%83%D1%87%D0%B0%D1%8E%D1%89%D0%B8%D0%B5%D1%81%D1%8F-%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5-%D1%81%D0%B5%D1%82%D0%B8

* BPNN.dll — библиотечный файл
* BPNN.zip — архив всех файлов необходимых для создания ДЛЛ файла
* BPNN Predictor.mq4 — индикатор предсказывающий будущее значение цены
* BPNN Predictor with Smoothing.mq4 — индикатор предсказывающий будущее значение цены, сглаженной ЕМА

1. Копируйте приложенный BPNN.DLL файл в C:\Program Files\MetaTrader 4\experts\libraries
2. Включайте использование DLL в метатрейдере: Tools — Options — Expert Advisors — Allow DLL imports

Если приложенный DLL файл не работает, то компилируйте сами. Все необходимые файлы содержатся в BPNN.zip.

Все работает я тестировал нужно просто все необходимые файлы содержатся в BPNN.zip скопируйте в C:\Program Files\MetaTrader 4\experts\libraries

Сразу не удалось установить индикатор он перегрузил несколько раз метатрейдер!

1) Перенести все входные данные с индикатора в советник.

2) Покупка когда показывает красная линия, что идет цена верх, продажа когда красная линия показывает цена идет вниз.

3) Стоп лосс и тейк профит в пунктах.

4) Главное… Закрытие сделки по временному таймеру. Например через 1 минуту или 5 минут или 60 минут.

Лучшие Форекс брокеры 2021: