Индикаторы форекс Обсуждение, поиск и тестирование индикаторов для MT4.

Ответить
07.03.2010, 10:29
Аватар для Зелёный
Зелёный Зелёный вне форума Активный участник
Регистрация: 28.02.2010 / Адрес: Флорида / Сообщений: 164
Поблагодарили 197 раз(а) / Репутация: 201

По умолчанию Индикатор Predictor.

Нейросетевой индикатор. Предсказывает с опережением в 5 баров среднею цену. Установка: файл BPNN Predictor.mq4 размещаем в папку :\Program Files\МТ4\experts\indicators, файл BPNN.dll в папку :\Program Files\МТ4\experts\libraries
При присоединении индикатора к графику в свойствах разрешаем импорт dll.
10.03.2010, 15:45
Аватар для AndrZim
AndrZim AndrZim вне форума Новичок форума
Регистрация: 28.02.2010 / Сообщений: 127
Поблагодарили 17 раз(а) / Репутация: 17
Вы его использовали?
По какому алгоритму работает?
На сколько достоверно он предсказывает?
10.03.2010, 16:56
Аватар для Budulai
Budulai Budulai вне форума Активный участник
Регистрация: 27.02.2010 / Сообщений: 114
Поблагодарили 86 раз(а) / Репутация: 91
AndrZim ( сходите лучше к гадалке)
11.03.2010, 11:04
Аватар для Зелёный
Зелёный Зелёный вне форума Активный участник
Регистрация: 28.02.2010 / Адрес: Флорида / Сообщений: 164
Поблагодарили 197 раз(а) / Репутация: 201
Вы его использовали?
По какому алгоритму работает?
На сколько достоверно он предсказывает?
Добрый день, я его использую, но положительных результатов пока нет, всё в процессе изучения...

Вот немного материала по данной теме:
Описание теории:
Предлагается индикатор использующий нейронную сеть прямого распространения (feedforward neural network), которая самообучается методом Обратного Распространения Ошибки (backpropagation). Сеть загружается через DLL файл, исходный C++ код которого прилагается.

Нейронная сеть это ничто иное как нелинейная модель выходов как функция входов. На входы подаются данные задаваемые пользователем, например выборки временного ряда. Смысл выходных данных также задаётся пользователем, например сигналы 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), которому приписан определённый вес таким же образом как и к другим входам нейрона.

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

ru.wikipedia.org/wiki/Метод_обратного_распростра нения_ошибки

В прилагаемой функции Train() используется разновидонсть метода ОРО называемая "Улучшенный Эластичный метод ОРО" (Improved Resilient back-Propagation, IRProp). Этот алгоритм описан здесь

_http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.17.1332
CiteSeerX — Improving the Rprop Learning Algorithm

Прилагаемые файлы:
BPNN.dll - библиотечный файл
BPNN Predictor.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 - предсказывает будущие цены. Входными параметрами сети являются относительные приращения цен:

x[i]=Open[test_bar]/Open[test_bar+delay[i]]-1.0

где 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, по котором (как ожидаемым выходным данным) проводилось обучение сети
синий цвет - выходы обученной сети на тренировочных данных





Советы:
Сеть с 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 приведёт к большим ошибкам так как шум не предсказуем.


11.03.2010, 15:06
Аватар для AndrZim
AndrZim AndrZim вне форума Новичок форума
Регистрация: 28.02.2010 / Сообщений: 127
Поблагодарили 17 раз(а) / Репутация: 17
Сообщение от: Зелёный
Добрый день, я его использую, но положительных результатов пока нет, всё в процессе изучения...
А в сочетании с какими другими индикаторами вы его используете?
Для какого временного интервала он более годиться?
На минутных он бы хорошо наверно подошел.А на долгих периодах можно и вручную подсуетиться (надежнее было бы)
11.03.2010, 15:24
Аватар для Зелёный
Зелёный Зелёный вне форума Активный участник
Регистрация: 28.02.2010 / Адрес: Флорида / Сообщений: 164
Поблагодарили 197 раз(а) / Репутация: 201
А в сочетании с какими другими индикаторами вы его используете?
Для какого временного интервала он более годиться?
На минутных он бы хорошо наверно подошел.А на долгих периодах можно и вручную подсуетиться (надежнее было бы)
Я играюсь на тафреймах начиная от часовика и выше, на них и тестирую его, отдельно... На минутках не пробовал... у вас есть уже какие-то наработки? может советник есть? я какой-то нашёл, но пока ещё не тестил, если что-то интересное получится, обязательно выложу...
11.03.2010, 21:25
Аватар для AndrZim
AndrZim AndrZim вне форума Новичок форума
Регистрация: 28.02.2010 / Сообщений: 127
Поблагодарили 17 раз(а) / Репутация: 17
Сообщение от: Зелёный
Я играюсь на тафреймах начиная от часовика и выше, на них и тестирую его, отдельно... На минутках не пробовал... у вас есть уже какие-то наработки? может советник есть? я какой-то нашёл, но пока ещё не тестил, если что-то интересное получится, обязательно выложу...
Если надумаю использовать данный инструмент, обязательно тоже поделюсь результатами...
13.03.2010, 20:32
Аватар для machzelet
machzelet machzelet вне форума Почётный гражданин
Регистрация: 24.02.2010 / Адрес: Израиль / Сообщений: 405
Поблагодарили 440 раз(а) / Репутация: 449
Спасибо за индикатор. Потестирую на реале.
14.03.2010, 08:29
Аватар для Зелёный
Зелёный Зелёный вне форума Активный участник
Регистрация: 28.02.2010 / Адрес: Флорида / Сообщений: 164
Поблагодарили 197 раз(а) / Репутация: 201
Спасибо за индикатор. Потестирую на реале.
ну да, а почему бы и нет , если в сторону основного тренда, то можно всё тестировать на реале!
15.03.2010, 10:28
Аватар для machzelet
machzelet machzelet вне форума Почётный гражданин
Регистрация: 24.02.2010 / Адрес: Израиль / Сообщений: 405
Поблагодарили 440 раз(а) / Репутация: 449
Не понравилась его работа с первых минут. Продержал его два дня и удалил нафиг.
11.07.2010, 19:40
Аватар для mersedes
mersedes mersedes вне форума Активный участник
Регистрация: 22.02.2010 / Сообщений: 180
Поблагодарили 44 раз(а) / Репутация: 39
да тестировал плохой индикатор одни лоси!
12.07.2010, 11:04
Аватар для NeonoW
NeonoW NeonoW вне форума Заблокирован
Регистрация: 24.06.2010 / Сообщений: 36
Поблагодарили 26 раз(а) / Репутация: 13
ну может переделать\улучшить надо .... что прям сразу лоси ...
13.07.2010, 01:22
Аватар для A1ex
A1ex A1ex вне форума ~~~~~
Регистрация: 17.01.2009 / Сообщений: 6,662
Поблагодарили 9,279 раз(а) / Репутация: 9284
  • Отправить сообщение для A1ex с помощью ICQ
Полный комплект _http://codebase.mql4.com/ru/5704
18.08.2010, 22:34
Аватар для senj
senj senj вне форума Местный житель
Регистрация: 17.09.2008 / Сообщений: 1
Поблагодарили 0 раз(а) / Репутация: 1
да тестировал плохой индикатор одни лоси!
а ты попробуй в другую сторону открывать позиции.
30.08.2010, 19:55
Аватар для pilip
pilip pilip вне форума Активный участник
Регистрация: 08.10.2009 / Сообщений: 12
Поблагодарили 5 раз(а) / Репутация: 5
на каждом баре перерисовывает, потаму и картинки красивые
31.08.2010, 23:33
Аватар для Maxfors
Maxfors Maxfors вне форума Местный житель
Регистрация: 12.12.2009 / Сообщений: 738
Поблагодарили 153 раз(а) / Репутация: 157
я по нему три дня торговал на м15 не мог нарадоваться, а после выходных как начал он брехать, падла не впопад показывает. Не знаю че и думать((
Торгую как умею)
26.07.2012, 23:23
Аватар для panca
panca panca вне форума Активный участник
Регистрация: 21.07.2012 / Сообщений: 108
Поблагодарили 73 раз(а) / Репутация: 74
по теории он обучаться должен
Ответить


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Planet Predictor- это, прогнозирующий, Астро-индикатор NEKSUS Индикаторы 16 20.03.2012 04:14
Neural Network Trend Predictor Maxfors Индикаторы форекс 0 29.08.2010 13:26
4X-PREDICTOR-M A1ex Индикаторы форекс 21 28.07.2010 08:01
Торговый эксперт 4X-PREDICTOR mageric Индикаторы форекс 11 06.11.2009 12:17


Текущее время: 09:41. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO