Нейросетевой советник

Нейросетевые советники (на основе нейронной сети)

Открываю новую, нераскрытую до сих пор в полной мере тему: «Советники на основе нейронных сетей» или «нейросетевые советники«.

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

  • [*]_ http://articles.mql4.com/ru/770
    [*]_ http://articles.mql4.com/ru/876
    [*]_ http://codebase.mql4.com/755
    [*]_ http://codebase.mql4.com/ru/756
    [*]_ http://codebase.mql4.com/ru/2719
    [*]_ http://codebase.mql4.com/ru/6288
    [*]_ http://codebase.mql4.com/ru/8080
    [*]_ http://reshetov.xnet.uz/
    [*]_ http://ruforum.mt5.com/threads/15644-sovetnik-rnn

Для новичков: просьба не задавать глупых вопросов что это за советники, сначала почитайте статьи про них и сами что-то попробуйте сделать, потом пишите. С негативом просьба тут не шастать — если не получилось у вас, то у нас точно получится!

Опытым по данной теме — вэлкам.

Итак, поехали.

Sergey.77

Заблокирован

Здрасьте, приехали.
Все нейронные системы гральны только на истории, для неё они и созданы — забудьте про них.

e-partner

Местный знаток

Здрасьте, приехали.
Все нейронные системы гральны только на истории, для неё они и созданы — забудьте про них.

Я по-моему по поводу отрицательных отзывов писал. читайте выше. Не сбивайте людей с толку, это ваше мнение. Следующий!

Активный участник

Вложения

e-partner

Местный знаток

Нормуль! За полтора мес. — увеличение в 2+ раза.
Напиши где брал советник (или приложи — другим тоже интересно будет, а тебе: «+»), как именно помогаешь ручками, как обучал, какие результаты получал, с какими трудностями столкнулся?
Расскажи про свой опыт работы с нейросоветниками вообще.

Активный участник

Нормуль! За полтора мес. — увеличение в 2+ раза.
Напиши где брал советник (или приложи — другим тоже интересно будет, а тебе: «+»), как именно помогаешь ручками, как обучал, какие результаты получал, с какими трудностями столкнулся?
Расскажи про свой опыт работы с нейросоветниками вообще.

Нейросетевой советник

Открытие торгового счета Форекс

Как считают оптимисты, нейросетевые советники — это будущее трейдинга. Крупные таймфреймы показывают ярко-выраженные трендовые участки. Цена не движется хаотично, так как график не подходит близко к прямой.

На рынке «Форекс» по-прежнему существуют свои алгоритмы. Как раз нейронные сети и смогут позволить еще ближе подойти к их пониманию.

Стоит ли скачать нейросетевого робота?

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

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

Как действует нейросетевой робот?

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

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

Base — true пишем файл с базой векторов, false торгуем с классификацией. Обязательно сначала нужно протестировать эксперта с Base = true, и только потом тестировать с Base = false.
buy_threshold = 0.6 порог на все Buy позиции. Если вероятность покупки выше этого порога, то эксперт покупает. Этот параметр относится к тестированию с Base = false.
sell_threshold = 0.6 аналогично параметру buy_threshold.
inverse_position_open_? = true — Если вероятность сделки на покупку очень мала то значит вероятность продажи очень велика. Этот параметр позволяет открывать сделки когда возникают такие ситуации.
invers_buy_threshold=0.3 порог, когда вероятность прибыльной Buy позиции меньше то входим на Sell
invers_sell_threshold=0.3 аналогично invers_buy_threshold.

График тестирования без применения метода k-ближайших соседей

Как я нейросети в трейдинге применял

Еще

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

Разрабатываемая торговая система относится к непрерывным с фиксированным капиталом: в ней нет ни тейков, ни стопов, а есть лишь доля капитала, которая сейчас размещена в торгуемом инструменте (аллокация) и тройка предикторов. В тестах размер капитала постоянный, чтобы реинвестирование не искажало результат. Если доля равна 1, то взят лонг на весь капитал при торговле по номиналу, если доля -1, то шорт на весь капитал; для аллокации допустимы любые вещественные значения между -1 и 1.

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

Нейросеть берём простую. У неё четыре входа:
1) текущая аллокация;
2) значение индикатора MFI с периодом mfiPeriod;
3) значение индикатора RSI с периодом rsiPeriod;
4) номер текущей свечи с начала торгового дня;
три внутренних нейрона и один выход, который интерпретируется как целевая аллокация. Нейросеть будет полносвязной, поэтому количество весовых коэффициентов в нейросети равно (4+1) * 3 + (3 + 1) * 1 = 19. В качестве сигмоидной функции возьмём
s(x) = -0.5 + 1.0 / (1.0 + exp(-x)).
Эта функция выдаёт значения в диапазоне от -0.5 до +0.5. Если умножить на 2, как раз получится диапазон от -1 до 1 для аллокации капитала.

Нейросеть – это некоторый способ преобразовать 4 входных значения в одно выходное, используя 19 весовых коэффициентов, записанных в массив w, умножения, сложения и функцию сигмоида. На языке программирования Java это может выглядеть примерно так:

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

Теперь надо рассчитать оптимальные весовые коэффициенты нейросети и параметры mfiPeriod и rsiPeriod.

С параметрами mfiPeriod и rsiPeriod всё понятно: сделаем перебор по некоторой сетке значений, например, от 12 (3 торговых часа) до 100 (25 торговых часов) с некоторым постепенно увеличивающимся шагом, а потом выберем параметры с наилучшим результатом.

Для каждой пары периодов mfiPeriod и rsiPeriod подберём весовые коэффициенты нейросети так, чтобы график эквити торговли за промежуток времени показывал максимальную доходность. Нейросеть с произвольным набором коэффициентов даст какую-то торговую систему с каким-то графиком эквити. А мы с помощью оптимизации будем искать наилучшую доходность. В принципе, у каждого из нас могут быть свои представления о качественной эквити. В этом месте можно использовать их, а не максимальную доходность, как сделал я.

Обучение нейросети реализовано с помощью итерационного алгоритма Нелдера-Мида (Nelder-Mead Optimization), где в качестве начальных приближений берутся вектора из 19 случайных вещественных чисел, целевая функция для максимизации – доходность торговой системы за 3 года. Алгоритм оптимизации находит локальный экстремум, так что коэффициенты нейросети далеко не всегда могут оказаться удачными. По-хорошему, надо делать мультистарт, когда делается несколько попыток рассчитать коэффициенты нейросети и выбирается лучшая. С другой стороны, мы применяем перебор по параметрам mfiPeriod и rsiPeriod по довольно обширной и частой сетке значений, так что хоть где-то и хоть как-то адекватные нейросети должны получиться и без мультистарта.

В каждой итерации метода оптимизации вычисляется доходность нейросетевой стратегии за 3 года торговли путём генерации сделок, учёта комиссии и проскальзывания (0.02% для фьючерса RI), вычисления эквити. Так что вычисление значения оптимизируемой функции тут трудоёмкое и без быстрого тестера никак не обойтись. Мой тестер написан на языке программирования Java и обладает приемлемой для этого скоростью. Однако, даже в этом случае подбор коэффициентов нейросетей занимает несколько часов.

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

Результаты для лучших систем, которые получены на периоде оптимизации, поражают воображение, особенно если помнить, что это торговля по номиналу и частичным использованием капитала:
* 2011-2013 гг. +145%;
* 2012-2014 гг. +187%;
* 2013-2015 гг. +175%;
* 2014-2016 гг. +217%;
* 2015-2017 гг. +222%;
* 2016-2018 гг. +130%;
* 2017-2019 гг. +106%.
Наверняка тут наблюдается существенное переобучение нейросети и подгонка под историю!

Для более корректной оценки того, что получилось, проведём walk-forward тестирование. По данным с января 2011 года по декабрь 2013 года проводим оптимизацию, запоминаем одну лучшую нейросеть и торгуем с её помощью 2014 год. Потом сдвигаем промежуток оптимизации на год, проводим новую оптимизацию с января 2012 года по декабрь 2014 года, торгуем по лучшей нейросети 2015 год, и так далее до текущего момента времени. Графики эквити торговли, начиная с 2014 года, собираем в один общий. Получается результат в +20 % за шесть с половиной лет при торговле фиксированным капиталом, а график эквити больше похож на случайное блуждание.

График эквити торговой системы на фьючерсе RI

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

Остаётся вопрос: а почему это всё не заработало? Тут наблюдается влияние сразу нескольких факторов, среди которых:
1) низкая ценность предикторов MFI, RSI;
2) большое количество параметров оптимизации по сравнению с имеющимся массивом рыночных данных;
3) нестационарность рынка как большая беда для моделей машинного обучения.

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

Вот так выглядит типичный нейросетевой грааль алготрейдера: IS – для покупки яхт, OOS и walk-forward для разочарований.

Источник https://forexsystemsru.com/threads/nejrosetevye-sovetniki-na-osnove-nejronnoj-seti.68608/

Источник https://tradexperts.ru/torgovye-roboty-foreks/nejrosetevoj-torgovyj-robot-knn

Источник https://smart-lab.ru/blog/630347.php

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: