01.31 看完這篇,徹底搞定期貨穿透式CTP API接入

操作流程

不多廢話先上結論(操作流程圖):


看完這篇,徹底搞定期貨穿透式CTP API接入


下面是步驟說明,只要照著做100%可以搞定!!!

第一步:申請穿透式接入

電話聯繫你的客戶經理,向期貨公司申請進行穿透式接入測試。如果期貨公司服務質量較好,可能已經主動聯繫你邀請測試了。

第二步:填表提交AppID

填寫申請表,每家期貨公司有所區別,但整體上需要提供的信息可能包括:

  • CPU序列號
  • 硬盤序列號
  • 硬盤主分區盤符和大小
  • 網卡MAC地址
  • 內網IP和外網IP
  • 交易程序的AppID

以上多條信息的獲取,就需要用到cmd中的系統命令工具了。

輸入以下命令獲取CPU序列號:

<code>wmic cpu get processorid/<code>

逐條輸入以下命令,獲取硬盤序列號、主分區盤符和大小:

<code>diskpart
select disk 0
detail disk/<code>

輸入以下命令,“以太網適配器”下的“物理地址”就是MAC地址,“IPv4地址”就是內網IP:

<code>ipconfig /all/<code>

訪問www.ip138.com獲取你的外網IP,或者直接百度搜索“IP”也行。

最後的AppID,是一個由用戶提供的交易程序代碼,以個人身份申請時,格式為:

client_xxxx_yyyy

其中xxxx是你的軟件名稱,yyyy是版本號,這兩個字段都是客戶自己填的信息(沒有固定規則),以vn.py的v2.0版本為例,AppID可能為:

client_vnpy888_2.0

其中888的部分,是自定義的一個字符串,主要為了避免你的AppID和其他人重複,你可以選擇隨意選擇:姓名拼音縮寫、某個數字、幸運詞......

第三步:拿到AuthCode

提交申請表後,一般當天或者第二天就能拿到期貨公司針對你的這個AppID提供的測試賬號信息,包括:

  • 用戶名、密碼
  • 經紀商代碼、仿真測試服務器地址(交易、行情)
  • 產品名稱(你填的AppID)、授權編碼(AuthCode)

第四步:仿真測試

我們這裡測試環節以最新版的VN Studio為例,如果沒有的話請點擊下載:VNStudio-2.0.3。同樣你也可以選擇使用任何其他的軟件程序來操作,如果不幸掉坑後爬不出來的話再回到VN Station好了。

雙擊桌面的VN Station圖標,啟動後會彈出登錄框。如果是第一次使用,請點擊“微信登錄”按鈕,掃描二維碼後註冊VN Station賬號(同樣也是vn.py官方社區論壇http://www.vnpy.com的登錄賬號),如果已經有賬號了可以直接輸入後點擊“登錄”。

看完這篇,徹底搞定期貨穿透式CTP API接入

登錄完成後會看到VN Station主界面,此時請點擊底部的“VN Trader Pro”,並在彈出的目錄選擇對話框中直接點“選擇文件夾”按鈕(即在默認的Windows用戶目錄下啟動VN Station):

看完這篇,徹底搞定期貨穿透式CTP API接入

隨後會彈出配置VN Treader的對話框,注意此時請一定只勾選加載CTPTEST接口,千萬不要同時勾選加載CTP接口,會因為dll衝突導致後續測試失敗!!!!

看完這篇,徹底搞定期貨穿透式CTP API接入

在VN Trader主界面上,點擊左上角的“系統”->“連接CTPTEST”,在彈出的登錄配置對話框中輸入期貨公司提供的測試賬號信息(產品名稱就是AppID),點擊連接按鈕後登錄CTP穿透式測試用服務器:

看完這篇,徹底搞定期貨穿透式CTP API接入

當VN Trader左下角的日誌監控組件中,刷新出熟悉的日誌信息,看到“合約信息獲取成功”的時候,就意味著我們已經完成測試了!

第五步:期貨公司校驗

搞定上面的測試服務器連接登錄後,就可以聯繫期貨公司進行校驗工作了,通常可以一次性直接通過,如果遇到不通過的情況請查看本文最後的常見問題來解決。

第六步:實盤接入

期貨公司校驗通過後,會將客戶申請的AppID和AuthCode添加到實盤CTP的服務器上,此時只要把啟動VN Trader Pro時,加載的接口由CTPTEST改為CTP,就可以連接上實盤交易環境,和以往一樣進行量化交易了。

看完這篇,徹底搞定期貨穿透式CTP API接入


名詞解釋

穿透式監管

新的監管模式主要是明確了期貨公司對於其客戶交易行為的管理責任,因此需要對所有接入交易櫃檯系統的交易終端軟件進行認證管理,防止壞人耍流氓後一走了之,難以追查。

穿透式API

穿透式監管的主要實現工具,支持對交易終端機器的信息採集功能(即採集之前提到的CPU序列號、MAC地址等信息),並在加密後直接上傳期貨市場監控中心。除了本文中用到的CTP穿透式API外,其他的櫃檯也都提供了對應的穿透式API版本:恆生、易盛、飛創等,操作方法基本類似。

執行日期

在6月14日當天,所有期貨公司的櫃檯系統全部強制升級為穿透式監管版本,老的非穿透式櫃檯會全部下線,沒有所謂的“過渡期”,現在就已經是“過渡期”了!!!還有不到兩週的時間,所有通過API接入交易的用戶請趕緊吧,不要到了那天沒法交易才著急,而且普遍的拖拉習慣,目前在申請接入測試的客戶與日俱增,也對期貨公司每天繁忙的後臺IT部門表示感謝。

6.3.13

CTP穿透式櫃檯的仿真測試版本,也是CTPTEST接口中使用的API版本,所有客戶的仿真接入認證測試都必須使用該版本!主要因為該版API採集客戶的信息是沒有加密的,期貨公司可以在後臺查看來進行認證工作。

6.3.15

CTP穿透式櫃檯的實盤交易版本,也是CTP接口中使用的API版本,完成仿真接入測試後,必須使用該版本才能連接實盤交易的CTP櫃檯。該版本的採集信息是安全加密的,期貨公司的IT用後臺系統也看不到。

直連模式

指的是所有用交易程序直接使用CTP的API連接CTP櫃檯,進行行情獲取和委託交易的情況,幾乎所有自主開發或者使用開源框架的量化交易客戶都屬於這種情況,直接使用穿透式監管版本的API進行開發就行(帶_se後綴的)。

中繼模式

指的是:交易客戶端->中繼服務器->CTP櫃檯,採用這種連接模式主要包括商業量化交易軟件(比如文華財經)以及機構量化資管系統(比如O32),只有中繼模式才需要用到那個DataCollect.dll文件。

API內部工作流程

同樣以CTP為例:

  1. 調用Init,開始連接
  2. 收到OnFrontConnected,確認連接成功
  3. 調用ReqAuthenticate,這一步填入AppID和AuthCode,進行認證
  4. 收到OnRspAuthenticate,確認認證成功
  5. 調用ReqUserLogin,這一步同樣需要填入AppID,進行登錄
  6. 收到OnRspUserLogin,確認登錄成功

只有交易接口TD需要進行認證,MD直接登錄就行。每一步出錯的話都會有相應的報錯輸出提示,查看錯誤信息內容後照著修改就行。

常見問題

哪個版本的vn.py目前支持穿透式API?

最新的v2.0.3發佈版本(Py3 64位),和v1.9.2-LTS版本(Py2 32位),都支持了穿透式API,推薦使用Windows進行相關測試工作(Linux上需要自己調整鏈接庫做編譯)。

更新後SimNow環境連不上了!

截止目前的2019年6月1日,SimNow上的交易測試環境(包括第一套和第二套)依舊為非穿透式的老版本,因此用穿透式版本的API都是連不上的。

SimNow的終端廠商測試環境連上後沒有行情!

SimNow所提供的6.3.13測試環境,目前僅僅為了滿足用戶的穿透式版本測試需求(也就是能成功登錄上來查詢一下合約信息等),尚未提供第一套或者第二套環境中的仿真行情以及仿真交易功能,所以:就是沒有行情的~

報錯4097,cmd有輸出Decrypt handshake data failed

這是因為你的API版本和服務器的版本不一致導致的,請按照以下流程排查:

  1. 是否同時import了CTP(CtpGateway)和CTPTEST(CtptestGateway)接口,如有請移除另一個(兩個同時加載會衝突)
  2. 確保使用CtptestGateway來連接6.3.13穿透式測試環境,用CtpGateway來連接6.3.15穿透式實盤環境
  3. v2.0.3以及v1.9.2-LTS(最新Github代碼)都已升級到穿透式API,因此無法用於連接SimNow的老版本環境

UserProductInfo字段是用來幹嘛的?

該字段是之前非穿透式API時,用來進行客戶認證的產品名稱字段(配合AuthCode一起)。穿透式版本接入的方案文檔並沒有對該字段的強制要求,目前我們這邊已經對接了的5家期貨公司也均未要求使用,但聽說某些公司需要:如中信建投等,如果有了解其他公司情況的請在評論中分享。

能否使用雲服務器或者虛擬機進行測試認證?

虛擬機和雲服務器,對於本文開頭部分提到的CPU序列號、硬盤序列號等信息,有可能獲取不全或者部分字段不符合規定。目前有些期貨公司要求嚴格,必須全部能正確獲取到,且和第二部申請表中填寫的內容一致,才能算認證測試成功;另一些公司則是十分寬鬆,表也不用填,採集信息也不看,只要登錄上來就算測試通過。

所以,能否使用雲服務器和虛擬機,完全取決於你開戶的這家期貨公司了。

如果使用v1.9.2之前老版本的vn.py怎麼辦?

請將v1.9.2的以下內容複製到你的老版本對應的目錄下:

  • vnpy/api/ctp
  • vnpy/trader/gateway/ctpGateway
  • vnpy/trader/gateway/ctptestGateway

並採用上文提到的方式去做認證。

6.3.15的穿透式實盤API,想進行下測試怎麼辦?

目前只發現中信期貨提供了6.3.15的仿真測試環境(忍不住豎起大拇指,不愧是中信),但最近估計申請人數過多,新的申請處理非常緩慢,如果大家發現別家提供6.3.15的測試環境也歡迎在評論裡告知。

為什麼期貨公司一定要用6.3.13和6.3.15兩個版本,接下來是否會合並都使用6.3.15?

為了滿足穿透式監管認證要求,期貨公司認證時要看到客戶機器採集的信息,就只能通過6.3.13版本的CTP API。而實盤交易的環境中,期貨監控中心要求直接上報採集信息,禁止期貨公司查看和修改,就必須通過6.3.15版本。

所以目前來看仿真和實盤使用兩個版本的API,是監管中心比較放心得過的方案吧,也就意味著交易客戶端必須要兩套API都對接準備好了。


分享到:


相關文章: