step協議解讀
0. step協議是什麼?
step: securities trading exchangeprotocol,是中國金融行業資料通訊標準jr/t0022-2004,目前被深圳交易所採用,作為leveii資料向資訊服務商分發的資料的標準協議。本文討論的內容是基於step 1.0.0。
1. step 1.0.0(sz)支援的重傳訊息型別
目前step 1.0.0 協議支援4種重傳的訊息。包括**資訊訊息stockinfo,逐筆委託訊息order,逐筆成交訊息trade,公告訊息bulletin,**狀態訊息stockstatus。
不支援重傳的訊息包括:**快照snapshot訊息和指數快照訊息index。
目前step1.0.0協議不提供資料的訊息包括委託排名orderrank訊息,成交排名traderank訊息。
2. step1.0.1(ss)支援的重傳訊息型別
**快照marketdata,orderranking,transactionrankingbyindustry,singleordercancellationranking,consolidatedordercancellationranking,orderqueue,指數快照index,marketoverview,reference,announcement
3. step1.0.0(sz)資料重傳方法
**資訊訊息stockinfo重傳通過指定
記錄索引重傳。
逐筆委託訊息order和逐筆成交訊息trade重傳通過指定
**集代號和
記錄索引進行重傳。
公告訊息bulletin重傳通過指定
公告索引進行重傳。
資料重傳需要客戶端和伺服器端之間建立
另外乙個tcp資料通道。重傳完畢之後,客戶端就可以斷開同伺服器之間的連線了。
什麼是記錄索引?
stockinfo訊息中的記錄索引是訊息體body的第乙個欄位recno(8926)。
什麼是**集代號和記錄索引?
order訊息中訊息體body前兩個欄位setno(10115)和recno(8926)分別是**集代號和委託索引。
trade訊息中訊息體body前兩個setno(10115)和recno(8926)和order訊息一樣,分別是**集代號和成交索引。
什麼是公告索引?
bulletin訊息中訊息體body第乙個欄位bulletinid(10124),是公告的唯一標識。
4. step1.0.1(sse)資料重傳方法
總體上sse恢復資料的方式分為恢復個別訊息或者恢復全部訊息兩種方式。
a) 增量恢復個別訊息(incremental rebuild)
對於訊息體第乙個欄位是msgseqid,並且不為-1的7種訊息(**快照marketdata,orderranking,transactionrankingbyindustry,singleordercancellationranking,consolidatedordercancellationranking,orderqueue,指數快照index,marketoverview)支援按照msgseqid為標識恢復資料。
逐筆成交transaction訊息按照tradeindex為標識恢復資料。
b) 重新恢復全部**類訊息(full image rebuild)
這種恢復訊息方式不適用於**快照marketdata和market depth類資料。除此之外的其他**類資料均適用。
c) 重新恢復全部reference訊息
d) 重新恢復全部公告資訊
5. 重傳的互動過程
a) 客戶端向伺服器端建立新的tcp連線,並傳送resend訊息申請重傳。
b) 伺服器端返回給客戶端響應的資料記錄。
c) 所有資料返回給客戶端後,最後返回一條resend訊息給客戶端,此resend訊息的作用是告訴客戶端本次重傳操作的狀態(全部成功?沒有全部成功?失敗或者拒絕重傳請求?目前不能重傳?)。
6. quickfix/j中補資料邏輯和step協議的差別
fix協議規定,僅僅根據訊息頭中msgseqnum就可以再次請求丟失的訊息,而step使用了擴充套件的body中的乙個或者多個欄位來請求丟失的訊息。
fix中使用resendrequest訊息請求丟失的訊息,在resendrequest中填入兩個必選引數msgseqnum的起始和結束。而step使用了客戶化的resend訊息,根據請求的不同型別的資料生成不同的resend,比如請求order和trade,需要填入setno,beginrecno,endrecno;請求stockinfo時只需要beginrecno和endrecno,不需要setno;請求bulletin需要需要填入bulletinid,不需要setno, beginrecno, endrecno。
7. 客戶化quickfix/j實現step中的補資料
a) 首先要遮蔽quickfix/j中自動根據訊息頭判斷並在同一執行緒中傳送resendrequest。
b) quickfix/j發現缺少訊息時,對補資料程序傳送時間,通知resend,讓單獨的程序去補資料。
c) 在單獨的程序中,根據收到的補資料事件,解析得到相關引數,同伺服器建立新的tcp/ip連線、登陸並請求丟失的資料訊息。
STEP協議解讀
step協議解讀 guibin.beijing gmail.com 0.step協議是什麼?step securities trading exchange protocol,是中國金融行業資料通訊標準jr t0022 2004,目前被深圳交易所採用,作為leve ii資料向資訊服務商分發的資料的標...
串列埠協議解讀
串列埠是目前計算機具備的最普遍的通訊埠,它的通訊實現只需要rxd 傳送端 txd 接收端 和gnd 地 三根線實現,而我們在使用時還會用到rts 準備傳輸資料就緒,請求傳送 cts 清除傳送請求 我們都知道在資料的傳輸中,要經過資料緩衝區,當一台機器的資料緩衝區容量小,緩衝區中的資料未被計算機讀取時...
開源協議解讀
開源在今天的軟體業已經很普遍,但開源是否意味著使用者可以對開源後的 為所欲為呢?答案是否定的。開源運動同樣有自己的遊戲規則和道德準則。不遵行這些規則不但損害開源運動的健康發展,也會對違規者造成名譽和市場上的損失,更可能陷入法律糾紛和賠償。現今存在的開源協議很多,而經過open source init...