CTP开发——初始化

7 篇文章 0 订阅
7 篇文章 27 订阅

最近完成了公司的CTP委托开发,现在可以总结一下了。

CTP是上期技术开发的一套委托交易系统,相关开发资料在这里http://www.sfit.com.cn/5_2_DocumentDown.htm


一、CTP用到的文件

ThostFtdcTraderApi.h C++头文件,包含交易相关的指令,如报单。
ThostFtdcMdApi.h C++头文件,包含获取行情相关的指令。
ThostFtdcUserApiStruct.h 包含了所有用到的数据结构。
ThostFtdcUserApiDataType.h 包含了所有用到的数据类型。
thosttraderapi.dll 交易部分的动态链接库和静态链接库。
thosttraderapi.lib
thostmduserapi.dll 行情部分的动态链接库和静态链接库。
thostmduserapi.lib
error.dtd 包含所有可能的错误信息。
error.xml


二、CTP初始化

1. 创建SPI 和API 实例。
这里的SPI 是指开发者创建的自己的类,该类已经继承了接口中的SPI 接口类(CThostFtdcTraderSpi 或
CThostFtdcMdSpi)。而API 即接口中提供的CThostFtdcMdApi 或CThostFtdcTraderApi。
2. 向API 实例注册SPI 实例。
3. 向API 实例注册前置地址。交易接口需要注册交易前置地址,行情接口需要注册行情前置地址。
4. 订阅公有流(仅限交易接口,行情接口不需要)。用于接收公有数据,如合约在场上的交易状态。默认
模式是从上次断开连接处继续收取交易所发布数据(Resume 模式)开发者还可以指定全部重新获取
(Restart),或从登陆后获取(Quick)。
5. 订阅私有流(仅限交易接口,行情接口不需要)。用于接收私有数据,如报单回报。默认模式是从上次
断开连接处继续收取交易所发布数据(Resume 模式)开发者还可以指定全部重新获取(Restart),或从
登陆后获取(Quick)。
6. 初始化。(Init)
7. 等待线程退出。(Join)


这里我就不贴代码了,我这里主要讲一下注意事项。

1、CTP支持TCP/UDP协议,支持socks4、socks4a 及 socks5代理,以及支持SSL安全套接字。


2、RegisterFront格式,这里给几个例子:

//udp://180.168.212.79:31205
//"tcp:// asp-sim2-front1.financial-trading-platform.com:26205 sock5://user:pass@127.0.0.1:10001" //socks4、socks4a 及 socks5
//RegisterFront("ssl:// ssl 前置 IP 地址或域名:端口号"); 


3、RegisterFront可以调用多次,如果你有多个前端地址的话,等于注册了多个前端地址,CTP内部会在网络断了的情况下自动去切换的。


4、公有流和私有流的订阅

SubscribePublicTopic(THOST_TERT_RESTART); //公有流只有OnRtnInstrumentStatus,THOST_TERT_RESTART这样你可以实时跟踪每一种分类、每一个代码的当前状态

/
///TFtdcInstrumentStatusType是一个合约交易状态类型
/
///开盘前
#define THOST_FTDC_IS_BeforeTrading '0'
///非交易
#define THOST_FTDC_IS_NoTrading '1'
///连续交易
#define THOST_FTDC_IS_Continous '2'
///集合竞价报单
#define THOST_FTDC_IS_AuctionOrdering '3'
///集合竞价价格平衡
#define THOST_FTDC_IS_AuctionBalance '4'
///集合竞价撮合
#define THOST_FTDC_IS_AuctionMatch '5'
///收盘
#define THOST_FTDC_IS_Closed '6'

SubscribePrivateTopic(THOST_TERT_QUICK); //私有流,建议使用THOST_TERT_QUICK,这样在登录上之后,可以自己主动请求市场、分类、合约、持仓、委托、成交等等,然后等待私有推送,这种模式是最适合保持数据一致的。


5、CTP断开OnFrontDisconnected,你不用主动去重新连接,CTP后台会自己去重连的。


6、为了保证CTP的工作效率,最好不要在CTP线程里处理耗时的工作,可以自己建立单独线程处理。


7、CTP join函数是防止主线程退出的,实际项目开发中不需要使用这个函数的


三、CTP退出

调用Release函数即可,不需要delete的

这里要注意的是:在Release之前不需要调用RegisterSpi(NULL);注销Spi的,如果这样做了,有可能导致CTP退不出的。



  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
CTP(中国金融期货交易所)是国内比较重要的期货交易平台,目前已经成为了全球最大的期货市场之一。对于高频交易者来说,CTP是一个非常重要的平台,因为它提供了高效、稳定的交易接口。 以下是一些CTP高频开发教程: 1. CTP官方文档:在开始进行CTP高频开发之前,建议您先熟悉CTP的官方文档。这些文档包括CTP API接口文档、CTP交易规则、CTP交易指南等。这些文档可以帮助您了解CTP的基本知识和API的使用方法。 2. CTP开发环境配置:在开始开发之前,需要安装CTP开发环境。CTP提供了多种语言的API接口,包括C++、Python、Java等。根据您的编程语言选择相应的API接口,并按照官方文档进行环境配置。 3. CTP高频交易策略开发:在掌握CTP的基本知识和API接口之后,可以开始进行高频交易策略的开发。高频交易策略的开发需要考虑到市场行情、交易规则、风险控制等多方面因素。可以参考一些已有的交易策略,并进行优化和改进。 4. CTP高频交易系统搭建:在开发完高频交易策略之后,需要将其部署到一个稳定的交易系统中。可以使用一些流行的开源框架,如vnpy、pyctp等,进行高频交易系统的搭建。 5. CTP高频交易系统测试与优化:在完成交易系统的搭建之后,需要进行一些测试和优化工作。测试可以包括回测、实盘测试等。通过优化,可以提高交易系统的效率和稳定性。 以上是CTP高频开发的一些基本教程,希望能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值