Евгений Шибаев
Евгений Шибаев личный блог
22 февраля 2020, 13:17

Искусственный трейдер. Часть 1. Подготовка данных для машинного обучения (видео).

Всех с наступающим (и никаких отступлений!) Днем Защитника Отечества ака Денем Советской Армии и Военно-Морского Флота!
И за тех, кто в море! Ну а те кто в ЗОЖе, начинаем готовить себе замену — искусственного трейдера.
Важнейшей частью любого алгоритма машинного обучения являются данные, на которых происходит обучение, а еще важнее качество этих данных.
Для приготовления искусственного трейдера нам понадобятся следующие ингредиенты:
1.Установленная платформа Jatotrader (FREE или круче) версии 2.9.3 или выше. Можно обойтись и без установки Джато и взять тестовый набор данных отсюда. Описание содержимого файлов датасета — в конце топика.
2.Питон.Jupyter Notebook (Anaconda3)
Короче говоря, Jatotrader мы используем как предварительный обработчик и генератор данных для машинного обучения (МО), а Python для создания модели, обученной на этих данных. Возможности Jatotrader позволяют создавать частотные графики из тиковых данных, примерно такого вида 
На них четко видна зависимость изменения цены от действий участников. Вот эти данные и будут использоваться для МО.
В этом коротком видео (2:24) показано как создать собственные датасеты (на примере фьючерса BRH0) с различными частотными характеристиками.

Каждый открытый частотный график после воспроизведения истории создает csv файл в папке \Jatotrader\DATASET\Тикер с именем ГГГГ-ММ-ДД_Тикер_Метод_Количество.FRQ Метод и количество — это способы формирования частотного бара: например 500 тиков на бар, 50 пунктов цены на бар(Ренко), 1000 маркет-дельты на бар (изменение значения маркет-дельты по модулю от предыдущего значения), 30 секунд на бар и т.д. 

Сам процесс создания датасетов весьма ресурсозатратен.Так, создание датасета за 16 торговых сессий для 20 частотных настроек (графиков) для BRH0 у меня занимает около 5 минут.
После того, как набор данных создан, его нужно прочитать в Питоне, «распарсить» и отобразить: 
Искусственный трейдер. Часть 1. Подготовка данных для машинного обучения (видео).
В следующем топике рассмотрим исходный код "парсера" и «визуализатора» данных из Jatotrader в Python. Для этого установите Jupyter Notebook (Anaconda3)

Описание файлов датасета.
Пример: в файле 2020-02-03_RIH0_TICKS_500.FRQ содержится информация за 3 февраля 2020 года по фьючерсному контракту RIH0,
сформированная из расчета 500 тиков на бар. Первая строка файла — это имена столбцов DATETIME,H,L,O,C,DH,DL,DO,DC,OTO,BI,SI,BV,SV,BC,SC. Последующие строки — это бары, идущие в хронологическом порядке. DATETIME-строка в формате «ГГГГ-ММ-ДД ЧЧ: ММ: СС», H,L,O,C — максимальная, минимальная цена и цена открытия и закрытия бара. DH и DL — максимальное и минимальное значение накопленной маркет-дельты бара, DO и DC — значение маркет-дельты при открытии и закрытии бара. OTO — значение объемно-тикового осциллятора на закрытии бара, BI-интенсивность покупок (тиков в секунду), SI- интенсивность продаж, BV-объем покупок, SV-объем продаж, BC-количество покупок,SC-количество продаж

Скачать Jatotrader можно здесь. Как получить ключ в этом видео. Как подключиться к КВИКУ смотри здесь. С 8-м Квиком пока не работает, доделываю. Подписаться на мой канал можно здесь в ютьюбе.

32 Комментария
    • Александр Дрыгун
      24 февраля 2020, 13:19
      Евгений Шибаев, откуда такие данные брать? И есть возможность в реалтайм?
  • For_post
    22 февраля 2020, 13:58
    был чувак у меня со знакомой фамилией. это ты? — упырь?)
      • For_post
        22 февраля 2020, 14:06
        Евгений Шибаев, не, сори, думал, что Вы из челябы. сори еще раз.)
  • Александр Дрыгун
    22 февраля 2020, 14:14
    Что-то на Data Science похожа
  • Александр Дрыгун
    22 февраля 2020, 14:30
    А в реальной торговле не пробовали этот бот
  • ICWiener
    22 февраля 2020, 15:09
    Проблема в том, что подсунуть из данных машине — если просто рынок, то ни к чему это не приведет. Нужны данные в которых есть реальная зависимость между прошлой частью данных и последующей частью.
    • Rostislav Kudryashov
      22 февраля 2020, 15:54
      ICWiener, == Нужны данные в которых есть реальная зависимость между прошлой частью данных и последующей частью.
      ==
      т.е. нужен реальный предсказатель будущего?
      • ICWiener
        22 февраля 2020, 16:13
        Rostislav Kudryashov, в идеале нужен именно он, но я написал о другом. Что нужно выбрать куски графика на истории, в которых одна часть данных ПРЕДПОЛОЖИТЕЛЬНО влияет на последующую (предположительно, потому, что ДОСТОВЕРНО мы не может знать) и именно эти данные скармливать.
          • ICWiener
            22 февраля 2020, 16:32
            Евгений Шибаев, тогда получится курфиттинг
              • ICWiener
                22 февраля 2020, 16:42
                Евгений Шибаев, я к тому, что если не заложить определенные гипотезы, почему из одного должно получатся другое, то можно смело запускать машинное обучение на случайном графике — и ML найдет «прибыльных» паттернов, но заработать не сможет и рубля
    • chizhan
      22 февраля 2020, 16:31
      ICWiener, если такая зависимость есть, она тут же будет обнаружена более простейшими методами, чуть ли не индикаторами ТА(тупо статистика). И устранена соответственно.


      • ICWiener
        22 февраля 2020, 16:37
        chizhan, очевидно, тогда бы и не существовал priceaction алготрейдинг
  • Lexuz77
    22 февраля 2020, 15:38
    Я так понимаю, робот в дальнейшем (после обучения) будет прогнозировать цену и выдавать рекомендацию — покупаем или продаем? Для авто торговли нужны еще данные по трейдам робота, помимо данных по рынку...   
  • chizhan
    22 февраля 2020, 16:36
     Все эти методы, какими их модными терминами не называй, есть вся та же лопата, которую предприимчивые посредники сбывали золотодобытчикам. Ничто не изменилось.
  • Xaba3abr
    24 февраля 2020, 20:34
    Оригинальная идея, использовать маркет-дату для машинного обучения. Какую модель собираетесь применять? Напрашивается свёртка.

    Датасет скачал, может покручу на своих моделях как-то. Хотя один фиг все будет зависеть от постановки задачи (целевой функции). Это возможно даже более важный элемент успеха. Надо посмотреть, что вы предсказываете.
      • Xaba3abr
        24 февраля 2020, 22:31
        Евгений Шибаев, >применим возможности линейной алгебры, посчитаем косинусное расстояние в векторном пространстве, для определения близости векторов, то есть похожести ситуации

        Что-то очень знакомое, это случайно не связано с  машинами опорных векторов (SVM)? Или у вас какой-то свой, оригинальный подход, под который стандартных библиотек нет?

        По моему опыту все зависит от целевой функции. А еще точнее — от постановки задачи в целом. Я пробовал делать логику принятия решений внутри торговой системы на МО. Получилось, что ни регрессия (определение, куда поставить тейк), ни классификация (входить или не входить) в чистом виде не дают достаточно хорошего (лучшего, чем классическая оптимизация) результата. По итогу склоняюсь к некоторому комбинированному подходу.

        Но это ТС. А сырые данные хорошо разметить намного сложнее. Посмотрим, что вы придумали.
          • Xaba3abr
            24 февраля 2020, 23:19
            Евгений Шибаев, http://mlwiki.org/index.php/Vector_Space_Models
            Я так понял косинусное расстояние обычно используют для моделей, работающих с текстом. А почему не сделали выбор в пользу стандартных методик кластеризации, используемых обычно в задачах вроде вашей (определение близости в пространстве векторов)? Например k ближайших соседей.
      • Xaba3abr
        24 февраля 2020, 22:32
        Евгений Шибаев, если что-то найду в вашем датасете, конечно отпишусь.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн