Имя пользователя:

Пароль:



Разработка советника на основе нейросетевого фильтра

Разработка советника на основе нейросетевого фильтра

Номер сообщения:#1  Непрочитанное сообщение coder-ex » 25 сен 2012, 13:09

Kordan
Предлагаю создать отдельную ветку по разработке советника на основе нейросетевого фильтра.

Для изучения данного вопроса написал код советника на простом индикаторе MACD и прикрутил к нему нейросетевой фильтр.
В советнике применяется внешняя библиотека созданная для нейро сетей FANN. Она значительно упрощает задачу т.к. нет необходимости самому создавать массивы нейросетей, библиотека под это заточена и сама создает все необходимое.
Для начала работы необходимо установить библиотеку FANN, ставьте в любое место, из нее заберите файлы и поместите в соответствующие каталоги где установлен MT4, а именно каталоги с файлами ..include и ..libraries, каталог ..src это исходники библиотек кому интересно.
Т.к. используются внешние библиотеки, то в терминале MT4 поставьте галки на разрещшение .dll.
Сам советник пробный, работает на сигналах MACD, к нему прикручен нейро сетевой фильтр и еще несколько ненужных функций :) это мой первй советник поэтому поизголялся как положено.
Для запуска советника необходимо создать каталог \ANN и исправить путь в начале кода советника.
Что бы отключить нейросетевой фильтр, нужно перевести параметр NeuroFilter и SaveAnn в false и параметр AnnsNumber обнулить. В таком режиме нужно оптимизировать самого советника.
В кратце по нейросетевому фильтру. Фильтр состояит из четырех сетей - входная, 2 скрытых и выходная. За размерность в массивах не отвечаю, ставил как в статье, поэтому не в курсе какие параметры лучше, а какие хуже. Так же предупреждение для тех кто захочет поставить на реал-счет - не рекомендую, т.к. связи между нейронами использовались от балды!!! самим автором, и мной как последователем.
Что бы применить фильтр нужно сперва создать нейросети. Для этого необходимо выставить параметр AnnsNumber и параметр SaveAnn перевести в состояние true. Прогнать на тестере за определенный период, после чего сеть будет создана. Появятся файлы массивов сети в каталоге \ANN.
Что бы применить фильтр нужно перевести NeuroFilter в состояние true, параметр SaveAnn перевести в состояние false. AnnsNumber оставить с ранее выставленным числом и протестировать за тот же период советник. Каждый проход будет давать разные результаты, это значит идет процесс накачивания нейросети результатами. В процессе теста на демосчете, я оставляю параметр AnnsNumber в положении true, накопленные за сутки данные ввожу в массив сети путем открытия конфигуратора советника в МТ и подтверждением его кнопкой ОК. Таким образом функция записи накопленного массива инициируется и нейросеть пополняется новыми данными. Чем их больше тем говорят качественнее работает фильтр.

Советник строился на основе следующих материалов:
http://articles.mql4.com/ru/876
http://www.neuroproject.ru/hilbert.htm
http://forum.mql4.com/ru/27990

За сам код советника сильно не пинайте, это мой первый советник, в него я надергал из других советников кучу разных функций.
Когда ставил задачу написать код советника, то ставилась прежде всего задача использования S/L и T/P. В дальнейшем хочу написать советника используя в качестве сигналов на открытие сделки отбой от границ канала на МА и используя дополнительные фильтры на основе Индикатора Ишимоку и трех МА, как в торговой стратегии Ширяева. И используя массив сигналов этого набора индикаторов применить нейросетевой фильтр. Не знаю что из этого получится, но думаю хуже не должно быть :)

В дальнейшем стоит обратить внимание на статью http://forum.alpari.ru/showthread.php?t=68456 где описывается в общих чертах стратегия работы советника maximus. Тратить деньги на платный maximus не стоит, т.к. не известна устойчивость нейросетевого анализа на работу на Forex. Кстати если прочитать всю ветку до конца про этого советника, то он имеет точно такие же проблемы как и все советники - если зарабатывает во флете, то на движениях сливает, если зарабатывает на движениях, то на флете сливает. Вот одна из цитат по maximus v12:
Скрытый текст: показать
Этот советник хорошо работает на относительном флете. При сильном длительном тренде (как в последнее время по евро) просто не успевает в нужной мере компенсировать минусовые сделки, открытые против тренда, вплоть до слива. Как вариант, как предложил один из форумчан, можно существенно увеличить риски в ММ, НО, если тренд сильно развернется и цена вернется в исходную точку, можете получить ту же ситуацию, что и в начале.
В общем, торговать с ним на полном автомате опасно и новичкам, и искателям граалей он абсолютно не подходит.


У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось Anonymous 25 сен 2012, 15:23, всего редактировалось 5 раз(а).
Си — это причудливый, несовершенный, но невероятно успешный язык.
— Dennis M. Ritchie.
Аватар пользователя
coder-ex
.
.
      Автор темы
Сообщений: 849
Возраст: 47
Зарегистрирован: 14 месяцев и 28 дней
Откуда: Томск
Национальный флаг:
Russia
Благодарил (а): 10 раз.
Поблагодарили: 21 раз.
Имя: Константин
Пункты репутации: 2
Ученик трейдера

Разработка советника на основе нейросетевого фильтра

Номер сообщения:#2  Непрочитанное сообщение Hell-Hound » 25 сен 2012, 13:18

Kisa

читать дальше »
Kisa писал(а):

Kordan
Предлагаю создать отдельную ветку по разработке советника на основе нейросетевого фильтра.

Для изучения данного вопроса написал код советника на простом индикаторе MACD и прикрутил к нему нейросетевой фильтр.
В советнике применяется внешняя библиотека созданная для нейро сетей FANN. Она значительно упрощает задачу т.к. нет необходимости самому создавать массивы нейросетей, библиотека под это заточена и сама создает все необходимое.
Для начала работы необходимо установить библиотеку FANN, ставьте в любое место, из нее заберите файлы и поместите в соответствующие каталоги где установлен MT4, а именно каталоги с файлами ..include и ..libraries, каталог ..src это исходники библиотек кому интересно.
Т.к. используются внешние библиотеки, то в терминале MT4 поставьте галки на разрещшение .dll.
Сам советник пробный, работает на сигналах MACD, к нему прикручен нейро сетевой фильтр и еще несколько ненужных функций :) это мой первй советник поэтому поизголялся как положено.
Советник строился на основе следующих материалов:
http://articles.mql4.com/ru/876
http://www.neuroproject.ru/hilbert.htm
http://forum.mql4.com/ru/27990

В дальнейшем стоит обратить внимание на статью http://forum.alpari.ru/showthread.php?t=68456 где описывается в общих чертах стратегия работы советника maximus. Тратить деньги на платный maximus не стоит, т.к. не известна устойчивость нейросетевого анализа на работу на Forex.

Очень радует, что этим тут занимаются. Сам ищу данные по нейросетям.
Забрал на тест. Отпишусь позже.
Аватар пользователя
Hell-Hound
.
.
Сообщений: 118
Возраст: 32
Зарегистрирован: 62 месяцев и 17 дней
Откуда: Новоуральск
Благодарил (а): 79 раз.
Поблагодарили: 29 раз.
Имя: Владимир
Пункты репутации: 0

Разработка советника на основе нейросетевого фильтра

Номер сообщения:#3  Непрочитанное сообщение coder-ex » 25 сен 2012, 14:59

Hell-Hound

Хотелось бы конечно, что бы народ подключился в разработку самого нейросетевого фильтра. Там есть куча вопросов:
1. Какие использовать данные для сетей
2. Какие использовать связи между нейронами
3. Какие параметры лучше использовать для нейросетей AnnInputs и AnnsNumber
4. Сколько использовать слоев сетей.

Вот когда будет статистика, тогда можно будет уже применять его в торговле. А пока я не увидел реальной пользы от него, но это и понятно, т.к. советник должен периодически обучаться, как пишет автор maximus`a нужно минимум 50 сделок по каждому направлению. Т.е. после каждой сделки данные по ней записываются в массив нейросети с увеличением веса связи нейронов если профит >=0

Скрытый текст: показать
else
{
OrderSelect (LongTicket, MODE_HISTORY);
if (OrderCloseTime () !=0)
{
ShortTicket = -1;
if (OrderProfit () >= 0)
{
train_output[0] = 1;
}
else
{
train_output[0] = -1;
}
for (i = 0; i < AnnsNumber; i += 2)
{
ann_train (AnnsArray[i], LongInput, train_output);
}
}
}

Это участок кода отвечающий за Buy позиции, точно так же разруливается по Sell позициям.
Кстати в том же maximus v11 используют 12 нейросетей (слоев) и 12 баз данных под них. Там сеть заполняется как я понял закрытыми сделками, в принципе то же самое, что и в представленном варианте, но вот что используют для связи между нейронами сети я не не понял.
Си — это причудливый, несовершенный, но невероятно успешный язык.
— Dennis M. Ritchie.
Аватар пользователя
coder-ex
.
.
      Автор темы
Сообщений: 849
Возраст: 47
Зарегистрирован: 14 месяцев и 28 дней
Откуда: Томск
Национальный флаг:
Russia
Благодарил (а): 10 раз.
Поблагодарили: 21 раз.
Имя: Константин
Пункты репутации: 2
Ученик трейдера

Разработка советника на основе нейросетевого фильтра

Номер сообщения:#4  Непрочитанное сообщение coder-ex » 25 сен 2012, 18:58

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

По п. 1 думаю использовать следующее: подавать на входы не значения индикаторов, а сигналы, сформированые при определенных показаниях как отдельных, так и групп индикаторов. А а на выход все что угодно, от значений будущих **** цены, до профита ордеров по этим сигналам, что в принципе одно и то же.
По п. 2 вроде нашел, что используется у меня в советнике:
Скрытый текст: показать
f2M_randomize_weights (struct fann *ann,
fann_type min_weight,
fann_type max_weight)

Дает каждой связи случайный вес между min_weight и max_weight, по умолчанию веса случайны между -0.1 и 0.1.

А можно использовать эту функцию:
Скрытый текст: показать
f2M_init_weights (struct fann *ann,
struct fann_train_data *train_data)
Инициализируйте использование весов Widrow + алгоритм Нгуена.
Эта функция ведет себя так же как randomize_weights. Это будет использовать алгоритм, развитый Дерриком Нгуеном и Бернардом Видроу, чтобы установить веса таким способом, чтобы ускорить обучение. Эта техника не всегда успешна, и в некоторых случаях может быть менее эффективной, чем чисто случайная инициализация.
Алгоритм требует доступа к диапазону входных данных (то есть, самый большой и самый маленький вход), и поэтому принимает второй аргумент, данные, которые являются учебными данными, которые будут использоваться, чтобы обучать сеть.

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

Для справки. В советнике используется нейросеть стандартная полносвязная обратного распространения:
Скрытый текст: показать
В многослойных нейронных сетях нейроны объединяются в слои. Слой содержит совокупность нейронов с едиными входными сигналами. Число нейронов в слое может быть любым и не зависит от количества нейронов в других слоях. В общем случае сеть состоит из Q слоев, пронумерованных слева направо. Внешние входные сигналы подаются на входы нейронов входного слоя (его часто нумеруют как нулевой), а выходами сети являются выходные сигналы последнего слоя. Кроме входного и выходного слоев в многослойной нейронной сети есть один или несколько скрытых слоев. Связи от выходов нейронов некоторого слоя q к входам нейронов следующего слоя ( q +1) называются последовательными.

В свою очередь, среди многослойных нейронных сетей выделяют следующие типы:
Скрытый текст: показать
Сети с обратными связями. В сетях с обратными связями информация с последующих слоев передается на предыдущие. Среди них, в свою очередь, выделяют следующие:
• слоисто-циклические, отличающиеся тем, что слои замкнуты в кольцо: последний слой передает свои выходные сигналы первому; все слои равноправны и могут как получать входные сигналы, так и выдавать выходные;
• слоисто-полносвязанные состоят из слоев, каждый из которых представляет собой полносвязную сеть, а сигналы передаются как от слоя к слою, так и внутри слоя; в каждом слое цикл работы распадается на три части: прием сигналов с предыдущего слоя, обмен сигналами внутри слоя, выработка выходного сигнала и передача к последующему слою;
• полносвязанно-слоистые, по своей структуре аналогичные слоисто-полносвязанным, но функционирующим по-другому: в них не разделяются фазы обмена внутри слоя и передачи следующему, на каждом такте нейроны всех слоев принимают сигналы от нейронов как своего слоя, так и последующих.
Си — это причудливый, несовершенный, но невероятно успешный язык.
— Dennis M. Ritchie.
Аватар пользователя
coder-ex
.
.
      Автор темы
Сообщений: 849
Возраст: 47
Зарегистрирован: 14 месяцев и 28 дней
Откуда: Томск
Национальный флаг:
Russia
Благодарил (а): 10 раз.
Поблагодарили: 21 раз.
Имя: Константин
Пункты репутации: 2
Ученик трейдера

Разработка советника на основе нейросетевого фильтра

Номер сообщения:#5  Непрочитанное сообщение Virexes » 26 сен 2012, 02:04

Kisa писал(а):

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

Для начала было бы неплохо создать отдельную ветку и выложить туда полезную инфу (желательно с азов), чтобы заинтересованные люди могли въехать в тему, а потом уже пойдет конструктивное обсуждение...
Аватар пользователя
Virexes


Разработка советника на основе нейросетевого фильтра

Номер сообщения:#6  Непрочитанное сообщение coder-ex » 26 сен 2012, 03:05

Virexes писал(а):

Kisa писал(а):

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

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


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

По теме, осталось все таки определиться с типом используемой архитектуры сети. Для примера в maximus использована нейронная сеть с архитектурой Кохонена.
Скрытый текст: показать
Сети Кохонена (Саморганизующейся Картой Кохонена). Сетям этого типа в процессе обучения не нужен "учитель", т.е. в процессе тренировки не требуется сообщать сети правильный ответ при предъявлении примера. Эти сети способны находить распределение данных на различные категории (классы).
В моем советнике использована нейронная сеть с архитектурой - сеть стандартная полносвязная обратного распространения ошибки.
Сети рекомендуемые для предсказаний - сети Ворда, относятся к сетям стандартная полносвязная обратного распространения ошибки.
Скрытый текст: показать
Сети Ворда способны выделять различные свойства в данных, благодаря наличию в скрытом слое нескольких блоков, каждый из которых имеет свою передаточную функцию. Передаточные функции (обычно сигмоидного типа) служат для преобразования внутренней активности нейрона. Когда в разных блоках скрытого слоя используются разные передаточные функции, нейросеть оказывается способной выявлять новые свойства в предъявляемом образе.

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

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

Кстати если я правильно понял, то FANN библиотека работает только со стандартным типом сетей. В нете пишут вроде, что правят исходники в FANN, но я на С++ не умею работать. Поэтому задумываюсь над отказом от внешней библиотеки и пероходе на NeuroShell. вот сайт разработчика http://www.neuroproject.ru/ Там можно создавать все упомянутые выше сети и там же их тренировать (учить). Созданные сетевые файлы можно применить уже в коде советника. Пример этому есть тут http://ruforum.mt5.com/threads/5158-ney ... -sovetnike пользователь Newbile дает хорошие примеры без использования внешних библиотек.
Си — это причудливый, несовершенный, но невероятно успешный язык.
— Dennis M. Ritchie.
Аватар пользователя
coder-ex
.
.
      Автор темы
Сообщений: 849
Возраст: 47
Зарегистрирован: 14 месяцев и 28 дней
Откуда: Томск
Национальный флаг:
Russia
Благодарил (а): 10 раз.
Поблагодарили: 21 раз.
Имя: Константин
Пункты репутации: 2
Ученик трейдера

Разработка советника на основе нейросетевого фильтра

Номер сообщения:#7  Непрочитанное сообщение Pyyx » 27 сен 2012, 11:41

Это моя первая попытка создания советника на основе нейросетевого фильтра. Но толку от него так и не добился, скорее всего неправильно подготовил массив обучающих данных.
Для обязательной работы нужно создать каталог C:\\ANN\\ , и установить библиотеку Fann2MQL_0.1.3.msi.
Все описания переменных и комментарии к функциям найдёте в коде советника.

Kisa, насколько я знаю, программа NeuroShell всегда была платной, или я что то упустил?
:? :? :?

У вас нет доступа для просмотра вложений в этом сообщении.
Правильного выбора в реальности не существует — есть только сделанный выбор и его последствия.

Разработка советника на основе нейросетевого фильтра
Аватар пользователя
Pyyx
.
.
Сообщений: 950
Возраст: 36
Зарегистрирован: 63 месяцев и 5 дней
Откуда: Планета Земля
Национальный флаг:
Belarus
Благодарил (а): 331 раз.
Поблагодарили: 545 раз.
Имя: Сергей
Пункты репутации: 21
Молодой трейдерМолодой трейдерМолодой трейдер

Разработка советника на основе нейросетевого фильтра

Номер сообщения:#8  Непрочитанное сообщение coder-ex » 27 сен 2012, 13:25

Pyyx
Что бы понять на сколько нейросеть будет себя оправдывать, нужно ее прикрутить к реально работающему советнику по действующей торговой системе. Поэтому я и приступил к написанию своего советника по торговой системе расчтитанной на торговлю внутри дня по реально работающей торговой системе. Т.к. пока из имеющихся советников не могу уловить как использовать с ними нейросети.
Выложенный мной образец советника показывающего принцип работы нейросетей предназначен для наглядности и понимания их на начальном этапе.
Какую архитектуру нейронных сетей я буду использовать пока не решил. Но склоняюсь к выбору одной из двух - архитектурой Кохонена и Сеть стандартная полносвязная обратного распространения ошибки.
Если выберу первый тип сети, то тогда откажусь от FANN библиотеки т.к. она этот тип сетей не поддерживает, а править исходники я не умею, не знаю С++.
Если выберу второй тип сети, тогда если найду ключ к NeuroShell 2 тоже откажусь от FANN т.к. на NeuroShell 2 удобнее обучать сеть, а если не найду ключь то придется делать на используя FANN.

Теперь просьба к вам и ко всем.
Если торговая система используемая в выкладываемом советнике сама по себе не рабочая, то не нужно выкладывать созданные на такой торговой системе советники и тем более делать какие то выводы о нейросетях. Эта тема изучается, для этого эта ветка и создана. Если мы сюда будем постить не работающие и однотипные советники то ветка превратится в мусорную корзину и потом сами запутаемся в ней.
Си — это причудливый, несовершенный, но невероятно успешный язык.
— Dennis M. Ritchie.
Аватар пользователя
coder-ex
.
.
      Автор темы
Сообщений: 849
Возраст: 47
Зарегистрирован: 14 месяцев и 28 дней
Откуда: Томск
Национальный флаг:
Russia
Благодарил (а): 10 раз.
Поблагодарили: 21 раз.
Имя: Константин
Пункты репутации: 2
Ученик трейдера

Разработка советника на основе нейросетевого фильтра

Номер сообщения:#9  Непрочитанное сообщение Pyyx » 27 сен 2012, 14:10

Kisa писал(а):

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


Kisa, выкладывая свою разработку, я хотел продемонстрировать тебе, как я реализовывал алгоритмы работы с библиотекой FANN. В общем для примера, ну если ты так резко реагируем на помощь, то я могу и помолчать, посмотрим что у тебя получится.
:P :P :P
Правильного выбора в реальности не существует — есть только сделанный выбор и его последствия.

Разработка советника на основе нейросетевого фильтра
Аватар пользователя
Pyyx
.
.
Сообщений: 950
Возраст: 36
Зарегистрирован: 63 месяцев и 5 дней
Откуда: Планета Земля
Национальный флаг:
Belarus
Благодарил (а): 331 раз.
Поблагодарили: 545 раз.
Имя: Сергей
Пункты репутации: 21
Молодой трейдерМолодой трейдерМолодой трейдер

Разработка советника на основе нейросетевого фильтра

Номер сообщения:#10  Непрочитанное сообщение coder-ex » 27 сен 2012, 16:25

Pyyx писал(а):

Kisa писал(а):

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


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


Я не хотел кого то оскорбить своей просьбой, на то она и просьба. Просто хотелось бы тут конструктива именно по теме.
По способам реализации работы с библиотекой FANN конечно дельная мысль, но я уже кое что стал понимать в самой библиоетеке и ни чего нового в реализации я не нашел т.к. нет пояснений от вас. К тому же параметры подобраны с очень большими величинами, для нейросетей такой архитектуры уж точно. Опять же вопрос, зачем столько входов используете, с какой целью? Если уж и выкладывать образец, то необходимо расписать все подробно или сослаться на источнии. Тема то ведь все таки исследовательская.
Си — это причудливый, несовершенный, но невероятно успешный язык.
— Dennis M. Ritchie.
Аватар пользователя
coder-ex
.
.
      Автор темы
Сообщений: 849
Возраст: 47
Зарегистрирован: 14 месяцев и 28 дней
Откуда: Томск
Национальный флаг:
Russia
Благодарил (а): 10 раз.
Поблагодарили: 21 раз.
Имя: Константин
Пункты репутации: 2
Ученик трейдера

Разработка советника на основе нейросетевого фильтра

Номер сообщения:#11  Непрочитанное сообщение Pyyx » 01 окт 2012, 16:12

Kisa писал(а):

Тема то ведь все таки исследовательская.


Вот поэтому я и выложил данный советник, и не нужно было грубить.
А если пояснений в коде маловато для понимания, то просто спросить.
Теперь объясняю, в чём была задумка:
- взять десять индикаторов пять трендовых и пять осцилляторов, преобразовать и записать их показания за десять периодов, в набор 1 0 -1, затем всунуть это всё в двести нейросетей (сто на BUY и сто на SELL), и посмотреть какие закономерности вылезут с сети ( в качестве учителя был создан отдельный массив в который были занесены значения изменения цены на 5 пунктов).
И по прошествии нескольких тренировок на периоде с 2007 по 2012 данный алгоритм мне выдал зависимость, 80% цена двигалась в низ, а 20% вверх. И как я не пытался чего-то еще добиться от данного алгоритма, так не чего и не получилось.
Правильного выбора в реальности не существует — есть только сделанный выбор и его последствия.

Разработка советника на основе нейросетевого фильтра
Аватар пользователя
Pyyx
.
.
Сообщений: 950
Возраст: 36
Зарегистрирован: 63 месяцев и 5 дней
Откуда: Планета Земля
Национальный флаг:
Belarus
Благодарил (а): 331 раз.
Поблагодарили: 545 раз.
Имя: Сергей
Пункты репутации: 21
Молодой трейдерМолодой трейдерМолодой трейдер

Разработка советника на основе нейросетевого фильтра

Номер сообщения:#12  Непрочитанное сообщение coder-ex » 01 окт 2012, 16:27

Pyyx писал(а):

Kisa писал(а):

Тема то ведь все таки исследовательская.


Вот поэтому я и выложил данный советник, и не нужно было грубить.
А если пояснений в коде маловато для понимания, то просто спросить.
Теперь объясняю, в чём была задумка:
- взять десять индикаторов пять трендовых и пять осцилляторов, преобразовать и записать их показания за десять периодов, в набор 1 0 -1, затем всунуть это всё в двести нейросетей (сто на BUY и сто на SELL), и посмотреть какие закономерности вылезут с сети ( в качестве учителя был создан отдельный массив в который были занесены значения изменения цены на 5 пунктов).
И по прошествии нескольких тренировок на периоде с 2007 по 2012 данный алгоритм мне выдал зависимость, 80% цена двигалась в низ, а 20% вверх. И как я не пытался чего-то еще добиться от данного алгоритма, так не чего и не получилось.


Все правильно, так добиться ни чего нельзя от нейро сетей такой архитектуры. К тому же количество нейросетей роли не играет. Если нужно посмотреть зависимости, то более близка тут архитектура сетей Коханена. В этом случае достаточно создать количество нейросетей равное количеству исследовательских сигналов, не более. "Доктор" в данной стратегии не нужен, сеть Кохонена сама систематезирует зависимости. В общем как обычно первый блин комом у всех получается :)
Нужно найти где то ключ для NeuroShell 2, тогда будет проще все создавать и обучать.
Си — это причудливый, несовершенный, но невероятно успешный язык.
— Dennis M. Ritchie.
Аватар пользователя
coder-ex
.
.
      Автор темы
Сообщений: 849
Возраст: 47
Зарегистрирован: 14 месяцев и 28 дней
Откуда: Томск
Национальный флаг:
Russia
Благодарил (а): 10 раз.
Поблагодарили: 21 раз.
Имя: Константин
Пункты репутации: 2
Ученик трейдера

Разработка советника на основе нейросетевого фильтра

Номер сообщения:#13  Непрочитанное сообщение Pyyx » 01 окт 2012, 16:55

Kisa писал(а):

Все правильно, так добиться ни чего нельзя от нейро сетей такой архитектуры. К тому же количество нейросетей роли не играет. Если нужно посмотреть зависимости, то более близка тут архитектура сетей Коханена. В этом случае достаточно создать количество нейросетей равное количеству исследовательских сигналов, не более. "Доктор" в данной стратегии не нужен, сеть Кохонена сама систематезирует зависимости. В общем как обычно первый блин комом у всех получается :)
Нужно найти где то ключ для NeuroShell 2, тогда будет проще все создавать и обучать.


Я уже год ищу ключик или патч, но далеко так и не продвинулся. Людям жалко выкладывать то, что они приобрели за 900$. Ведь если всплывает лишний зарегистрированный ключик, то блокируется и оригинальная программа.
Правильного выбора в реальности не существует — есть только сделанный выбор и его последствия.

Разработка советника на основе нейросетевого фильтра
Аватар пользователя
Pyyx
.
.
Сообщений: 950
Возраст: 36
Зарегистрирован: 63 месяцев и 5 дней
Откуда: Планета Земля
Национальный флаг:
Belarus
Благодарил (а): 331 раз.
Поблагодарили: 545 раз.
Имя: Сергей
Пункты репутации: 21
Молодой трейдерМолодой трейдерМолодой трейдер

Разработка советника на основе нейросетевого фильтра

Номер сообщения:#14  Непрочитанное сообщение coder-ex » 01 окт 2012, 18:01

Pyyx писал(а):

Kisa писал(а):

Все правильно, так добиться ни чего нельзя от нейро сетей такой архитектуры. К тому же количество нейросетей роли не играет. Если нужно посмотреть зависимости, то более близка тут архитектура сетей Коханена. В этом случае достаточно создать количество нейросетей равное количеству исследовательских сигналов, не более. "Доктор" в данной стратегии не нужен, сеть Кохонена сама систематезирует зависимости. В общем как обычно первый блин комом у всех получается :)
Нужно найти где то ключ для NeuroShell 2, тогда будет проще все создавать и обучать.


Я уже год ищу ключик или патч, но далеко так и не продвинулся. Людям жалко выкладывать то, что они приобрели за 900$. Ведь если всплывает лишний зарегистрированный ключик, то блокируется и оригинальная программа.


Тогда есть другой вариант, но очень он мне не нравится. Нужно просмотреть исходники FANN библиотеки и переписать модули дополнив создание сетей с архитектурой Кохонена. Так же мне не нравится принцип создания таблиц используемый в библиотеке FANN, там не возможно их просмотреть в нормальном читабельном режиме, т.е. увидеть и проанализировать сами записи как в NeuroShell 2. В общем пока с этим повременим. Нужно сперва советника создать рабочего.
Си — это причудливый, несовершенный, но невероятно успешный язык.
— Dennis M. Ritchie.
Аватар пользователя
coder-ex
.
.
      Автор темы
Сообщений: 849
Возраст: 47
Зарегистрирован: 14 месяцев и 28 дней
Откуда: Томск
Национальный флаг:
Russia
Благодарил (а): 10 раз.
Поблагодарили: 21 раз.
Имя: Константин
Пункты репутации: 2
Ученик трейдера

Разработка советника на основе нейросетевого фильтра Приват

Номер сообщения:#15  Непрочитанное сообщение coder-ex » 02 окт 2012, 08:10

Проанализировав всю тему, склоняюсь к мысли использования двухуровневой (можно и больше уровней) сети Коханена. Поясню принцип самой идеи.
1. На входы сети подаем данные используемых индикаторов для открытия позиции, фильтров системы, закрытые ордера с разбивкой убыточные и прибыльные, направление движения цены во время открытия позиции. Таким образом мы сформируем массивы для обработки.
2. Далее начинаем ОБУЧЕНИЕ нейрофильтра, используя архитектуру нейросети Коханена.
- УРОВЕНЬ 1: на выход нейросети подаем данные используемых индикаторов для открытия позиции, фильтров системы и закрытые ордера с убытком, отфильтрованные по наибольшей концентрации убыточных сделок по отношению к направление движения цены во время открытия позиции
- УРОВЕНЬ 2: - на выход нейросети подаем данные используемых индикаторов для открытия позиции, фильтров системы и закрытые ордера с убытком, отфильтрованные по наименьшей концентрации убыточных сделок по отношению к направление движения цены во время открытия позиции
Параметры наибольшая и наименьшая концентрация являются пограничными между собой, либо имеют определенные границы весов, но находятся в пределах +/-1.
3. Тоже самое проделываем для прибыльных сделок
4. Полученные результаты занеся их в отдельные массивы.
5. Обученный нейрофильтр применяем во время открытия позиций, используя фильтрацию (одиночные убыточные сделки) и (наибольшая концентрация прибыльных сделок). Остальной все в мусор.

Если использовать данную технологию, то реализовать нейросеть используя архитектуру Коханена можно не используя какие либо библиотеки FANN. Все можно реализовать записью массивов в файл и последующей его обработкой средствами MQL4 как обычной таблицы.
Си — это причудливый, несовершенный, но невероятно успешный язык.
— Dennis M. Ritchie.
Аватар пользователя
coder-ex
.
.
      Автор темы
Сообщений: 849
Возраст: 47
Зарегистрирован: 14 месяцев и 28 дней
Откуда: Томск
Национальный флаг:
Russia
Благодарил (а): 10 раз.
Поблагодарили: 21 раз.
Имя: Константин
Пункты репутации: 2
Ученик трейдера

Разработка советника на основе нейросетевого фильтра Приват

Номер сообщения:#16  Непрочитанное сообщение coder-ex » 05 окт 2012, 15:37

Вот наконец то я доделал то что хотел. Прошу строго не судить т.к. я еще только учусь.
В советнике использован алгоритм торговли по краткосрочному тренду. Основной тайм фрейм М5-М30. Тренд определяется индикатором RAVI на таймфрейме H1. После определения направления тренда, определяется точка входа по индикатору CCI на таймфрейме М5-М30.
Торговые операции осуществляются с использованием отложенных ордеров и выставлением S/L.
При движении цены по сигналу, осуществляется трал позиции, сделки закрываются по S/L.
Уровень трала раздельный для Long/Short сделок.
Для работы советника нужно добавить индикатор Ravi.

Дополнительный фильтр в стадии разработки !!! будет совмещен с нейросетью.
- построен на срединной МА с отклонением +/- в % и индикаторе волатильности рынка ATR.
- использует нейросеть с архитектурой Коханена.

Для анализа нейросети, советником создается файл ishfile.txt в каталоге МТ4 - \tester\files.
Используются следующие входы нейросети:
- номер ордера
- цена открытия
- тип ордера по OrderType - используем только 0 и 1, 2 и 3 нам не нужны
- расположение МА в момент выставления ордера
- уровень ATR (индикатор волатильности) в момент выставления ордера
- профит ордера - положительно профит, отрицательно убыток, 0 используем по усмотрению, это удаленный ордер по времени исполнения

На этом этапе я пока остановился, т.к. MQL4 дается с трудом. Следующий этап разработки будет заключаться в определении точек входа в рынок на основе дополнительного фильтра.
Идея заключается в следующем. Используя данные полученные в файл ishfile.txt, установить зоны скопления открытых профитных и убыточных сделок (ордеров) на определенном расстоянии от МА и на определенном уровне ATR. Пока думаю в каких единицах измерения сделать такой фильтр. Пока мысль о процентной зоне, т.е. определить калибровку в процентах взяв за 100% расстояние между крайними профитными ордерами и отдельно убыточными ордерами.
Как реализовать такой механизм пока не знаю, может у кого будут дельные мысли.

Теперь объясню почему я пошел по этому пути создания нейросетевого фильтра. Я обратил внимание на то, что советник без использования данного фильтра можно настроить на определенный участок рынка и он будет на таком участве рынка зарабатывать, при чем очень хорошо с минимальной просадкой. Это происходит на определеном уровне расположения ATR. Как только волатильность меняется, советник начинает сливать, уровень ATR уже находится в другой области. Фильтр по МА нужен для привязки сделок к определенному уровню.
Пока попробую в Exelle понаблюдать закономерности, потом можно продумать сам алгоритм применения такого фильтра.
У вас нет доступа для просмотра вложений в этом сообщении.
Си — это причудливый, несовершенный, но невероятно успешный язык.
— Dennis M. Ritchie.
Аватар пользователя
coder-ex
.
.
      Автор темы
Сообщений: 849
Возраст: 47
Зарегистрирован: 14 месяцев и 28 дней
Откуда: Томск
Национальный флаг:
Russia
Благодарил (а): 10 раз.
Поблагодарили: 21 раз.
Имя: Константин
Пункты репутации: 2
Ученик трейдера

Разработка советника на основе нейросетевого фильтра Приват

Номер сообщения:#17  Непрочитанное сообщение coder-ex » 06 окт 2012, 10:37

Рассматривая всевозможные варианты обработки входных данных для нейросети, встречаю очень часто, что MQL4 для этого не подходит и нужно применять другие языки программирования, где все это дело обрабатывать и анализировать результаты. Что необходимо на этапе создания алгоритма работы нейросети.
Как вариант, видел создание классов на С++. Что же, придется теперь вдогонку изучать С++ и скорее всего алгоритм советника буду уже дописывать с использованием dll если будет в этом необходимость. Но по крайней мере хоть правильно смогу оценить работу придуманного алгоритма работы нейросети и в случае чего его корректировать. Кстати сейчас понимаю, что можно было обойтись без всего этого изучения С++, если бы была возможность достать ключ к Neuro Shell 2.
Так что не теряйте если вдруг долго не буду реагировать на какие либо вопросы и предложения.
Си — это причудливый, несовершенный, но невероятно успешный язык.
— Dennis M. Ritchie.
Аватар пользователя
coder-ex
.
.
      Автор темы
Сообщений: 849
Возраст: 47
Зарегистрирован: 14 месяцев и 28 дней
Откуда: Томск
Национальный флаг:
Russia
Благодарил (а): 10 раз.
Поблагодарили: 21 раз.
Имя: Константин
Пункты репутации: 2
Ученик трейдера

Разработка советника на основе нейросетевого фильтра Приват

Номер сообщения:#18  Непрочитанное сообщение Strelok » 09 окт 2012, 15:46

Kisa, посмотри http://vinin.ucoz.ru/forum/17-59-1, там когда то vinin пробовал прикрутить фильтр МА для нейросети, может пригодиться. P.S. есть лекарство для NeuroShell Trader 5.0
Аватар пользователя
Strelok
.
.
Сообщений: 1232
Возраст: 48
Зарегистрирован: 61 месяцев и 28 дней
Национальный флаг:
Russia
Благодарил (а): 589 раз.
Поблагодарили: 164 раз.
Имя: Андрей
Пункты репутации: 7
Ученик трейдера

Разработка советника на основе нейросетевого фильтра Приват

Номер сообщения:#19  Непрочитанное сообщение coder-ex » 11 окт 2012, 15:56

Strelok писал(а):

Kisa, посмотри http://vinin.ucoz.ru/forum/17-59-1, там когда то vinin пробовал прикрутить фильтр МА для нейросети, может пригодиться. P.S. есть лекарство для NeuroShell Trader 5.0


Спасибо, по поводу NeuroShel пока оставил эту мысль в покое. Пошел по пути кодинга, нашел библиотеку сети Кохонена, сейчас пока изучаю ее работу в целом, потом буду создавать классы на C++ и обертку для MQL. Так что меня тут может не быть каждый день. Но думаю, что в итоге все получится, т.к. копаться в чужих кодах не благодарное дело, лучше написать свое.
От готовой FANN библиотеки для MQL отказался по причине отсутствия в ней архитектуры сетей Кохонена, а я пока вижу реализацию своей задачи именно на этой архитектуре нейросети. Сперва хотел написать в этой библиотеке дополнительную архитектуру, но разбираться в сразу в двух библиотеках сложно - сама FANN и реализация для MQL.
Си — это причудливый, несовершенный, но невероятно успешный язык.
— Dennis M. Ritchie.
Аватар пользователя
coder-ex
.
.
      Автор темы
Сообщений: 849
Возраст: 47
Зарегистрирован: 14 месяцев и 28 дней
Откуда: Томск
Национальный флаг:
Russia
Благодарил (а): 10 раз.
Поблагодарили: 21 раз.
Имя: Константин
Пункты репутации: 2
Ученик трейдера

Разработка советника на основе нейросетевого фильтра Приват

Номер сообщения:#20  Непрочитанное сообщение Kordan » 26 окт 2012, 11:23

Вот ссыль на обсуждение по теме. Так, на всякий случай, попалась.
Аватар пользователя
Kordan
.
.
Сообщений: 2451
Возраст: 49
Зарегистрирован: 63 месяцев и 28 дней
Откуда: Саратов
Национальный флаг:
Russia
Благодарил (а): 667 раз.
Поблагодарили: 1220 раз.
Имя: Валерий
Пункты репутации: 25
Молодой трейдерМолодой трейдерМолодой трейдер

След.

Вернуться в Торговые стратегии



Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей

  • Объявления