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)訂單已提交,且已撤銷:由於填寫的是已立即成交否則撤單,所以沒立即成交就會撤銷



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章