文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
数据事件
数据事件是阻塞回调事件函数,通过 subscribe 函数订阅, 主动推送
on_tick
- tick 数据推送事件
接收 tick 分笔数据, 通过 subscribe 订阅 tick 行情,行情服务主动推送 tick 数据
函数原型:
on_tick(context, tick)
参数:
参数名 | 类型 | 说明 |
---|---|---|
context | context 对象 | 上下文 |
tick | tick 对象 | 当前被推送的 tick |
示例:
def init(context):
# 订阅600519的tick数据
subscribe(symbols='SHSE.600519', frequency='tick', count=2)
def on_tick(context,tick):
print('收到tick行情---', tick)
输出:
{'symbol': 'SHSE.600519', 'created_at': datetime.datetime(2020, 9, 2, 14, 7, 23, 620000, tzinfo=tzfile('PRC')), 'price': 1798.8800048828125, 'open': 1825.0, 'high': 1828.0, 'low': 1770.0, 'cum_volume': 2651191, 'cum_amount': 4760586491.0, 'cum_position': 0, 'last_amount': 179888.0, 'last_volume': 100, 'trade_type': 0, 'receive_local_time': 1602751345.262745}
on_bar
- bar 数据推送事件
接收固定周期 bar 数据, 通过 subscribe 订阅 bar 行情,行情服务主动推送 bar 数据
函数原型:
on_bar(context, bars)
参数:
参数名 | 类型 | 说明 |
---|---|---|
context | context 对象 | 上下文对象 |
bars | list(bar) | 当前被推送的 bar 列表 |
示例:
# coding=utf-8
from __future__ import print_function, absolute_import
from gm.api import *
from datetime import datetime, timedelta
def init(context):
# 订阅600519和000001的分钟数据
subscribe(symbols='SHSE.600519,SZSE.000001', frequency='60s', count=2)
def on_bar(context,bars):
print('收到bars行情---', bars)
if __name__ == '__main__':
'''
strategy_id策略ID, 由系统生成
filename文件名, 请与本文件名保持一致
mode运行模式, 实时模式:MODE_LIVE回测模式:MODE_BACKTEST
token绑定计算机的ID, 可在系统设置-密钥管理中生成
backtest_start_time回测开始时间
backtest_end_time回测结束时间
backtest_adjust股票复权方式, 不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
backtest_initial_cash回测初始资金
backtest_commission_ratio回测佣金比例
backtest_slippage_ratio回测滑点比例
backtest_match_mode市价撮合模式,以下一tick/bar开盘价撮合:0,以当前tick/bar收盘价撮合:1
'''
backtest_start_time = str(datetime.now() - timedelta(weeks=1))[:19]
backtest_end_time = str(datetime.now())[:19]
run(strategy_id='xxxxxx',
filename='main.py',
mode=MODE_BACKTEST,
token='xxxxxxx',
backtest_start_time=backtest_start_time,
backtest_end_time=backtest_end_time,
backtest_adjust=ADJUST_PREV,
backtest_initial_cash=10000000,
backtest_commission_ratio=0.0001,
backtest_slippage_ratio=0.0001,
backtest_match_mode=1)
输出:
收到bars行情--- [{'symbol': 'SHSE.600519', 'frequency': '60s', 'open': 1786.0, 'high': 1786.0, 'low': 1786.0, 'close': 1786.0, 'volume': 20200, 'amount': 36077200.0, 'pre_close': 0.0, 'position': 0, 'bob': datetime.datetime(2023, 11, 23, 14, 59, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800), 'Asia/Shanghai')), 'eob': datetime.datetime(2023, 11, 23, 15, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800), 'Asia/Shanghai'))}]
注意:
1. 若在 subscribe 函数中订阅了多个标的的 bar,但 wait_group 参数值为 False,则多次触发 On_bar,每次返回只包含单个标的 list 长度为 1 的 bars;若参数值为 True,则只会触发一次 On_bar,返回包含多个标的的 bars。
2. bar 在本周期结束时间后才会推送,标的在这个周期内无交易则不推送 bar。
on_l2transaction
- 逐笔成交事件
接收逐笔成交数据(L2 行情时有效) 仅特定券商付费提供 函数原型:
on_l2transaction(context, transaction)
参数:
参数名 | 类型 | 说明 |
---|---|---|
context | context 对象 | 上下文对象 |
transaction | L2Transaction 对象 | 收到的逐笔成交行情 |
示例:
def on_l2transaction(context, transaction):
print(transaction)
输出:
{'symbol': 'SZSE.300003', 'volume': 300, 'created_at': datetime.datetime(2020, 11, 24, 9, 38, 16, 50, tzinfo=tzfile('PRC')), 'exec_type': '4', 'side': '', 'price': 0.0}
on_l2order
- 逐笔委托事件
接收逐笔委托数据(深交所 L2 行情时有效) 仅特定券商付费提供 函数原型:
on_l2order(context, l2order)
参数:
参数名 | 类型 | 说明 |
---|---|---|
context | context 对象 | 上下文对象 |
l2order | L2Order 对象 | 收到的逐笔委托行情 |
示例:
def on_l2order(context, l2order):
print(l2order)
输出:
{'symbol': 'SZSE.300003', 'side': '1', 'price': 29.350000381469727, 'volume': 2400, 'created_at': datetime.datetime(2020, 11, 24, 9, 38, 16, 80, tzinfo=tzfile('PRC')), 'order_type': '2'}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论