pmus
pmus личный блог
22 января 2017, 01:07

Архитектура торгового робота

Архитектура торгового робота

Под катом скучное и неинтересное описание устройства торговой программы.

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

API имеет дочерние структуры: GUI для работы с графическим интерфейсом, Configloader для сохранения данных конфигурации программы, Dataparser для разбора и упорядовачивания поступающих данных, Plugins для загрузки торговых алгоритмов, Csvrec для сохранения данных в для Excel, и (пока нереализованный) JSON для управления через RESTful API (вместо всяких DDE).

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

Configloader при запуске загружает сохраненные данные или берет конфигурацию из командной строки

Dataparser — сложный асинхронный модуль, имеющий несколько частей, главные — Stock и Datasource.

Stock содержит данные, включая таблицы с ордерами, сделки стаканы, позиции и все-все, что связано с торговой информацией. Именно сюда Dataparser складывает данные, полученные и разобранные в правильный вид. Сырые данные он получает из Datasource — модуля, который следит и поддерживает соединение с сервером брокера. Connector — это модуль более низкого уровня, получающий данные от Transaq XML Connector и отдающий XML-данные выше по цепочке в Dataparser, который разберет и сложит их в Stock. Этот же модуль отправляет команды на исполнение сделок брокеру.

Plugins — это модуль, запускающий файлы торговых систем, оформленных как .py файлы, то есть написанные на Python программы.
Каждый плагин при запуске получает объект API, через который может обращаться к другим модулям программы. Например, выводить данные через api.gui, узнавать состояние рынка, подписываться на торговые инструменты через api.stock.

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

CSVrec записывает таблицы с данными в CSV и используется для создания моментальных снимков состояния любой таблицы для последующего анализа (например, чтобы сделать снимок состояния «стакана», достаточно два раз щелкнуть по нему). Также CSVrec можно использовать для экспорта данных в другие программы, например, в TSLab.

6 Комментариев
  • Hedgehog
    22 января 2017, 01:16
    Stakan :)?
  • ✔️AlgoDevil
    22 января 2017, 02:04
  • bstone
    22 января 2017, 12:02
    Конкурентное преимущество соперников этого робота в одной картинке. Неплохо :)
      • Monster
        24 апреля 2017, 12:02
        pmus, доброго времени суток! Структура выглядит завораживающе-строшно :) Так уж получилось — Пайтон мой первый язык… сейчас осваиваю. Ставлю задачу уйти от ручного труда и написать робота. Тестировать буду в Quantopian, а использовать в Квике. В связи с этим вопрос как к опытному питонисту: как должна выглядеть минимальная структура(из каких модулей должна состоять)?.. что с чем должно взаимодействовать, «чтобы поехало»… может посоветуете доп. матералы…

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

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