工作中需要对接港交所OMD-C的Standard版行情,现在把一些知识点做个笔记,供以后查阅。

1. 概述

OMD数据服务分为实时服务、重传服务、刷新服务三部分。

  • 实时服务:UDP多播。提供挂单、成交、指数、市场状态等实时数据,以及最高价、最低价、最后成交价、成交量、等统计数据。实时服务以UDP为载体,通过多播推给接收端。消息被归类到若干通道(Channel),每个通道包含若干消息类型,比如成交消息和挂单消息都是在通道10。每个Channel的报文有唯一Sequence,Sequence总是从1开始。不同Channel之间的Sequence没有关联。为了减少丢包影响,报文都通过两个独立通道多播,比如Channel 10和Channel 510是一对,接收端根据Sequence做好去重工作。
  • 重传服务:TCP请求应答。缓存每个Channel最近50,000个报文,多播丢包时,接收端指定Sequence区间,向重传服务请求丢失的报文。重传是有限制的:
    • 单Channel缓存最近消息数量:50,000

    • 单次请求Sequence范围:10,000

    • 单用户一天重传次数限制:1,000

  • 刷新服务:UDP多播。定期把当前市场状态以多播方式推送给接收端,当接收端在盘中启动时,以此恢复当前全部状态,但逐笔交易等历史信息无法恢复。

2. 网络拓扑

client可通过SDNet/2和HKEX机房托管(co-location at HKEX Host Data Centre (HDC))两种方式访问OMD-C,一般选取SDNet/2方式连接。通过SDNet/2连接一般要在HKEX指定合作机房租用专线连接,路由器开启IGMPv2,并且接口速度达到1Gbps以避免突发性丢包。

SNNet/2: https://www.hkex.com.hk/chi/market/sec_tradinfra/sdnet2_c.htm

HKEX提供了一冷一热两套站点,每套站点又包含两个独立多播源和一个重传服务器,每个实时数据,都会经两个多播源各发送一次,接收端根据序列号去重。重复多播极大减少了偶然丢包的影响,经过实际运行测量,为期1年的运行周期中,访问重传服务以恢复丢包的次数为0.

3. 交易时间段

  

随机收市是一个比较特殊的状况,HKEX可能在不同时间点发送收市指令。

  

4. 消息序列

交易会话(Trading Session)

交易会话消息参考上面的“交易时间段”。

按盘价(Nominal Price)

挂单变化、成交达成、成交取消时,按盘价可能会变化。在第一个按盘价发出之前,按盘价等于昨日收盘价。部分股票整日无交易无挂单,可能没有按盘价。Trade Ticker(52) 事件、Aggregate Order Book Update(52)事件、Nominal Price(40)三者的顺序是: (Nominal -> OrderBook) ->  ... -> (TradeTicker -> Nominal) -> ... -> (Nominal -> OrderBook)。也就是说,如果挂单变化引起按盘价变化,HKEX总是先发送新的按盘价过来,再发送挂单事件。如果是交易达成、交易取消引起的按盘价变化,总是先发送交易事件,再发送新的按盘价。

挂单更新(Aggregate Order Book Update)

OMDC采用增量更新的方式把聚合后的挂单信息推送下来,这里的聚合,是指按照相同价位聚合,比如:价格$100,有3个挂单,数量分别是100股,200股,300股,OMDC会发送一个 600@100的消息,告诉接收端$100价位总共有600股挂单。OMDC提供买卖各10档价位的挂单信息。

归并交易(Trade Ticker) 

在9点之后,某些股票会把前一天收市后发生来不及上报的交易事件发出来,交易类型为Late Trade(4)。除此之外,交易都发生在9:20到16:10之间。其中,9:20是开盘竞价交易,作为当天的开盘价,16:10是收市竞价交易。收到DayClose通知后,不会再有交易消息过来。

统计报文(Statistics)

统计报文记录了某个证券当前的总成交量、成交额和权重股均价,同时可能还有最高最低和最后成交价。但是,最高最低和最后成交价也可能为0。比如,9:00,收到了Late Trade消息,此时会发送Statistics包,成交量非0,但最后成交价却是0。统计报的OHLC四个属性只受两种交易的影响:type=0(普通自动对盘交易)和type=103(竞价交易)。由于开盘价一旦产生不再变化,Statistics包不携带该字段。接收端应该处理Trade Ticker,把第一个type=0/103的成交价作为开盘价。

理论上,每笔交易之后,OMD都会发送一个Statistics报文,实际上不会,所以"第一个Statistics报文的LastPrice=开盘价"这个假设不成立。

收市竞价(Closing Auction Session)

16:00之后,类似于开盘竞价,部分股票可参与收市竞价来确定最终收盘价。参与CAS的股票,在DayClose之后一般还有Statistics报文下发。目前,有500多个股票参与收市竞价。

收市参考价(Reference Price)

16:00,进入收市竞价阶段,所以参与收市竞价(Closing Auction Session)的股票,都会下发收市竞价参考价格,包括参考价和最高最低价。

收盘价(Closing Price)

收市竞价自动对盘完成后,OMDC先发送DayClose消息,然后发送个股票的收市价。每个股票都会发送Closing Price。

指数行情(Index Data)

我们一般只关心HSI、HSCCI、HSCEI等常用指数,从早上9:00到下午16:10,每隔2秒钟更新一次指数行情。在DayClose之后,还会有一个收市指数下发

市场成交额(Market Turnover)

对于主板、创业板、纳斯达克等市场,每2秒钟会发送一个报文,记录了该市场的总成交额。当报文中的货币字段为空时,表示已经把所有成交折算为HKD。业内一般把主板的成交额当作HSI指数的成交额显示(HSI只包括了主板的部分股票,成交额比主板小很多)。在 DayClose之后,还会有一个成交额数据下发

5. 数据量

以5月19日数据为例,一个交易日有1650万个报文,累计1.5GB数据量。

消息类型分布及处理速度

一个交易日的数据,20分钟之内可以处理完。

 成交事件分布

一个交易日,共成交663,896笔, 成交额700亿港币。

50%以上证券一天成交不到100笔,只有不到200个证券日成交超过1000笔,其中腾讯控股(00700)最为活跃,成交16,000笔。

  

从时间分布上看,开盘后半小时和收盘前半小时较为活跃,其中又以收盘前最为活跃,1分钟完成10,863笔交易。

 

港交所OMD-C对接笔记的更多相关文章

  1. 阿里IPO弃港赴美?

    最近,关于阿里巴巴和香港联交所博弈的新闻一直长时间占据了各大科技媒体的头条.9月25日,香港联交所行政总裁在港交所其个人专栏“小加网志”中贴出一则名为<投资者保障杂谈>的博客文章,谈及“香 ...

  2. spring-Ioc(二)学习笔记

    属性注入方式 设值注入:也就是set注入,通过setter方法注入 java Bean private ITestDao dao; public void setDao(ITestDao dao){ ...

  3. 【纯手工】整理豆瓣热点推荐列表-财经&自我管理

    [纯手工]整理豆瓣热点推荐列表-财经&自我管理  简七君 2013-10-27 09:40:06     豆瓣君的首页热点推荐实在难以捉摸,只有正好跳出推荐贴时才能按图索骥找列表.简七和小伙伴 ...

  4. 基于微软平台IIS/ASP.NET开发的大型网站有哪些呢?

    首先说明一下,本文绝不是要说Microsoft平台多么好,多么牛.只是要提醒一些LAMP/JAVA平台下的同志们,微软平台不至于像你们说的,和想象的那么不堪!只是你们自己不知道而已.同时,也希望广大M ...

  5. app 后端技术

    app 后端技术 一直以来工作的方向是web server,对app server没有什么了解.虽然没有接触过移动app开发,但对app后端技术还是挺有探索欲望的,app应用和web应用在前端的用户习 ...

  6. 坏账,断供,四大国有资产管理公司(AMC):东方、长城、信达和华融

    在高房价大幅度下降以后,银行会认为你在贷款的时候的抵押物,已经不值钱了,比如已经下跌百分之五十了,那么,银行就会给贷款者一个通知——你的抵押物--房子,已经不值钱了,所以说,你必须立刻缴纳这一部分贬值 ...

  7. IFTT-意大利金融交易税

    港交所公告,IFTT目前适用于Prada股份及其4只权证,所有于今年3月1日或之后买入Prada的投资者均要缴付IFTT.就股份而言,IFTT税率为交易价值的0.22%(2014年1月1日起将降至0. ...

  8. 微软 Microsoft

    微软(Microsoft Corporation) (NASDAQ:MSFT,港交所:4338),是一家基于美国的跨国电脑科技公司,是世界PC(Personal Computer,个人计算机)机软件开 ...

  9. Intel 英特尔

    英特尔 英特尔 基本资料   公司名称:英特尔(集成电路公司)    外文名称:Intel Corporation(Integrated Electronics Corporation)    总部地 ...

随机推荐

  1. 【Electron】Electron开发入门(四):操作PC端文件系统

    一.调用PC端默认方式打开本地文件 在main.js里 // 打开系统本地文件或者网页链接 const {shell} = require('electron'); // Open a local f ...

  2. C# 快速高效率复制对象另一种方式 表达式树

    1.需求 在代码中经常会遇到需要把对象复制一遍,或者把属性名相同的值复制一遍. 比如: public class Student { public int Id { get; set; } publi ...

  3. sublime Text3+emmet(快速开发)

    sublime软件使用Emmet插件快速编写CSS样式                    基本的CSS样式编写时,很多样式只需输入首字母即可得到不带属性值的CSS样式,像上面说到的margin.而 ...

  4. 给 Java 学习者的超全教程整理

    Java 在编程语言排行榜中一直位列前排,可知 Java 语言的受欢迎程度了. 网上有很多 Java 教程,无论是基础入门还是开发小项目的教程都比比皆是,可是系统的很少,对于Java 学习者来说找到系 ...

  5. 跟着刚哥梳理java知识点——集合(十二)

    Java集合分为Collection和Map两种体系 一.Collection接口: Collections接口为我们提供了以下方法: size():返回集合中元素的个数 add(Object obj ...

  6. PAT 1057

    Stack is one of the most fundamental data structures, which is based on the principle of Last In Fir ...

  7. Unity Debug类

    静态变量 developerConsoleVisible 报告是否开发控制台是可见的.开发控制台不能出现使用: isDebugBuild 在构建设置对话框中有一个叫做"发展构建"复 ...

  8. Python之路- 反射&定制自己的数据类型

    一.isinstance和issubclass isinstance(obj,cls)检查是否obj是否是类 cls 的对象 issubclass(sub, super)检查sub类是否是 super ...

  9. JS作用域就这么几句话

    JavaScript的作用域一直以来是前端开发中比较难以理解的知识点,对于JavaScript的作用域主要记住几句话,走遍天下都不怕... 一.“JavaScript中无块级作用域” 在Java或C# ...

  10. rapidPHP 下载并安装

    安装 rapidPHP对运行环境的要求 php 5.4以上,包括5.4,支持php7,依赖包,php-curl,php-mysql,php-gd 官网下载 http://rapidphp.gx521. ...