Пандора Трейдер: Торговая платформа
Происхождение названия:
Согласно информации из Википедии, Пандора — это первая женщина, созданная Гефестом из глины. Боги наделили её различными дарами: Афина подарила ей одежду, Афродита — красоту и способность соблазнять мужчин, Гермес научил её говорить. Все боги преподнесли ей дар, кроме богини мудрости Афины, которая отказалась это делать.
В древнегреческом языке «пан» означает «всё», а «дора» — «дар». Таким образом, имя Пандора означает «женщина, наделённая всеми дарами». В данном контексте оно символизирует торговую платформу, обладающую всеми навыками.
Мы разработали такую торговую платформу, которая обладает всеми навыками, за исключением мудрости. Мудрость принадлежит разработчику стратегии, который должен создать отличную стратегию для торговой платформы, чтобы она могла успешно работать на волатильном рынке, используя ветер и волны.
История звезды
Особенности платформы:
Платформа разработана на C++, поддерживает различные торговые API и является высокочастотной платформой для количественной торговли, работающей на разных платформах.
Почему стоит использовать PandoraTrader?
Архитектура компонентов:
Архитектура платформы PandoraTrader представлена на схеме. Пользовательская стратегия является ядром программы, а остальные компоненты взаимодействуют друг с другом, обеспечивая поддержку пользовательской стратегии.
Пользовательская стратегия может получать информацию о позициях, заказах и других данных через платформу PandoraStrategy, а также отправлять заказы и получать уведомления через обратные вызовы.
PandoraStrategy использует компоненты Trade API и MarketData API для подключения к торговым платформам брокеров. Эти компоненты позволяют выполнять операции, связанные с рынком, включая подписку на данные, размещение заказов и их отмену.
PandoraStrategy также использует SimTrade API и SimMdAPI для подключения к платформе моделирования (PandoraSimulator).
Схема соединения модулей:
Модуль соединения
┌────────────────────────────┐
│ │
│ User Strategy │
│ │
└────────────────────────────┘
| | |
Get Info Orders Call Back
Получение информации Отмена заказов Уведомления через обратные вызовы
| | |
Стратегическая платформа (со встроенным управлением рисками) Платформа моделирования
┌────────────────────────────────┐ ┌───────────────────────┐
| | | |
| |-----Sim Trade API-----| |
| Pandora Basic Strategy | | PandoraSimulator |
| |-----Sim Md API--------| |
| | | |
└────────────────────────────────┘ └───────────────────────┘
| |
Trade API MD API
Торговый интерфейс Интерфейс рыночных данных
| |
Брокерские платформы (CTP, QDP etc.)
┌────────────────────────────────┐
| |
| брокер |
| CTP QDP Femas etc. |
| |
└────────────────────────────────┘
| | | |
CFFEX SHFE DCE ZCE
Шанхайская фондовая биржа Шэньчжэньская фондовая биржа Далянская товарная биржа Zhengzhou Commodity Exchange
Эта платформа абстрагирует торговую стратегию и предоставляет унифицированный промежуточный уровень интерфейса для стратегий. Стратегии получают доступ ко всей необходимой информации через платформу, не заботясь о деталях торговых интерфейсов, что обеспечивает разделение разработки стратегий и торговых интерфейсов. Одна и та же стратегия может быть адаптирована к различным торговым интерфейсам, позволяя изменять брокерские платформы и проводить моделирование. Это помогает эффективно проверять логическую корректность стратегии.
На схеме Trade API можно заменить на API от Feima, QDP или других платформ. Замена торгового интерфейса не потребует изменений в стратегии. Аналогично, MD API может быть заменён на другие API или даже на широковещательные данные.
Платформа поддерживает операционную систему Linux. Версия для разработки поддерживает CentOS 7.3. Если вы используете Ubuntu, рекомендуется скопировать библиотеки из папки Ubuntu и заменить их. В случае несовместимости или необходимости поддержки других версий Linux или API-компонентов, обратитесь к автору (электронная почта: pandoratrader@163.com). ### Репозитории
PANDORATRADER
│ PandoraTrader.sln
│ README.md
│
├─Interface
│ ├─lib-----------------------------------------------------платформенные файлы поддержки библиотек
│ │ ├─Debug
│ │ │
│ │ ├─Release
│ │ │
│ │ └─X64
│ │ ├─Debug
│ │ │
│ │ └─Release
│ │
│ ├─include-------------------------------------------------общедоступные заголовочные файлы платформы
│ │
│ ├─CTPTradeApi64-------------------------------------------X64 CTP API 6.5.1
│ │
│ └─CTPTradeApi32-------------------------------------------Win32 CTP API 6.5.1
│
├─PandoraTrade-----------------------------------------------программа для реальной торговли
│ ReadMe.txt
│ PandoraTrader.vcxproj
│ stdafx.cpp
│ stdafx.h
│ targetver.h
│ PandoraTrader.vcxproj.user
│ PandoraTraderConfig.xml-------------------------------файл конфигурации стратегии торговли, отвечающий за конфигурацию данных о рынке (предварительный адрес, пользователь, пароль и т. д.), торговлю (предварительный адрес, пользователь, пароль, авторизация и т.д.), файл конфигурации стратегии и т. д.
│ PandoraDemoStrategyTrader.cpp-------------------------основная программа платформы стратегии торговли, ответственная за создание экземпляров стратегий, данных о рынке и торговле, а также их инициализацию
│
├─PandoraSimulator-------------------------------------------программа для проверки на истории
│ PandoraSimulator.vcxproj
│ PandoraSimulator.vcxproj.user
│ PandoraSimulator.vcxproj.filters
│ PandoraSimulator.cpp----------------------------------основная программа для проверки на истории, ответственная за создание экземпляра системы проверки на истории, включая стратегию, модуль имитации торговли и модуль имитации согласования и т. д.
│ HisMarketDataIndex.xml--------------------------------файл исторических рыночных данных
│ PandoraSimulatorConfig.xml----------------------------файл конфигурации для использования при проверке на истории
│
├─PandoraStrategy--------------------------------------------библиотека пользовательских стратегий
│ PandoraStrategy.vcxproj
│ PandoraStrategy.vcxproj.user
│ PandoraStrategy.vcxproj.filters
│ cwEmptyStrategy.cpp---------------------------------------пустая стратегия cpp
│ cwEmptyStrategy.h-----------------------------------------заголовок пустой стратегии (ничего не делает, используется для проверки подключения, входа и т. д.)
│ cwStrategyDemo.h------------------------------------------заголовок демонстрационной стратегии
│ cwStrategyDemo.cpp----------------------------------------демонстрационная стратегия cpp
│
└─cwStrategys------------------------------------------------системная библиотека стратегий, предоставляющая готовые стратегии и необходимую поддержку
│
├─include
│ cwMarketDataBinaryReceiver.h-----------------------стратегия приёма и хранения данных в двоичной форме
│ cwMarketDataReceiver.h-----------------------------стратегия приёма и хранения данных в формате csv
│
└─lib-----------------------------------------------------библиотеки для имитатора проверки на истории и стратегий
├─X64
│ ├─Debug
│ │
│ └─Release
│
├─Debug
│
└─Release
Это введение предназначено для того, чтобы вы могли быстро начать использовать эту платформу.
Если вы используете Linux, пожалуйста, получите последнюю версию из ветки develop_6_5_1, используя CMake и G++ для компиляции проекта.
git clone -b develop_6_5_1 https://github.com/pegasusTrader/PandoraTrader.git
После перехода в каталог проекта:
Компиляция debug:
mkdir builddebug
cd builddebug
cmake -DCMAKE_BUILD_TYPE=DEBUG ..
make
Компиляция Release:
mkdir buildrelease
cd buildrelease
cmake -DCMAKE_BUILD_TYPE=RELEASE ..
make
Если вы работаете в Windows, рекомендуется использовать Visual Studio для управления проектами и компиляции. Следуйте настроенному проекту, чтобы быстро приступить к количественному анализу с помощью Pandora.
Эта платформа требует IDE VS2015 или более поздней версии, которую можно загрузить и установить по следующей ссылке:
https://visualstudio.microsoft.com/zh-hans/vs/
Откройте проект группы через PandoraTrader.sln, который включает в себя платформу для торговли PandoraTrader, проект библиотеки стратегий PandoraStrategy и платформу для проверки на истории PandoraSimulator, как показано в структуре каталогов. Вы можете напрямую использовать платформу торговли для торговли стратегиями или имитировать торговую среду, или использовать нашу платформу для проверки на истории для тестирования.
В платформе торговли, в проекте PandoraTrader есть PandoraDemoStrategyTrader.cpp, который является точкой входа основной функции, демонстрирующей, как инстанцировать код этой платформы. Этот процесс инстанцирования может служить общим кодом, и вы можете скомпилировать новую программу торговли, заменив включённые стратегии. Проект библиотеки стратегий PandoraStrateg включает демонстрационную стратегию, то есть cwStrategyDemo, которую можно скомпилировать для получения автоматической торговой стратегии, которую можно запустить и изучить её функции. Этот демо-материал показывает, как получить доступ к информации о поддержании позиций и ордеров на платформе через cwBasicStrategy. Он также демонстрирует, как размещать и отменять ордера, а также проводить операции в соответствии с рыночными условиями.
После освоения этих базовых операций вы сможете создавать собственные стратегии. Для этого нужно добавить новую стратегию в PandoraStrateg и сделать её производной от cwBasicStrategy, реализовав функции PriceUpdate, OnRtnTrade, OnRtnOrder и OnOrderCanceled для обработки соответствующих событий. В этих функциях можно выполнять операции с ордерами и позициями в зависимости от рыночных условий. Если требуются сложные и ресурсоёмкие вычисления, рекомендуется запустить отдельный поток для их выполнения. Важно, чтобы функция обратного вызова возвращалась как можно быстрее после завершения обработки.
PriceUpdate: обработка рыночных данных при обновлении.
OnRtnTrade: обработка отчётов о сделках при их совершении.
OnRtnOrder: обработка отчётов об ордерах при их изменении.
OnOrderCanceled: реакция на успешное снятие ордера.
Завершив разработку стратегии, не забудьте заменить стратегию demo в PandoraDemoStrategyTrader на свою новую стратегию. При разработке новой стратегии рекомендуется создать новый класс стратегии, так как платформа может быть обновлена, и это может повлиять на демонстрационную стратегию.
В папке Interface есть инструменты, которые могут упростить разработку и решение проблем:
При тестировании вашей стратегии на симуляторе Simnow необходимо настроить файл PandoraTraderConfig.xml следующим образом:
Для прямого подключения к реальной торговле просто введите соответствующую информацию в конфигурационный файл.
При использовании платформы тестирования PegasusSimulatorConfig.xml необходимо выполнить следующие шаги:
Установите значение type="2" для настройки источника и формата исторических данных во время тестирования. Значение 0 указывает на один CSV-файл, 1 — на двоичный (bin) файл, 2 — на последовательный CSV-файл и 3 — на двоичный последовательный файл.
Настройте HisMarketDataIndex.xml для чтения исторических торговых данных. Поместите полный путь к файлу торговых данных в . DateIndexId должен состоять из 9 цифр, последняя из которых равна 0 для белого рынка и 1 для ночного рынка. Если вам нужно протестировать данные за несколько дней, добавьте дополнительные записи в файл.
Настройте PegasusSimulatorConfig.xml, указав полные пути к файлам HisMarketDataIndex.xml и Instrument.xml в . Введите интересующий вас фьючерсный контракт в раздел .
Если вам нужны исторические данные, вы можете использовать классы cwMarketDataReceiver или cwMarketDataBinaryReceiver для создания программы, которая будет собирать рыночные данные. Запустите эту программу по расписанию, чтобы получать данные автоматически. Классы cwMarketDataReceiver и cwMarketDataBinaryReceiver сохраняют данные в формате CSV и двоичном формате соответственно.
Эти стратегии требуют правильной настройки рыночных и торговых конфигураций, поскольку они должны автоматически подписываться на текущие торговые контракты. Вы также можете написать свою собственную программу для сбора рыночных данных, которая автоматически подпишется на рыночную информацию после запуска. Программа будет получать информацию о контрактах с торговой платформы и сохранять рыночные данные.
Столбцы в файле Simulator, определяющем рыночные данные, включают местное время, рыночные данные, идентификатор инструмента, торговый день, время обновления, миллисекунды обновления, последнюю цену, объём, последний объём, оборот, последний оборот, пять цен Ask, четыре цены Ask, три цены Ask, две цены Ask, одну цену Ask, пять цен Bid, четыре цены Bid, три цены Bid, две цены Bid и одну цену Bid. Также включены объёмы Ask и Bid для каждой цены.
Стратегия может быть пустой, без обработки данных, или может включать в себя инструменты, такие как автоматические стоп-лосс и тейк-профит, парные сделки или маркет-мейкерство. Стратегия может включать арбитраж, диапазонную торговлю или высокочастотную маркет-мейкерскую торговлю. Она также может основываться на тенденциях, таких как DualTrust.
Ядро библиотеки кода доступно по приглашению. Разработчики с опытом работы в C++ могут отправить сообщение на pandoratrader@163.com для получения дополнительной информации. Автор готов ответить на вопросы и предложения.
Автор также интересуется внедрением технологий искусственного интеллекта в платформу. Если у вас есть идеи для стратегий или платформы, связанные с ИИ, пожалуйста, свяжитесь с автором по адресу pandoratrader@163.com.
Программное обеспечение открыто для общего использования, но не для продажи. Автор прилагает усилия для обеспечения надёжности программного обеспечения, но из-за сложности системы не может гарантировать отсутствие ошибок. Ответственность за любые убытки, вызванные программным обеспечением, не несёт автор.
Если поддержка CTP (Continuous Trading Platform) приостановлена, рекомендуется приостановить использование платформы.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )