高频策略如何使用level2行情?

发布于:2022-12-10 ⋅ 阅读:(902) ⋅ 点赞:(0)

我们一定听说过高频交易使用十档行情,市场是实时刷新的,比我们的普通市场快得多,我们都知道市场快1ms,可以给我们带来巨大的信息优势,然后转化为收入。今天我们将解密传说中的十档行情。


在介绍行情前,先介绍一些基本概念。

又称逐笔成交,是整个市场上的逐笔数据。例如投资者一笔新的委托会形成一笔行情,交易所撮合一笔新的成交也会形成一笔行情,撤单也会形成一笔行情。 level2行情接口记录了市场的每一个事件的数据,是最精细和完整的数据。

行情快照

又称切片(snapshot)行情,是对tick行情数据的某一个时刻的切片数据。例如现在A股市场3s一笔的行情,就是每3s,在这时间段内的最高价、最低价、成交量、成交额等汇总成的一笔快照行情。这里有点像利润表的概念,利润表是一段时间内的汇总,而快照也是一定时间内行情的汇总。这里需要注意下,现在有人把3s一次的行情称为tick行情,其实这个是不对的,3s一次只能称之为行情快照。

level1行情

又称五档行情或基本行情,字面意义上是指行情报单簿的档位只有五档,即买一到买五,卖一到卖五。实际应用中一般用来指比较基础的一种行情,只包含最低层次的买卖,成交数据,更新频次也是最低。

level2行情

称十档行情或者增强行情,可以认为是level1行情的升级版,增强行情指在基本即时行情的基础上,实时买卖盘由五档扩展到十档,并增加最佳价位的前50个分档明细、逐笔委托、逐笔成交等信息。这种行情一般是要单独收费的。

level2行情又分为两类,第一类是展示行情。

level2展示行情

是指我们可以在交易软件或者手机app上看到的行情。比如同x顺level2,通x信level2,或者手机app的level2。

行情比较


接下来我们来看看行情的比较,首先不管是level1行情还是level2行情,都是3s一次刷新。买卖盘口,level1是五档行情,level2是十档行情。行情的基本信息都包括最高价、最低价、开盘价、收盘价、交易量和交易额,level1和level2都包括这些基本的信息。level1与level2最大的不同,就是这个增强行情信息。

上交所的level2增强信息,包括买一卖一前50笔订单的委托量,这里插一句,如果你用的是独立交易单元,就可以通过level2的这个数据来查看你委托的排名。另外上交所level2还有逐笔成交,以及全部委托的加权均价和总量的信息。

深交所的level2增强行情跟上交所有所不同,他除了有逐笔成交信息以外,还包括逐笔委托信息,实现了真tick级行情。由于有了逐笔委托和逐笔成交的信息,这样就能根据这个信息还原整个行情订单簿,实现实时行情刷新,也就是今天我们所讲的千档行情。

高频策略如何使用level2行情


让我们看看高频交易是如何使用二级市场的。高频交易将策略程序托管到交易所的机房,在机房内获得第二级市场,这比通过互联网获得市场要快得多。市场触发战略信号,信号发送到交易所匹配主机完成交易。

最后,让我们看看谁通常使用2级市场。一般来说,它们是高频量化交易用户,其高频策略高度依赖于高速市场的触发。这些客户通常有自己强大的金融工程团队和IT团队,主要是高频量化交易。

在这里,我们要注意的是,一般的私募都是利用证券公司的市场,而魔方为了满足自己的需求,去交易所申请了第二级市场授权。这个授权很贵,每年交易的授权费、带宽费、硬件费加起来就有几百万,说明第二级市场对于高频量化私募有多重要。

代码示例

# -*- coding: utf-8 -*-

# 此Demo只是演示接入过程

import grpc

import entity_pb2

import proxy_pb2_grpc

import threading

from multiprocessing import Process

# 代理服务器监听的地址和端口

ServerConnect = grpc.insecure_channel('localhost:5000')

Stub = proxy_pb2_grpc.ProxyStub(ServerConnect)

# 查询订阅

def get_subscription():

    # rep返回code为1代表成功,其余状态码可参考接入文档,data是返回订阅股票的情况

    Result = Stub.GetSubscription(entity_pb2.Void())

    print(Result)

# 新增订阅

def add_subscription():

    # 实例ProtoBuf协议的方法

    String = entity_pb2.String()

    # 修改协议的值

    # 2:市场代码标识(1为上海证券,2为深圳证券)

    # 000002:股票代码

    # 15:订阅全部标识(1为逐笔成交,2为逐笔委托,4为委托队列,8为股票十档行情,如果想全部订阅可直接填入15,原理是1+2+4+8,如果想订阅某几个行情将几个行情标识相加即可)

    String.value = '2_000002_15'

    # String.value = '2_000001_15,2_000002_5,2_000003_12,批量订阅'

    # rep返回code为1代表成功,其余状态码可参考接入文档

    Result = Stub.AddSubscription(String)

    print(Result)

# 取消订阅

def del_subscription():

    # 实例ProtoBuf协议的方法

    String = entity_pb2.String()

    # 修改协议的值

    # 2:市场代码标识(1为上海证券,2为深圳证券)

    # 000002:股票代码

    # 15:取消全部标识(1为逐笔成交,2为逐笔委托,4为委托队列,8为股票十档行情,如果想全部取消可直接填入15,原理是1+2+4+8,如果想取消某几个行情将几个行情标识相加即可)

    String.value = '2_000002_15'

    # String.value = '2_000001_15,2_000002_5,2_000003_12,批量取消'

    # rep返回code为1代表成功,其余状态码可参考接入文档

    Result = Stub.DelSubscription(String)

    print(Result)

# 推送逐笔成交行情数据

def tick_record_stream():

    StreamResult = Stub.NewTickRecordStream(entity_pb2.Void())

    # 用For循环就可以不断消费数据

    for Result in StreamResult:

        print(Result)

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到