一、CTP的API分爲行情API和交易API介紹:
其中行情API提供兩類接口,用戶通過CThostFtdcMdApi發送請求,通過CThostFtdcMdSpi收到接口的相應回報。
交易API同樣也有兩類接口,用戶通過CThostFtdcTraderApi發送請求,通過CThostFtdcTraderSpi收到接口的相應回報。
二、CTP的報單流程:
CTP終端報單指令(ReqOrderInsert)報入CTP後臺,首先要經過數據同步狀態、會話、報單字段、合約、經紀公司、投資者、是否確認結算單、交易權限、持倉資金檢查和凍結、只能平倉權限檢查及交易所會話檢查等,CTP報單檢查失敗則通過OnRspOrderInsert返回報單錯誤(CTP打回的錯單),根據CTP介紹,OnRspOrderInsert屬於對話通訊模式,即普通的客戶/服務器模式,也就是說服務器只會將此類返回信息發送給對應的客戶會話,通訊故障發生時,此類數據流也存在丟失的可能。
通過交易所繫統檢查的報單,交易所繫統會將對應的報單插入報單薄,並通知CTP後臺,CTP收到交易所繫統響應後也會向客戶端返回OnRtnOrder消息,其OrderSubmitStatus爲“已經接受”,OrderStatus爲“未成交還在隊列中”。
當成交發生後(全部成交或部分成交),CTP後臺將向客戶端返回OnRtnTrade消息,同時也會返回OnRtnOrder消息,其中rderSubmitStatus爲“已經接受”,OrderStatus爲“全部成交”或“部分成交還在隊列中”。
三、關於下單的一些說明:
通過對下單類型的不斷嘗試,必須要填限價單否則無法下單成功; 下單之前必須要確認,但是CTP服務器有時會報錯。
三、statusmsg回報各種錯誤總結:
(1)CTP不合法登入:檢查登入用戶名或者密碼,是否有錯
(2)CTP無此權限:每天登入之前必須要確認用戶交易信息,且保證保單下單的用戶信息和登入的信息一致
(3)報單字段錯誤:檢查是否有漏掉必須的報單字段或者報單的值填寫正確, 有些標的的限價單價格爲int類型,浮點類型上傳也會報此錯誤
(4)價格跌破跌停板:限價單下單的價格和期貨正式價格差異較大
(5)訂單已提交,且已撤銷:由於填寫的是已立即成交否則撤單,所以沒立即成交就會撤銷