CTP程序化交易入門系列之一:準備

前言:
筆者自畢業後一直從事低延時交易系統開發行業,這些年經歷過神奇bug,給客戶培訓,回答客戶千奇百怪的問題。在這個過程中,自身能力得到了很大的提升,但有時在面對一些小白問題時,總是感嘆爲何沒有一系統的文章教一些最簡單的入門,降低程序化交易的門檻,於是便心生了寫一系列文章的初衷。
目前國內期貨程序化交易條件成熟,入門門檻很低。證券程序化雖然有逐步放開的趨勢,但現在看來還具有一定門檻。所以這一系列文章將以期貨程序化交易爲例,期望讀者有基本的期貨知識,Python語言基礎

這一系列文章將:

  • 分享程序化入門知識;
  • 如何用CTP API報單,獲取行情;
  • 如何計算資金,持倉,保證金,手續費;
  • 如何由Tick數據獲得K線數據;
  • 如何計算現手增倉及如何實現一些簡單的策略。

由於本人經驗有限,難免文章中也會有各種問題,歡迎各位一起討論及指正。

一、櫃檯系統簡介

 依據國內監管要求,客戶無法直連交易所繫統,中間必須經過期貨公司(Broker)的系統,這便是櫃檯系統。

 期貨公司會有多套櫃檯系統,在功能上可以分爲主席和次席系統。主席系統功能全面,支持出入金,盤後結算等,講究的是高吞吐量與高可靠性,一般客戶都是在主席系統上交易。例如CTP (Comprehensive Transaction Platform, 綜合交易平臺)即是上期所子公司上期技術開發的一套主席系統。

 次席系統一般只做下單及撤單用,講究的是低延遲穿透時間,一般爲對時延要求較高的大客戶準備。例如閃策,CTPmini2等櫃檯。

 櫃檯系統一般都會提供API(Application Programming Interface,應用程序編程接口)給程序化客戶接入櫃檯使用。CTP API便是CTP系統提供的編程接口,可以在上期技術官網直接下載得到。

 官網上只提供C++版本的API,而C++學習曲線陡峭,對很多初學者來說很不友好,不適合用來入門。本人編譯了原生CTP Python API,這一系列文章將以此Python版API來講解調試,所有代碼完全開源。

 Python版接口函數使用方法及數據結構與C++版完全一致,用法也是一樣的,所以使用C++的讀者也可以按方法直接使用C++版API。

公衆號後臺回覆"PyCTP"可以直接獲得Python版本API、demo及使用說明下載鏈接。

二、程序化登錄信息

客戶如果需要調用API接入櫃檯進行程序化交易,登錄時需要一些基本信息,如下:

  • 1.BrokerID
    簡稱期商編碼,是指該期貨公司在CTP系統上的編碼,爲四位數。例如海通期貨是8000。
  • 2.TradeFront, MarketFront
    TradeFront是指CTP系統的交易前置IP地址,客戶用來連接下單撤單等;MarketFront是指行情前置IP地址,用來訂閱收取行情。
  • 3.InvestorID(UserID,InvestUnitID)
    投資者代碼,是指該客戶在CTP系統上的唯一ID,在期貨公司開戶後由期貨公司分配得到。UserID是操作員代碼,InvestUnitID是投資單元代碼,普通投資者遇到要填這兩個值的,直接填InvestorID即可。
  • 4.Password
    開戶時設置的密碼。需要注意的是開戶完首次登錄CTP系統需要修改密碼,在期貨公司官網上下載快期客戶端登錄,點修改密碼就可以。
  • 5.AppID
    客戶終端軟件代碼。
  • 6.AuthCode
    客戶終端軟件認證碼。

 以上1和2對於一家期貨公司同一套系統的所有客戶都是一樣的。開戶時在哪家期貨公司就用哪家期貨公司的信息,如果開戶時沒有得到,可以查看期貨公司頁面或諮詢客服得到。也可以後臺回覆"地址"得到市場上主要期貨公司的期商編碼及前置地址。

 5和6信息是爲了配合穿透式監管,如何獲得請參考公衆號文章《什麼是穿透式監管,需要投資者做什麼?》3.2.1章節。

三、模擬仿真

 仿真系統有兩種,一種是期貨公司提供的,這類後臺基本是連接對應的交易所的測試環境,可以詢問期貨公司是否提供;
 另一種是上期技術提供的產品simnow。這一系列文章中我們主要用simnow測試。參考圖1,Simnow仿真環境主要分爲兩部分:

  • 第一部分是CTP櫃檯系統,與生產環境相同。客戶可以直接使用官網下載得到的CTP API在simnow測試,然後無縫對接到期貨公司生產環境;
  • 第二部分是模擬交易所繫統,目前這是上期技術基於上期所繫統自己開發的模擬交易所,並非真正的對應的五個交易所的測試環境。

 在simnow上仿真交易也需要上述第二節中提到的登錄信息。

 1和2可以從simnow主頁產品與服務頁面獲取。這裏有兩套環境,注意看下面的服務時間,第一套與實際生產同步,只在交易日交易時間段提供服務。

 3和4可以從simnow主頁右上角註冊賬號,註冊成功後即可收到短信獲取。

 5和6在simnow是默認統一的,即APPID爲simnow_client_test,認證碼爲0000000000000000(16個0)。

提示:

  • 1.填寫賬號信息時,櫃檯選擇選“標準CTP”。
  • 2.收到的短信中的賬號密碼即登錄系統的InvestorID和Password,首次登錄時需要修改密碼,可以在simnow主頁上點擊修改密碼。
  • 3.註冊成功後將會得到100萬模擬資金,如果資金虧完後可以去官網上入金。

simnow常見問題:

  • 1.連接不上,沒有反應
    注意simnow提供了兩套環境,服務時間在產品頁面都已經寫得很清楚。第一套與正式生產環境保持一致,一般來說是早8點開,下午4點停,晚上20:00開,凌晨2:30停。另外因爲用戶太多,有時前置會因爲負載過大而宕機,可以換其他組IP測試,如果還是不行,那就只能聯繫上期技術客服了。
  • 2.simnow的行情哪裏來
    第一套正式環境行情是直接轉發的生產行情,也就是說客戶報單成交對simnow的行情沒有影響。第二套7*24環境是不間斷重播上一交易日的行情。
  • 3.支不支持市價單,套利單,部分成交等
    因爲simnow後臺連接的是模擬交易所,功能待開發中。目前還不支持這些。
  • 4.其他
    可以先參考頁面http://www.simnow.com.cn/static/SimNowFAQ.action查看常見問題,如果找不到請諮詢客服。
    好了,有了API,及測試的地址賬號密碼等信息,就可以開啓程序化交易之路了!

下節預告:
CTPAPI基本架構及初始化

關注公衆號,一起學習程序化交易!

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