Блог им. jatotrade_com

Искусственный трейдер. Часть 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-м Квиком пока не работает, доделываю. Подписаться на мой канал можно здесь в ютьюбе.

★20
32 комментария
Это графики, на которых отображены помимо цены и объема частотные характеристики, такие как интенсивности покупок и продаж, объемно-тиковый осциллятор, скорость ленты и т.д. Выглядят примерно так:



avatar
Евгений Шибаев, откуда такие данные брать? И есть возможность в реалтайм?
Александр Дрыгун, данные формируются в Jatotrader в реалтайм если подключаетесь через Квик или ТранзакКоннектор. Ну и естественно на истории.
avatar
был чувак у меня со знакомой фамилией. это ты? — упырь?)
avatar
For_post, ну чтобы понять я ли это или не я, нужна дополнительная информация. Если судя по вашему местоположению (Обнинск), а я родом из Серпухова (недалеко от Обнинска), есть вероятность того что мы пересекались...
avatar
Евгений Шибаев, не, сори, думал, что Вы из челябы. сори еще раз.)
avatar
For_post, да все норм, не парьтесь…
avatar
Что-то на Data Science похожа
Александр Дрыгун, типа дата сайнс
avatar
А в реальной торговле не пробовали этот бот
Александр Дрыгун, торгую с его помощью, бывает иногда руками помогаю, но по опыту — лучше этого не делать.
avatar
Евгений Шибаев, почему же? Робот же прибыльный
Проблема в том, что подсунуть из данных машине — если просто рынок, то ни к чему это не приведет. Нужны данные в которых есть реальная зависимость между прошлой частью данных и последующей частью.
avatar
ICWiener, == Нужны данные в которых есть реальная зависимость между прошлой частью данных и последующей частью.
==
т.е. нужен реальный предсказатель будущего?
avatar
Rostislav Kudryashov, в идеале нужен именно он, но я написал о другом. Что нужно выбрать куски графика на истории, в которых одна часть данных ПРЕДПОЛОЖИТЕЛЬНО влияет на последующую (предположительно, потому, что ДОСТОВЕРНО мы не может знать) и именно эти данные скармливать.
avatar
ICWiener, абсолютно правильно, так задача и состоит в том, чтобы найти методами ML что именно скармливать, именно те куски, после которых с определенной долей вероятности «сбудется» предсказание. 
avatar
Евгений Шибаев, тогда получится курфиттинг
avatar
ICWiener, в маём доме папрашу не вирожатся...
avatar
Евгений Шибаев, я к тому, что если не заложить определенные гипотезы, почему из одного должно получатся другое, то можно смело запускать машинное обучение на случайном графике — и ML найдет «прибыльных» паттернов, но заработать не сможет и рубля
avatar
ICWiener, если такая зависимость есть, она тут же будет обнаружена более простейшими методами, чуть ли не индикаторами ТА(тупо статистика). И устранена соответственно.


avatar
chizhan, очевидно, тогда бы и не существовал priceaction алготрейдинг
avatar
Я так понимаю, робот в дальнейшем (после обучения) будет прогнозировать цену и выдавать рекомендацию — покупаем или продаем? Для авто торговли нужны еще данные по трейдам робота, помимо данных по рынку...   
avatar
Lexuz77, ну здесь как вам будет удобно — рекомендация ли, либо прямая заявка в торговую систему — связка Jato-Python реализована, из Джато поступает информация строго в соответствии с теми данными на которых модель была обучена, а в Джато либо вероятностные оценки направления движения, либо непосредственно заявки в торговую систему. Механизм управления заявками и рисками может быть как с одной стороны, так и с другой.
avatar
 Все эти методы, какими их модными терминами не называй, есть вся та же лопата, которую предприимчивые посредники сбывали золотодобытчикам. Ничто не изменилось.
avatar
Андрей Андреичъ, вот чувствуется рука профессионала. В Джато данные пока не размечались, хотя возможность такую предусмотрел, допиливаю. Здесь Джато выступает в роли первичного преобразователя сырых данных (ленты сделок), на выходе которого получаем дату, которую можно размечать. Разметка будет наверное не во втором, а в третьем топике, и там будут примитивные, но «рабочие» методы машинного обучения, пока не связанные с дип лёрнинг. С вашего позволения добавлю себе друга.
avatar
Оригинальная идея, использовать маркет-дату для машинного обучения. Какую модель собираетесь применять? Напрашивается свёртка.

Датасет скачал, может покручу на своих моделях как-то. Хотя один фиг все будет зависеть от постановки задачи (целевой функции). Это возможно даже более важный элемент успеха. Надо посмотреть, что вы предсказываете.
avatar
Собака инвестяка, пока все просто, машинное обучение 3 в. до н.э. от товарища  Эвклида. Были бы у него наши вычислительные возможности, все бы греки жили бы на Олимпе, плавали б в оливковом масле и запивали все амброзией.  По делу- применим возможности линейной алгебры, посчитаем косинусное расстояние в векторном пространстве, для определения близости векторов, то есть похожести ситуации. Но для начала нужно будет разметить данные, т.е. первый подход обучение с учителем. Не знаю, понятно ли объяснил… Кстати если какие интересные закономерности найдете и откликнетесь — буду признателен, покрутим модель в дальнейшем.
avatar
Евгений Шибаев, >применим возможности линейной алгебры, посчитаем косинусное расстояние в векторном пространстве, для определения близости векторов, то есть похожести ситуации

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

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

Но это ТС. А сырые данные хорошо разметить намного сложнее. Посмотрим, что вы придумали.
avatar
Собака инвестяка, честно говоря, SVM не рассматривал, насчет оригинальности — это вряд ли. Стандартными библиотеками точно можно пользоваться. Вопрос в предобработке сырых данных, как бы сначала разжевать помельче, чтобы потом проглотить получше. Пока решаем задачу входа с наибольшей вероятностью «желаемого» тейка.
avatar
Евгений Шибаев, http://mlwiki.org/index.php/Vector_Space_Models
Я так понял косинусное расстояние обычно используют для моделей, работающих с текстом. А почему не сделали выбор в пользу стандартных методик кластеризации, используемых обычно в задачах вроде вашей (определение близости в пространстве векторов)? Например k ближайших соседей.
avatar
Евгений Шибаев, если что-то найду в вашем датасете, конечно отпишусь.
avatar

теги блога Евгений Шибаев

....все тэги



UPDONW
Новый дизайн