Русский
Русский
English
Статистика
Реклама

Нейросети и трейдинг. Часть 2 набор сделай сам

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

Предлагаю развеить эти сомнения раз и на всегда и перевести дискурс из области может предсказывать или не может в область хорошо предсказывает или плохо. И сделаем мы это простым, быстрым и наглядным способом. Я дам готовый инструмент и каждый сможет получить результат на своем компьютере. Поможет нам в этом бесплатный проект GoogleColaboratory. Это открытая платформа для совметной разработки, все вычисления происходят на серверах Google, всё взаимодействие через браузер, регистрация не нужна.

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

Единственное где мы сократим наш путь это сбор данных на истории торговой пары. Сбор производится приложением к MetaTrader5, процесс не сложный, но требует навыков работы с тестером в MetaTrader5. Подробная инструкция потянет на отдельную статью, поэтому используем заранее подготовленные данные для пары Евро/Доллар (тем, кто пользуется MT5 я по запросу могу дать этот Expert). Убедиться в том, что заранее подготовленные данные не подглядывают вперед и не подсказывают нейросети, можно будет на последнем этапе когда перейдем к тестированию реальным рынком.
Начнем

GoogleColaboratory


Наш ноутбук в GoogleColab можно найти по этой ссылке. Не забудьте сначала залогинится в свою учетную запись на Google (или Gmail).

Копируйте ноутбук себе.
image
Теперь нужно последовательно запускать все блоки сверху вниз.

1. Установка библиотек


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

2. Загрузка и подготовка данных для обучения


На этом этапе будет загружен датасет, а так же подготовлены отдельные массивы данных для обучения и тестирования. Датасет собран для пары EURUSD за период с начала 2015 года до сегодняшнего дня, шаг сбора данных свеча M6. Последние 2 недели тестовый участок. Данные в датасете это набор из сотен тысяч строк каждая из которых примерно такая
0.32,0.26,0.00,0.43 ... 0.66,0.25,0.24,0.05,0,1,1600144440,1.189240

Предикторы идут через запятую, поля 3 и 4 с конца это правильный ответ куда пошел тренд (0,1 вниз; 1,0 вверх). Второе поле с конца id свечи. Последнее цена на открытии свечи. Для обучения последние два поля не используются.

3. Обучение и тестирование модели


При первом запуске оставьте настройки нейросети по умолчанию. Обучение будет проходить в пять заходов пока не будет получен приемлемый результат. В случае успешного обучения появится примерно такая таблица:
+------------+---------+----------+-------------+------------+| Ответ сети | Выиграл | Проиграл | Выиграл (%) | Свечей (%) |+------------+---------+----------+-------------+------------+|     0      |   7174  |   7173   |      50     |   100.0    ||     2      |   6956  |   6731   |      50     |    95.4    ||     4      |   6430  |   6224   |      50     |    88.2    ||     6      |   5867  |   5630   |      51     |    80.1    ||     8      |   5250  |   5065   |      50     |    71.9    ||     10     |   4636  |   4450   |      51     |    63.3    ||     12     |   3964  |   3772   |      51     |    53.9    ||     14     |   3330  |   3152   |      51     |    45.2    ||     16     |   2758  |   2539   |      52     |    36.9    ||     18     |   2198  |   2012   |      52     |    29.3    ||     20     |   1700  |   1544   |      52     |    22.6    ||     22     |   1298  |   1167   |      52     |    17.2    ||     24     |   958   |   825    |      53     |    12.4    ||     26     |   699   |   517    |      57     |    8.5     ||     28     |   446   |   278    |      61     |    5.0     ||     30     |   246   |   127    |      65     |    2.6     |+------------+---------+----------+-------------+------------+

Ответ нейросети это бинарная классификация где [0 1] это вниз, а [1 0] вверх. Но нейросеть никогда не отвечает целым значением, ее ответ, в зависимости от степени уверенности, может быть типа [0.4 0.6]. В таком ответе нейросеть считает, что цена пойдет вниз, но не очень уверенна, а в ответе [0.1 0.9] тоже вниз, но уверенности намного больше. Вот как выглядит массив реальных ответов:
[[0.5084921  0.49150783] [0.3930727  0.6069273 ] [0.4930727  0.50692725] ... [0.5189831  0.48101687] [0.27955987 0.7204401 ] [0.476914   0.5230861 ]]

Поле таблицы Ответ сети это разница внутри этого бинарного ответа умноженная на 100. Очевидно, что эта разница характеризует уверенность сети в своем прогнозе. В итоге, после умножения на 100, мы имеем значения в диапазоне от 0 до 100. Теперь можно брать не все ответы, а выбирать только те, в которых нейросеть имеет значимую уверенность. Что бы понять на сколько ответ влияет на результат прогноза, тестовый участок проверяется на правильность прогноза при разных уровнях этой уверенности. Каждая строка таблицы это проверка при новом большем значении Ответа сети. Чем выше фильтр Ответа сети, тем меньше ответов, но тем они качественнее. Это видно по полям Выиграл и Проиграл. Процесс останавливается когда ответов (Сигналов) становится меньше 1% от всех тестовых данных.

Если при одном проходе сеть не обучилась просто перезапустите этот блок (данные заново подгружать не надо).

4. Результаты на торговом графике


Запустите этот блок. Тут все очевидно, на графике торговой пары из тестового набора отрисовываются сигналы нейросети, зеленый вверх, красный вниз.
image

5. Тестирование на реальном рынке


При этой проверке подгружаются данные для нейросети которые создаются по ходу добавления новых свечей в реальном времени. Т.е. последний вектор полученных данных создан на открытии свечи, в нашем случае нулевой свечи М6. Эти данные, естественно, не содержат правильного ответа, сети предлагается сделать реальный прогноз. Убедится в том, что вектора не подменяются по ходу их движения в историю можно раскомментировав строку print(data) и сравнив значения конкретной строки при входе и спустя некоторое время.
def get_from_ennro(symbol, tfm, dim, lim):    ...    # print(data)    ...

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

Выводы


Да! Качество прогноза не годится для открытия позиций. Но мы такую задачу и не ставили, главное, что нейросеть обучается и что то распознает на графике, угадывает тренд, ее прогноз очевидно не хаотичен. Обратите внимае, что мы использовали простейшую конфигурацию нейросети Sequential Dense с 2мя слоями и всего 10 эпох для обучения. Тут есть куда развиваться дальше.
Решения качественно улучшающие прогноз уже есть, но о них в следующей статье.
Источник: habr.com
К списку статей
Опубликовано: 05.10.2020 12:23:18
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Исследования и прогнозы в it

Машинное обучение

Neural network

Нейросети

Трейдинг

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru