STEP协议解读
guibin.beijing@gmail.com
0. STEP协议是什么?
STEP: Securities Trading Exchange Protocol,是中国金融行业数据通信标准JR/T0022-2004,目前被深圳交易所采用,作为Leve II数据向信息服务商分发的数据的标准协议。本文讨论的内容是基于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连接、登陆并请求丢失的数据消息。
Guibin
2011-01-04
分享到:
相关推荐
基于STEP协议的证券行情分析系统(LEVEL-2)的研究与实现。算是有价值
经济日报-中国经济网北京2月29日讯 近日,证监会发布《证券期货业投资者...第3部分:基金》、《轻量级实时STEP消息传输协议》、《期货合约要素》、《证券期货业投资者识别码》等六项金融行业标准,自公布之日起施行。
ML step by step ML step by step ML step by step ML step by step ML step by step ML step by step ML step by step ML step by step ML step by step
django step by step
BW Step By Step 7.0 版本的
Teach yourself the fundamentals of working with Visual Basic 2008 one step at a time. With STEP BY STEP, you work at your own pace through hands-on, learn-by-doing exercises. Whether you re a ...
If you have previous programming experience but are new to Visual C# 2013, this tutorial delivers the step-by-step guidance and coding exercises you need to master core topics and techniques....
vbscript Step by Step,可惜是英文版,不过确实是好书,有需要的收藏吧!
Visual CSharp Step By Step.rarVisual CSharp Step By Step.rarVisual CSharp Step By Step.rar
spring练习 step by step
step by step3000
visual c# 2010 从入门到精通 step by step 光盘源码资源
《Step7 Step by Step》(光盘).part02rar,《Step7 Step by Step》(光盘).part02
step7解密工具
用LSMW上载SAP DATA, step by step
程序运行时要调用方法,Step Into/Step Over/Step Out,进入方法调试/不进入方法/从方法中出来,Step Into/Step Over/Step Out和要不要调用方法无关(要调用的仍然要调用),而是你要不要进入方法观察,和从方法中...
Dataguard配置Step by Step - Oracle LifeDataguard配置Step by Step - Oracle Life
Assembly Language Step-by-Step Programming with Linux® Third Edition Jeff Duntemann
step by step3000_2答案及原文