先将前面mktdt00、0003归总下:
mktdt00竞价撮合平台>>>>>
MDStreamID=MD001指数行情
MDStreamID=MD002股票行情
MDStreamID=MD003债券分销行情
MDStreamID=MD004基金行情
mktdt01综合业务平台>>>>>
MDStreamID=MD101国债预发行行情
MDStreamID=MD102盘后固定价格交易行情
mktdt02新债券平台>>>>>
MDStreamID=MD201债券现券和质押式回购行情
mktdt03期权平台>>>>>
MDStreamID=MD301股票期权行情
本次要分析的是mktdt0港股通行情
行情文件接口
mktdt04是港股通行情接口,对应接口文档是《IS117_上海证券交易所港股通市场参与者接口规格说明书》。
港股通这个接口,比较特别的有两个地方,一是文件编码格式与其他文件不一样,特别是“中文证券简称”字段是UTF-16LE编码,所以直接打开看是乱码的。二是他除了常规的行情数据MD401还有MD40MD40MD406三种行情类型。下面按个分析下。
文件编码格式
我使用如下代码分别读取了mktdt00-04的文件编码格式。
结果如下:
首先我猜测因为mktdt03内没有中文所以编码格式是ascii,然后mktdt04的编码格式为啥是Windows-1252真的搞不明白,而且其中“中文证券简称”字段是UTF-16LE编码。
尝试了几种方式后,我发现应该用二进制读取文件,然后“中文证券简称”之外的其他字段可以用utf-8编码输出,而“中文证券简称”字段需转码为“UTF-16LE”后输出。
直接上代码,我只读了文件中的第二行来演示:
运行结果:
行情类型说明
前面提到港股通除了常规的证券行情MD40还有MD40MD40MD40
“文件体中,会先列出全部MD401的行情数据,再列出全部MD404的市调机制信息,再列出全部MD406的开市竞价交易时段信息,最后列出全部MD405的收市竞价交易时段信息”。
其含义如下:
MD404市场波动调节机制,即当股票的价格相对于5分钟前的最后交易价变动幅度超过±10%,市场启动的5分钟冷静期,此时交易将限于制定价格范围内继续进行,正常交易将于其后重启。可以理解为A股的临时停牌措施但允许在限定范围内交易。
MD405收市竞价交易时段,是国际证券市场上通用的一种容许交易以收市价执行的交易机制。在收市竞价交易时段内,市场参与者可输入买卖盘,配对到最多成交量的价格将会成为收市价,买卖盘也将按此收市价执行。这个有点像国债发行时的竞标机制,大家随意报价,最后选能完成全部交易的最劣价的作为成交价,这样可以确保东西能卖完,还能确保大家都不吃亏。与科创板盘后固定价格交易有点像但科创板是指定了收盘价作为成交价而CAS是通过这个过程来确定收盘价。
MD406开市前时间段,顾名思义就是00-9:30开市前30分钟的一个交易时段。拆分来看,9:00-9:15是输入买卖盘时段→9:15-9:20是不可取消时段→9:20-9:22为最长两分钟的随机对盘时段→9:20-9:30是暂停时段。
行情解析
文件头
大部分都一样,只有MktStatus市场状态区别比较大。
MktStatus=100未开市市场早晨开市前的状态,一般为9:00前
MktStatus=1输入买卖盘,竞价盘下单时的状态,一般为9:00至9:15;可报单,可撤单,可改单,但不会成交
MktStatus=101不可取消,暂停订单取消或修改的状态,一般为9:15至9:20;可报,不可撤,不可改,还是不会成交
MktStatus=108随机对盘,9:20开始后2分钟期间随机收盘时的状态,一般为9:20至9:22;可报,不可撤,不可改。
MktStatus=2对盘,竞价盘配对时的状态,一般为9:20至9:2紧接随机对盘后;这个对盘和随机对盘的概念可能是这样:20-22属于对盘时间,但是实际做对盘操作的时间是随机的,而且在随机对盘时还会收单。开始撮合后即结束随机对盘状态进入对盘状态并一直延续到9点22份,港交所自己翻译的“买卖盘配对”可能更好理解一些。
MktStatus=7暂停,开盘集合竞价时段结束后,至全市场开市前的状态。此时段暂停任何下单及交易活动,一般为9:22至9:30,紧接对盘后;
MktStatus=3持续交易,一般9:30至12:00及13:00至16:00,不含盘中休市时间
MktStatus=102交易所介入时段,暂停任何下单及交易活动,一般为12:00至12:05及16:00至16:01
MktStatus=103收市,中间休市时段,一般为12:05至12:30
MktStatus=104取消买卖盘,下午开市前订单取消时段,一般为12:30至13:00。我猜测的,这个时段可以撤单但不能交易。有待验证。
MktStatus=106不可取消,暂停订单取消或修改的状态,一般为16:06至16:08;也即是这段时间不能撤单了。
MktStatus=107随机收市,一般为16:08至16:10
MktStatus=4对盘,一般为16:08至16:10;与早上开盘的对盘类似,是先进入随机收市状态,开始单子撮合时就进入对盘状态。
MktStatus=0全日收市,全市场处于闭市期间,收盘集合竞价时段结束后的状态,一般为16:10后
汇总下,市场状态大致可划分为以下6个阶段:
9:00前,MktStatus=100,未开市
9:00-9:30,MktStatus=1010开盘集合竞价时段
9:30-16:00,MktStatus=持续交易
12:00-13:00,MktStatus=101010午间休市时段
16:00-16:MktStatus=10101010收盘集合竞价时段
16:10后,MktStatus=0,全日收市
文件尾
文件体
行情部分根据不同的MDStreamID有不同的结构。
1港股通证券行情
内容如下:
MDStreamID|SecurityID|Symbol|SymbolEn|TradeVolume|TotalValueTraded|PreClosePx|NominalPrice|HighPrice|LowPrice|TradePrice|BuyPriceBuyVolumeSellPriceSellVolumeSecTradingStatus|Timestamp
含义如下:
行情数据类型、证券代码、中文证券简称、英文证券简称、成交数量、成交金额、昨日收盘价、按盘价、最高价、最低价、最新价、申买价申买量申卖价申卖量证券交易状态、行情时间
示例:
MD400000长和|CKHHOLDINGS|1151336558811550|5900|5250|5450|5550|5250|5200|1000|5250|15000|0|11:56:2000
行情数据类型MD401证券代码00001中文证券简称长和原文是UTF-16LE编码,这个是我转成UTF-8后的英文证券简称CKHHOLDINGS成交数量1151338成交金额6558811550昨日收盘价5900按盘价5250参照内盘的最新价,但港交所在没有成交时也会发布估算的最新价最高价5450最低价5550最新价5250最新成交价申买价一5200申买量一1000申卖价一5250申卖量一15000证券交易状态0行情时间11:56:2000
2市场波动调节机制数据
内容如下:
文章为作者独立观点,不代表股票交易接口观点