CTP交易接口开发所遇问题总结

一、CTP的API分为行情API和交易API介绍:

其中行情API提供两类接口,用户通过CThostFtdcMdApi发送请求,通过CThostFtdcMdSpi收到接口的相应回报。

交易API同样也有两类接口,用户通过CThostFtdcTraderApi发送请求,通过CThostFtdcTraderSpi收到接口的相应回报。


二、CTP的报单流程:

CTP终端报单指令(ReqOrderInsert)报入CTP后台,首先要经过数据同步状态、会话、报单字段、合约、经纪公司、投资者、是否确认结算单、交易权限、持仓资金检查和冻结、只能平仓权限检查及交易所会话检查等,CTP报单检查失败则通过OnRspOrderInsert返回报单错误(CTP打回的错单),根据CTP介绍,OnRspOrderInsert属于对话通讯模式,即普通的客户/服务器模式,也就是说服务器只会将此类返回信息发送给对应的客户会话,通讯故障发生时,此类数据流也存在丢失的可能。

     通过报单检查的报单指令(ReqOrderInsert),CTP后台会向客户端返回OnRtnOrder消息,其中OrderSubmitStatus为“已经提交”,OrderStatus为“未知”。同时CTP后台将该报单指令转发至对应的交易所系统。交易所系统同样会对报单进行相应的检查,如价格是否超出涨跌停板、报单指令是否试用等等,未通过交易所系统检查的报单,CTP收到交易所系统响应后也会向客户端返回OnRtnOrder消息,其中OrderSubmitStatus为“报单已经被拒绝”,OrderStatus为“撤单”。
     通过交易所系统检查的报单,交易所系统会将对应的报单插入报单薄,并通知CTP后台,CTP收到交易所系统响应后也会向客户端返回OnRtnOrder消息,其OrderSubmitStatus为“已经接受”,OrderStatus为“未成交还在队列中”。

      当成交发生后(全部成交或部分成交),CTP后台将向客户端返回OnRtnTrade消息,同时也会返回OnRtnOrder消息,其中rderSubmitStatus为“已经接受”,OrderStatus为“全部成交”或“部分成交还在队列中”。


三、关于下单的一些说明:

通过对下单类型的不断尝试,必须要填限价单否则无法下单成功; 下单之前必须要确认,但是CTP服务器有时会报错。


三、statusmsg回报各种错误总结:

(1)CTP不合法登入:检查登入用户名或者密码,是否有错

(2)CTP无此权限:每天登入之前必须要确认用户交易信息,且保证保单下单的用户信息和登入的信息一致

(3)报单字段错误:检查是否有漏掉必须的报单字段或者报单的值填写正确, 有些标的的限价单价格为int类型,浮点类型上传也会报此错误

(4)价格跌破跌停板:限价单下单的价格和期货正式价格差异较大

(5)订单已提交,且已撤销:由于填写的是已立即成交否则撤单,所以没立即成交就会撤销



你可能感兴趣的:(交易系统)