1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wuchangsheng-PandoraTrader

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Пандора Трейдер: Торговая платформа

Происхождение названия:

Согласно информации из Википедии, Пандора — это первая женщина, созданная Гефестом из глины. Боги наделили её различными дарами: Афина подарила ей одежду, Афродита — красоту и способность соблазнять мужчин, Гермес научил её говорить. Все боги преподнесли ей дар, кроме богини мудрости Афины, которая отказалась это делать.

В древнегреческом языке «пан» означает «всё», а «дора» — «дар». Таким образом, имя Пандора означает «женщина, наделённая всеми дарами». В данном контексте оно символизирует торговую платформу, обладающую всеми навыками.

Мы разработали такую торговую платформу, которая обладает всеми навыками, за исключением мудрости. Мудрость принадлежит разработчику стратегии, который должен создать отличную стратегию для торговой платформы, чтобы она могла успешно работать на волатильном рынке, используя ветер и волны.

История звезды

Star History Chart

Особенности платформы:

Платформа разработана на C++, поддерживает различные торговые API и является высокочастотной платформой для количественной торговли, работающей на разных платформах.

  • Эффективность: C++ обеспечивает низкую задержку и прямое подключение к терминалу без необходимости в дополнительных серверах.
  • Гибкость: Компоненты рынка могут быть объединены в любой комбинации. При переключении между рыночными или торговыми интерфейсами стратегия не требует изменений. Поддерживаются различные торговые интерфейсы, такие как CTP, QDP и Femas.
  • Простота использования: Платформа работает на Linux и Windows. Стратегия имеет дружественный интерфейс, требующий только внимания к логической части стратегии. Информация о позициях, ордерах и других данных хранится локально, что позволяет упростить логику стратегии. Платформа также поддерживает автоматический режим открытия и закрытия позиций.
  • Безопасность и стабильность: Платформа стабильно работает с начала 2017 года. Встроенный механизм управления рисками решает проблемы с количеством отмен и автоматической торговлей.

Почему стоит использовать 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). ### Репозитории

Ветви

  • Master: версия программы для реальной торговли.
  • develop_6_5_1: версия для добавления новых функций и тестирования, которая будет постоянно обновляться, некоторые функции могут находиться в разработке.

Структура каталогов:

    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.

  1. Эта платформа требует IDE VS2015 или более поздней версии, которую можно загрузить и установить по следующей ссылке:

    https://visualstudio.microsoft.com/zh-hans/vs/
  2. Откройте проект группы через PandoraTrader.sln, который включает в себя платформу для торговли PandoraTrader, проект библиотеки стратегий PandoraStrategy и платформу для проверки на истории PandoraSimulator, как показано в структуре каталогов. Вы можете напрямую использовать платформу торговли для торговли стратегиями или имитировать торговую среду, или использовать нашу платформу для проверки на истории для тестирования.

  3. В платформе торговли, в проекте PandoraTrader есть PandoraDemoStrategyTrader.cpp, который является точкой входа основной функции, демонстрирующей, как инстанцировать код этой платформы. Этот процесс инстанцирования может служить общим кодом, и вы можете скомпилировать новую программу торговли, заменив включённые стратегии. Проект библиотеки стратегий PandoraStrateg включает демонстрационную стратегию, то есть cwStrategyDemo, которую можно скомпилировать для получения автоматической торговой стратегии, которую можно запустить и изучить её функции. Этот демо-материал показывает, как получить доступ к информации о поддержании позиций и ордеров на платформе через cwBasicStrategy. Он также демонстрирует, как размещать и отменять ордера, а также проводить операции в соответствии с рыночными условиями.

После освоения этих базовых операций вы сможете создавать собственные стратегии. Для этого нужно добавить новую стратегию в PandoraStrateg и сделать её производной от cwBasicStrategy, реализовав функции PriceUpdate, OnRtnTrade, OnRtnOrder и OnOrderCanceled для обработки соответствующих событий. В этих функциях можно выполнять операции с ордерами и позициями в зависимости от рыночных условий. Если требуются сложные и ресурсоёмкие вычисления, рекомендуется запустить отдельный поток для их выполнения. Важно, чтобы функция обратного вызова возвращалась как можно быстрее после завершения обработки.

PriceUpdate: обработка рыночных данных при обновлении.

OnRtnTrade: обработка отчётов о сделках при их совершении.

OnRtnOrder: обработка отчётов об ордерах при их изменении.

OnOrderCanceled: реакция на успешное снятие ордера.

Завершив разработку стратегии, не забудьте заменить стратегию demo в PandoraDemoStrategyTrader на свою новую стратегию. При разработке новой стратегии рекомендуется создать новый класс стратегии, так как платформа может быть обновлена, и это может повлиять на демонстрационную стратегию.

В папке Interface есть инструменты, которые могут упростить разработку и решение проблем:

  • cwStrategyLog.h: позволяет реализовать логирование ордеров, снятия ордеров и сделок.
  • cwBasicCout.h: класс вывода, который позволяет отображать нужные переменные аналогично printf.

При тестировании вашей стратегии на симуляторе Simnow необходимо настроить файл PandoraTraderConfig.xml следующим образом:

  1. Введите информацию о торговом счёте (бэкенд, брокерский идентификатор, идентификатор пользователя и пароль) в следующих разделах:
    • — конфигурация рыночных данных.
    • — конфигурация торговли.
  2. Введите интересующие вас фьючерсные контракты в разделе . Эту информацию также можно вызвать из стратегии.
  3. Обратитесь к службе поддержки симулятора, если у вас нет этой информации.

Для прямого подключения к реальной торговле просто введите соответствующую информацию в конфигурационный файл.

При использовании платформы тестирования PegasusSimulatorConfig.xml необходимо выполнить следующие шаги:

  1. Установите значение type="2" для настройки источника и формата исторических данных во время тестирования. Значение 0 указывает на один CSV-файл, 1 — на двоичный (bin) файл, 2 — на последовательный CSV-файл и 3 — на двоичный последовательный файл.

  2. Настройте HisMarketDataIndex.xml для чтения исторических торговых данных. Поместите полный путь к файлу торговых данных в . DateIndexId должен состоять из 9 цифр, последняя из которых равна 0 для белого рынка и 1 для ночного рынка. Если вам нужно протестировать данные за несколько дней, добавьте дополнительные записи в файл.

  3. Настройте 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Китайская платформа для торговли производными инструментами использует C++ для создания оболочки CTP и предоставляет дружественный интерфейс для модели стратегической торговли. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/wuchangsheng-PandoraTrader.git
git@api.gitlife.ru:oschina-mirror/wuchangsheng-PandoraTrader.git
oschina-mirror
wuchangsheng-PandoraTrader
wuchangsheng-PandoraTrader
master