返回介绍

开始入门

操作指引

SDK

数据文档

常见问题

量化工具

其他

其他

数据订阅

发布于 2024-06-22 12:53:28 字数 4183 浏览 0 评论 0 收藏 0

subscribe - 行情订阅

订阅行情, 可以指定 symbol, 数据滑窗大小, 以及是否需要等待全部代码的数据到齐再触发事件。

函数原型:

subscribe(symbols, frequency='1d', count=1, unsubscribe_previous=False)

参数:

参数名类型说明
symbolsstr or list订阅标的代码, 注意大小写,支持字串格式,如有多个代码, 中间用 , (英文逗号) 隔开, 也支持 ['symbol1', 'symbol2'] 这种列表格式
frequencystr频率, 支持 'tick', '60s', '300s', '900s' 等, 默认'1d', 详情见股票行情数据期货行情数据, 实时行情支持的频率
countint订阅数据滑窗大小, 默认1 ,详情见数据滑窗
wait_groupbool是否等待同一频率的bar同时到齐(只支持bar频率),默认False不取消, 输入True则取消所有原来的订阅
wait_group_timeoutstr等待超时时间,只有wait_group=True时生效,默认'10s'
unsubscribe_previousbool是否取消过去订阅的 symbols, 默认False不取消, 输入True则取消所有原来的订阅。
fieldsstr指定返回对象字段, 如有多个字段, 中间用, 隔开, 默认所有, 具体字段见:tick 对象bar 对象 ,在 subscribe 函数中指定的字段越少,context.data查询速度越快
formatstr返回格式,默认"df", "df": 数据框格式,返回dataframe(默认),"row": 原始行式组织格式,返回list[dict](当用户对性能有要求时, 推荐使用此格式), "col": 列式组织格式,返回dict 。

返回值:

None

示例:

def init(context):
    # 同时订阅600519的tick数据和分钟数据
    subscribe(symbols='SHSE.600519', frequency='tick', count=2)
    subscribe(symbols='SHSE.600519', frequency='60s', count=2)


def on_tick(context,tick):
    print('收到tick行情---', tick)


def on_bar(context,bars):
    print('收到bar行情---', bars)
    data = context.data(symbol='SHSE.600519', frequency='60s', count=2)
    print('bar数据滑窗---', data)

注意:

1. subscribe 支持多次调用,支持同一标的不同频率订阅。订阅后的数据储存在本地,需要通过 context.data 接口调用或是直接在 on_tick 或 on_bar 中获取。

2. 在实时模式下,最新返回的数据是不复权的。

3. 订阅函数subscribe里面指定字段越少,查询速度越快,目前效率是row > col > df。

4. 当subscribe的format指定col时,tick的quotes字段会被拆分,只返回买卖一档的量和价,即只有bid_p,bid_v, ask_p和ask_v。

5. 在回测模式下,subscribe使用wait_group=True时,等待的标的需要下个时间到期。例如订阅60s的频率A和B标的,当天第一条bar数据是在09:32:00推送eob为09:31:00的A和B的bar,因为需要走到09:32:00才能确认09:31:00的全部bar是否到齐。在实时模式下,会根据实时到齐时间推送。

unsubscribe - 取消订阅

取消行情订阅, 默认取消所有已订阅行情

函数原型:

unsubscribe(symbols='*', frequency='60s')

参数:

参数名类型说明
symbolsstr or list订阅标的代码, 支持字串格式,如有多个代码, 中间用 , (英文逗号) 隔开, 也支持 ['symbol1', 'symbol2'] 这种列表格式
frequencystr频率, 支持 'tick', '60s', '300s', '900s' 等, 默认'1d', 详情见股票行情数据期货行情数据, 实时行情支持的频率

返回值:

None

示例:

unsubscribe(symbols='SHSE.600000,SHSE.600004', frequency='60s')

注意: 如示例所示代码,取消SHSE.600000,SHSE.600004两只代码60s行情的订阅,若SHSE.600000同时还订阅了"300s"频度的行情,该代码不会取消该标的此频度的订阅


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文