CTP程序化交易入門系列之四:行情訂閱常見問題解答

前言

這一章總結了大家訂閱行情最常問的一些問題的相關解答,希望能有幫助。如有不對的地方,歡迎指正。後期會在這裏更新迭代,歡迎到這底下提問!

1 獲取行情的地址在哪裏可以查到?

simnow發的即是實時行情,官網上可以看到行情實時地址。期貨公司行情地址可諮詢期貨公司,或者到對應公司官網下載個快期,點擊測速就可以看到。

2 怎麼知道有哪些合約正在交易(有行情)?

行情API裏面很坑的一點是沒有查詢合約的功能。雖然二代行情裏面加了ReqQryMulticastInstrument接口,但也僅是查詢組播合約,需要諮詢期貨公司是否連接到相關交易所組播行情。所以有三種做法獲取合約號:

1)通過交易API登錄調用函數ReqQryInstrument查詢;

2)爬交易所網站獲得可交易合約;

3)交易所可交易合約有規則,例如上期白銀爲當前月開始的下個月的連續12個合約,當前爲8月,那即是從ag1909到ag2008,找出這些規則生成合約編碼即可。

3 API調用init後爲啥沒有任何反應?

和demo運行沒有任何反應或者沒有OnFrontConnected回調問題類似。先檢查網絡鏈路是否暢通,可以telnet一下行情前置地址,是否通暢。再檢查API版本是否正確,連生產或者simnow現必須是6.3.15版本api,版本不正確將沒有回調。

4 爲什麼登陸上了訂閱顯示成功但沒有行情?

首先確保是否訂閱成功。CTP坑的是無論你訂閱什麼合約id,都會返回你"CTP:No Error",但只有你填對了合約編碼纔有相應行情。所以:

1)檢查編碼是否正確。這裏坑的是各交易所對命名格式並不統一,命名規則如下:

前面字母代表品種名,後面數字代表合約到期日。

上期/能源所:小寫+4個數字(rb1909代表rb品種,19年9月份到期)

中金所:大寫+4個數字

鄭商所:大寫+3個數字(TA001代表TA品種,20年01月份到期)

大商所:小寫+4個數字

2)檢查你訂閱的行情是否過期。如果現在是19年8月份,那你訂閱的是rb1905這種5月份到期的合約那肯定是沒有行情的。

5 CTP提供的是實時tick數據嗎?

CTP提供的是實時tick數據,但不是真正的tick數據。tick數據一般是指市場上的逐筆數據,例如一筆委託會產生一筆行情,一筆成交也會產生一筆行情。目前國內期貨交易所還不支持推送這種逐筆的數據,只推送切片(快照)數據。切片數據是指將一定時間內的逐筆數據統一成一個快照發出,一般是1秒2筆。但鄭商所有點特殊,可能是1s多筆,就不展開來講了。

6 TradingDay和ActionDay有什麼區別?

在CTP的設計裏,TradingDay用來表示交易日,ActionDay表示當前實際日期。期貨交易分爲日夜盤,這兩個日期在日盤的時候是一致的,但在夜盤就有了區別,是因爲當天夜盤是屬於第二天這個交易日。例如20190830(週五)晚上21點開始交易,交易日TradingDay是20190902(週一),但實際日期ActionDay是20190830。

這是設計的初衷,但事實上夜盤各交易所這兩個日期很混亂。我們以20190830晚上夜盤交易舉例:

  tradingday  actionday
上期/能源 20190902 20190830
大商所 20190902 20190902
鄭商所 20190830 20190830

總結就是,大商所夜盤兩個日期都是tradingday,鄭商所日夜盤都是當天日期。

7 可以通過CTP API獲得K線,現手等數據嗎?

沒法直接獲得k線數據,需要根據ctp推送的行情數據自己合成。如何合成,參考上篇文章。同樣無法獲得現手增倉等數據,需要自己計算,後面會講。

8 CTP支持股票行情麼?

一般提及CTP是指CTP期貨櫃臺,只提供國內五大期貨交易所期貨行情。但CTP也有股票櫃檯,用戶較少,可以諮詢上期技術哪些券商上了CTP股票櫃檯,用股票API獲取股票行情。

9 可以通過CTP API獲得歷史行情嗎?

不可以,CTP只提供實時行情。獲取歷史行情,目前免費的可以從天勤獲取,僅提供所有期貨合約。收費的可以從上海閃策信息科技獲取,提供國內股票,期貨及美國股票及期貨相關所有歷史數據。

10 CTP提供level2行情嗎?

level2行情是指深度行情,不同於level1只有1檔,level2有多檔。但除上期和能源外,一般交易所多檔行情是收費行情,所以深度行情需要諮詢相應期貨公司。具體哪些交易所提供哪些行情,收費情況,會單獨放一章出來講。

11 非交易時段收到行情是怎麼回事?

日盤盤前可能會收到行情,是因爲CTP日盤起動時會重演夜盤的流水,所以有可能會將夜盤的行情再推送一遍。日盤結束後也會收到行情,這是交易所結算完成發出的行情,這裏面的結算價字段是當日結算價,一般推送時間在3點~3點半。建議按照交易時間過濾掉這些非盤中行情,以免影響交易邏輯。

12 組合合約行情如何獲得?

CTP是不會去計算組合合約的行情的,只是轉發交易所行情,所以要看交易所推不推。事實上直接以組合合約號訂閱行情的話,鄭商所和大商所都會推,但比實際情況下少不少。所以建議訂閱各個單腿合約的行情,計算價差自己得到組合行情。

13 如何獲取當前切片內的成交量?

Volume字段是累計成交量,這裏是指這個交易日內的累計成交量。如需要這個切片內的成交量,需要用這個切片的該字段值,減去上個切片相應值,差額即是這個切片內成交量。

14 UpdateMillisec毫秒時間戳字段有效嗎?

上期/能源/中金三個交易所會出現0和500兩種值,大商所值是切片時真實毫秒時間,鄭州該值都是0。

15 爲什麼有的字段值特別大?

行情中常看到有數值是1.7976931348623157e+308,這是double類型的上限值,在CTP內部是表示無效的。例如盤中的時候,本次結算價字段SettlementPrice即爲無效值。

16 行情均價AveragePrice字段有什麼坑?

AveragePrice這個字段除鄭商所可以直接拿過來用之外,其它四大交易所要除以合約乘數,纔是真正的均價。至於合約乘數是什麼百度吧,可以通過用交易API查詢合約獲得,或者去交易所網站上查詢獲得。

17 CTP上可以查到什麼是主力合約嗎?

查不到,自己根據持倉量和成交量篩選,注意換月時邏輯。

往期推薦

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

● CTP程序化交易入門系列之二:API基本架構及初始化

● CTP程序化交易入門系列之三:獲取實時行情及K線合成

 

下節預告:

交易所行情知多少?

 

長按關注公衆號,一起學習程序化!

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