author: Ian
Vn.Py笔记 ✏📔#
#
一个开源Python交易软件,主使用CTP协议。当然,还有其他协议了其源项目在http://www.vnpy.org/
初期笔记#
报单交易过程中,
CTP使用BrokerID 从业务层面完全隔离不同经纪公司的交易、风控及结算用户的接入。
BrokerID具体取值咨询开户的经纪公司。
CTP中 UserID为操作员代码,InversterID为投资者代码; 投资者自己下单两者同为投资者代码
CTP-API中,OrderRef和OrderAction 前者为CTP后台提供给客户端标识一笔报
单的字段,从客户端可通过(FrontID、SessionID、OrderRef)唯一确定一笔报
单;;;后者与OrderRef功能相似,提供给客户端来标识一笔撤单。
前者的数据类型为字符数组,必须为阿拉伯数字字符。
OrderRef(OrderActionRef)取值必须保证在同一会话内发送的报单
OrderRef(OrderActionRef)值大于之前的最大值,开发多线程客户端尤为需要
注意。
CTP-API库:
error.dtd\error.xml 错误定义文件 ---- ThostFrfcMdApi.h
交易接口类定义文件
——— ThostFtfcUserApiDataType.h 类型定义文件 ------
thostmduserapi.lib,thostmduserpi.dll 行情接口库文件 -----
thosttraderapi.lib,thosttraderapi.dll交易接口库文件 -----
交易和行情接口类定义文件都包含API 和 SPI类定义,客户端使用API向CTP后台
发送请求,CTP后台则使用SPI向客户端回传响应及回报
行情Demo开发:
1.将API文件复制到工程目录;并将所有的头文件和静态、动态库连链接库
并将文件导入到项目工程中。
先继承行情接口类CThostFtdcMdspi,并实现需要实现的虚函数。
OnFrontConnectde、OnFrontDisconnected、OnPspUserLogin、
OnRspSubMarketDAta
/API工作流程***/
API压缩包——API含常量对应字符、类型定义、操作系统编译定义、回调函数(MdSpi)(柜台向用户端发送信息后被系统自动调用的函数)、主动函数(MdApi)(向柜台发送各种请求和指令)
API工作流程: 创建MdSpi对象(回掉函数),调用MdApi类,以Create开头的静态方法,创建MdApi对象(主动函数),注册MdSpi对象指针,行情柜台前置机地址,调用MdApi对象Init方法初始化连接前置机,连接成功会通过OnFrontConnected回调通知用户,用户获得连接成功通知后,调MdApi的ReqUserLogin登陆,登陆后MdSpi的OnRsqUserLogin通知用户 ———————-到此登陆完成———————
MdApi:(行情相关)
使用MdApi对象的SubscribeMarketData方法,传入参数为想要订阅的“合约
代码”,订阅成功当合约有新行情通过MdApi的OnRtnDepthMarketData回调通知
用户
———————-至此订阅完成——————— 当用户的某次请求发生错误时,会通过OnRspError通知用户 MdApi也含有退订合约、登出功能。 而一般退出程序则直接杀进程(不太安全便是)