CTP开发——初始化
来源:互联网 发布:发哥网络推广 编辑:程序博客网 时间:2024/06/06 05:56
最近完成了公司的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退不出的。
- CTP开发——初始化
- CTP开发——登录/查询
- CTP开发——下单
- CTP开发——修改密码/登出
- CTP开发——期权操作
- CTP开发——资金转账(银期转账)
- 开发CTP自动化交易日志
- 【CTP学习笔记】CTP客户端开发指南 学习笔记一
- 基于CTP的程序化交易系统开发
- 基于CTP的程序化交易系统开发
- CTP: 初始化成功和TradeAPI、MDAPI登陆成功
- 【Directx3D游戏开发】——Directx3D初始化
- ios开发——NSIndexPath初始化
- 小白期货CTP程序化交易开发入门(一)--CTP开发基础
- VC++ 2005 10月 CTP 版不支持 Windows Mobile 开发
- 基于CTP的程序化交易系统开发(一)
- 基于CTP的程序化交易系统开发(一)
- 基于CTP的程序化交易系统开发(二)
- 自适应meta
- 再次写给我们这些浮躁的程序员
- 3.Swift的Guard语句
- Linux 日志切割工具cronolog详解
- NOIP复习-006——最小生成树
- CTP开发——初始化
- (checkbox)的使用 (全选/取消全选)示例
- CYC-Swift高级开发语言--结构体,类,构造器,属性
- WPF中DataGrid中的DataGridCheckBoxColumn用法(全选,全否,反选)
- 【xampp】修改apache的admin按钮默认路径
- error C2864:只有静态常量整型数据成员才可以在类中初始化
- 未能加载文件或程序集Office, Version=2.2.0.0, Culture=neutral, PublicKeyToken=null或它的某一个依赖项
- android framework
- gcc常见的编译指令