• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PandoraTrader: 中国国内期货交易平台,采用 C++ 对 CTP 进行一层封装,提供友好的接 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

PandoraTrader

开源软件地址:

https://gitee.com/wuchangsheng/PandoraTrader

开源软件介绍:

PandoraTrader

A Trade Platform

起名由来:

据百度百科介绍,Pandora 是希腊神话中赫菲斯托斯用粘土做成的第一个女人。
众神赠予使她拥有更诱人的魅力的礼物:火神赫菲斯托斯给她做了华丽的金长袍;爱神维纳斯赋予她妩媚与诱惑男人的力量;众神使者赫耳墨斯教会了她言语的技能。神灵们每人给她一件礼物,但唯独智慧女神雅典娜拒绝给她智慧。
古希腊语中,潘是所有的意思,多拉则是礼物。“潘多拉”即为“拥有一切天赋的女人”,在此,则寓意为“拥有一切技能的交易平台”。
我们设计这样一个交易平台拥有设计者赋予各种技能,唯独不携带智慧;这个智慧是属于策略设计者的,期待策略设计者设计优秀的策略给予交易软件足够的智慧,能够在飘荡的市场上乘风破浪,挂云帆济沧海。

平台特色:

基于c++开发,支持多种交易API,跨平台的高频量化交易平台

高效

  • c++
  • 低延时, 直连柜台,无需其他服务器支持

灵活

  • 行情交易接口,作为系统组件,可任意组合
  • 行情或交易接口切换,策略无需调整
  • 支持多种交易接口,如CTP,QDP,Femas等

易用

  • 跨平台支持Linux和Windows
  • 友好策略接口,只需关注策略逻辑
  • 仓位挂单等信息本地维护,策略可同步获取,简化逻辑
  • 支持自动开平模式
  • Tick级别回测

安全稳定

  • 2017年初稳定运行至今
  • 内嵌风控,撤单次数和自成交不再成烦恼

组件架构:

PandoraTrader平台架构如下图所示,用户策略是程序的核心,各个组件相互配合,都是为用户策略服务。

用户策略(User Strategy)可以通过Pandora策略平台订阅行情,获取持仓,挂单,合约信息等;可以下单,撤单;策略平台会通过回调通知的方式,通知用户策略。

Pandora策略平台,通过实盘交易接口 Trade API 和MarketData API的组件可以连接到期货公司的柜台,通过这两个组件,实现行情订阅,下单和撤单等操作。

Pandora策略平台,通过回测交易接口,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.)    ┌────────────────────────────────┐    |                                |    |              broker            |    |        CTP QDP  Femas etc.     |    |                                |    └────────────────────────────────┘         |      |       |        |       CFFEX   SHFE    DCE      ZCE       中金所  上期所  大商所    郑商所

该平台对交易策略进行抽象,提供统一的中间层接口给策略,策略需要的信息都通过平台提供的中间层进行访问,不关注交易接口的细节,从而实现策略开发和交易接口开发的分离。同一个策略通过调整交易接口组件,改变交易柜台,甚至是进行回测模拟。可以有效验证策略逻辑的正确性。上图中的Trade API可以替换成飞马,QDP等柜台的api,交易api替换,策略可以不用调整。MD API同样可以替换成别的api,甚至是组播,广播数据。平台支持 Linux 版本,develop分支支持Ubuntu,如遇到不兼容,需要支持其他Linux版本或者别的API组件,可与作者联系(邮件地址:[email protected])!

程序展示

imageavatar

仓库路径

分支说明

  • Master: 目前实盘程序交易的版本
  • develop: 新功能添加和测试的版本,会持续更新,可能部分功能处于开发中间状态。

目录结构:

	PANDORATRADER	│  PandoraTrader.sln	│  README.md	├─Interface	│  ├─lib-----------------------------------------------------平台支持库文件	│  │  ├─Debug	│  │  │	│  │  ├─Release	│  │  │	│  │  └─X64	│  │      ├─Debug	│  │      │	│  │      └─Release	│  │	│  ├─include-------------------------------------------------平台公共头文件	│  │	│  ├─CTPTradeApi64-------------------------------------------X64 CTP API 6.3.15	│  │	│  └─CTPTradeApi32-------------------------------------------Win32 CTP API 6.3.15	├─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分支上获取最新内容,使用CMAKE,G++来编译工程

    git clone -b develop 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. 本平台要求 VS2015 及以上版本的 IDE,可通过以下链接进行下载并安装:

    https://visualstudio.microsoft.com/zh-hans/vs/
  2. 通过 PandoraTrader.sln 打开项目组,其中包含了交易平台 PandoraTrader, 策略库工程PandoraStrategy 和回测平台 PandoraSimulator,详细如目录结构所示。您可直接利用交易平台对策略进行实盘交易或者模拟环境交易,也可利用我们的回测平台进行测试。

  3. 交易平台中,PandoraTrader 工程中有PandoraDemoStrategyTrader.cpp 是 main 函数的入口,作为一个如何实例化该平台代码的 demo。
    该实例化过程可以作为通用代码,只要替换其中包含的策略,就可以编译出一个新的交易程序。
    策略库工程PandoraStrateg中自带一个demo策略,即cwStrategyDemo,直接编译就可以获得一个自动交易策略,可以边运行边了解其中功能。
    这个demo提供了如何通过cwBasicStrategy访问平台中维护的持仓信息,挂单信息,根据行情下单,以及进行报单撤单等操作。有这些基础操作知识后,您就可以组合搭建属于您自己的策略。
    只需在PandoraStrateg工程中添加一个新的策略,以 cwBasicStrategy 为基类派生一个您的策略类,实现 PriceUpdate,OnRtnTrade,OnRtnOrder,OnOrderCanceled 这几个函数即可在相应的回调中做相应的处理。
    可以在回调函数中根据行情,持仓和挂单信息,进行报单,撤单等操作。如果有复杂耗时的数学计算,请起一个线程进行计算。秉持原则是让回调函数尽快返回处理后续的操作。

    PriceUpdate:行情更新,当有最新行情更新时,该函数会被调用,可以在该函数内完成行情处理; OnRtnTrade:成交回报,当有成交时,该函数会被调用,如果需要在成交后相应处理,可以在该函数内完成; OnRtnOrder:报单回报,每次报单有更新时,该函数会被调用,可以在该函数内做相应的处理; OnOrderCanceled:当撤单成功后随即进入该函数并作出反应。

    完成策略开发后,记得将 PandoraDemoStrategyTrader 中的策略demo替换为您的新策略。在开发新策略的时候,强烈建议新建一个策略类。因为平台维护升级,可能会为了丰富这个Demo策略内容进行更新修改,以免您获取最新更新时,遇到不必要的麻烦。

  4. Interface 文件夹下提供一些工具,可以更方便进行开发,排查问题。例如:

    cwStrategyLog.h:可自由实现log日志,观察报单、撤单及成交等情况; cwBasicCout.h:输出类,可将所需变量输出显示,基础用法与printf类似。
  5. 利用Simnow模拟盘测试您的策略时,您需要对 PandoraTraderConfig.xml 进行以下配置:

     将模拟盘交易的账号信息(后置、BrokerID、UserID及密码)填写至 <MarketDataServer Front="tcp://180.168.146.187:10110" BrokerID="9999" UserID="" PassWord=""/>		//行情配置信息 <TradeServer Front="tcp://180.168.146.187:10100" BrokerID="9999" UserID="" PassWord="" ProductInfo="Pandora" AppID="Pandora" AuthCode="Pandora"/>		//交易配置信息 并在<Instrument ID="j1909"/>中输入所需测试的期货合约(可以配置多个)即可,也可以在策略中调用。

    若您暂不知晓该信息,可联系模拟盘平台客服获取。如果您要直接接入实盘交易,只要在配置文件中填入相应的实盘信息

  6. 利用回测平台测试您的策略时,您需要对PegasusSimulatorConfig.xml文件进行配置:

     type="2" 用于配置回测时历史数据源和形式, 0表示单个csv文件,1表示二进制(bin)文件,2表示csv 序列文件,3表示二进制(bin)序列文件 HisMarketDataIndex.xml:用于读取历史交易数据。将交易数据文件的全路径放置于<MDFile DateIndexId="201905160" FilePath="\\Mac\Home\Desktop\PandoraTrader-master\MarketData_20190529_084005.csv" />,DateIndexId为9位数字,最后一位0表示白盘,1则表示夜盘。如需同时回测多天数据,按照此格式在后面继续补充即可;  PegasusSimulatorConfig.xml:将HisMarketDataIndex.xml和Instrument.xml的全路径填写至<SimulatorServer Front="F:\HisData\HisMarketDataIndex.xml" Interval="0" Instrument="F:\HisData\Instrument.xml"/>,并在<Instrument ID="j1909"/>中输入所需测试的期货名称。

如果需要历史数据,可以用cwMarketDataReceiver或cwMarketDataBinaryReceiver提供的类,作为策略类编译一个行情存储程序。用计划任务的方式定时启动,来收取历史数据。cwMarketDataReceiver存下csv文件,cwMarketDataBinaryReceiver存下的是bin的二进制文件。这两个策略要正确配置行情和交易配置信息,因为需要从交易柜台获取当前有交易合约,从而实现自动订阅合约。也可以自行编写行情存储程序来自动收行情,程序启动之后,从交易spi中获取合约信息,订阅行情,然后将行情存储下来。Simulator定义的行情csv文件列如下

Localtime,MD,InstrumentID,TradingDay,UpdateTime,UpdateMillisec,LastPrice,Volume,LastVolume,Turnover,LastTurnover,AskPrice5,AskPrice4,AskPrice3,AskPrice2,AskPrice1,BidPrice1,BidPrice2,BidPrice3,BidPrice4,BidPrice5,AskVolume5,AskVolume4,AskVolume3,AskVolume2,AskVolume1,BidVolume1,BidVolume2,BidVolume3,BidVolume4,BidVolume5,OpenInterest,UpperLimitPrice,LowerLimitPrice

策略开发

用户策略可以是一个空白策略,什么都不做处理;可以是一个工具性策略,比如自动止盈止损程序;可以是一个配对交易策略(Pairs Trading);甚至可以是一个做市商策略。可以套利套保,可以做波段,甚至是高频做市商。

致谢

建议反馈:

如果有什么疑问和建议,您可以发送有邮件给[email protected]于作者取得联系。欢迎加入QQ群(615093081)参与讨论。

捐赠

如果您喜欢这个项目,您可以在您经济允许情况下对该项目进行捐赠,以帮助和激励作者们更好地维护这项目。
捐赠方式:pic文件夹下有支付宝的二维码


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap