基於CTP的程式化交易系統開發

2021-06-11 22:40:57 字數 1903 閱讀 4908

自從綜合交易平台(ctp)的api開放以來,很多人開始編寫自己的程式化交易系統,今天我想說說自己的一些看法。

首先解讀一下ctp的介面說明,ctp的api使用建立在tcp協議之上ftd協議(《**交易資料交換協議》)與交易託管系統進行通訊,而交易託管系統負責投資者的交易業務處理。ftd 協議中規定了所有的通訊都基於某一種通訊模式。

交易涉及的通訊模式共有三種:

1.對話通訊模式,是指由會員端主動發起的通訊請求。該請求被交易所端接收和處理,並給予響應。例如報單、查詢等。這種通訊模式與普通的客戶/伺服器模式相同。

2.私有通訊模式,是指交易所端主動,向某個特定的會員發出的資訊。例如成交

回報等。

3.廣播通訊模式,是指交易所端主動,向市場中的所有會員都發出相同的資訊。

例如公告、市場公共資訊等。

ctp的交易api提供了兩個介面,分別為cthostftdctraderapi 和cthostftdctraderspi

我們自己開發的交易系統通過cthostftdctraderapi向ctp傳送操作請求,通過cthostftdctraderspi接收ctp的任何響應。

現在把主要的業務舉例在下表中

業務舉例

通訊模式

cthostftdctraderapi

cthostftdctraderspi

登入對話模式

requserlogin

onrspuserlogin

報單錄入

reqorderinsert

onrsporderinsert

報單查詢

reqqryorder

onrspqryorder

成交查詢

reqqrytrade

onrspqrytrade

報單回報

私有模式

onrtnorder

成交回報

onrtntr

**涉及的通訊模式共有兩種:

1.對話通訊模式,同交易一樣,是指由會員端主動發起的通訊請求。該請求被交易所端接收和處理,並給予響應。例如登入,退訂等。

2.廣播通訊模式,主要是**訂閱,當訂閱**後交易所端主動向會員連續主動發出**資訊。

業務舉例

通訊模式

cthostftdcmdapi

cthostftdcmdspi

登入對話

模式requserlogin

onrspuserlogin

**訂閱

廣播模式

subscribemarketdata

onrspqrydepthmarketdata

**退訂

對話模式

unsubmarketdata

onrspunsubmarketdata

可見,通過ctp提供的介面,我們可以向ctp傳送業務申請,也不斷的按照三種通訊模式中的其中一種接收ctp的響應。因此我們寫的交易系統中至少就應該有兩個執行緒,乙個稱其為主業務執行緒,負責對ctp發出業務申請;另乙個執行緒為api工作執行緒,負責接收ctp通過廣播通訊模式,對話通訊模式,私有通訊模式其中一種模式對交易系統的響應。

綜上所述,我們的程式化交易系統需要完成的業務可以劃分為:

1.基本操作,比如登入,訂閱等;

2.**操作,比如對**資料的接收,儲存等

3.訂單操作,比如報單;對報單,成交狀況的查詢;報單,成交狀況的私有回報等。

4.資料監聽和處理操作,比如接收到新資料之後的統計處理,滿足統計條件後的報單處理(其實這裡就是我們的策略所在)

那麼,我建議將我們的程式化交易系統分為四個執行緒,分別處理上述業務。程式的主線程就可以完成基本操作,完成登入,訂閱等初始化工作。

其它三個執行緒工作關係如下圖所示:

CTP的程式化交易系統開發

很多人在綜合交易平台 ctp 的api開放後,開始編寫程式化交易系統。先解讀ctp的介面說明 ctp的api使用建立在tcp協議之上ftd協議與交易託管系統進行通訊,而負責投資者交易業務處理的則是交易託管系統。ftd 協議中規定了所有的通訊都基於某一種通訊模式。ctp的交易api提供了兩個介面 1....

基於CTP的程式化交易系統開發(一)

自從綜合交易平台 ctp 的 api開放以來,很多人開始編寫自己的程式化交易系統,今天我想說說自己的一些看法。首先解讀一下 ctp的介面說明,ctp的 api使用建立在 tcp協議之上 ftd協議 交易資料交換協議 與交易託管系統進行通訊,而交易託管系統負責投資者的交易業務處理。ftd 協議中規定了...

CTP程式化系統開發(C PHP)

2016 12 13 11 03 52 借助ctp的demo 上海 交易公司提供的 需要自己在 上註冊賬號,c 網路程式設計socket的例子 php網路程式設計socket的demo 順帶了解下swoole的使用,但開發中,不必用swoole或workerman 移植到linux系統下,需要用到 ...