3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)量化平台中,Tick 事件是高频(Tick级别)策略运行的核心驱动力。要理解 Tick 事件,首先需要理解什么是 Tick 数据。
Tick 数据指的是交易所发布的盘面行情快照。它记录了某一特定时刻市场上该标的的最新成交价、成交量、买卖盘挂单(如买一到买五、卖一到卖五)等信息。
在 JoinQuant 平台中,不同品种的 Tick 数据快照频率如下:
Tick 事件就是指**交易所产生并推送了一个新的 Tick 数据(行情快照)**这一动作。
在你的量化策略中,如果你将运行频率设置为 tick 级别,并且通过 subscribe() 函数订阅了某个标的(例如平安银行 000001.XSHE),那么:
handle_tick(context, tick) 函数。handle_tick 也就不会被调用。要让 handle_tick 正常工作,你需要完成以下几个步骤:
tick。set_option('use_real_price', True)。before_trading_start 或其他初始化函数中,使用 subscribe(security, 'tick') 订阅你关注的标的。handle_tick(context, tick) 中编写你的高频交易逻辑。示例代码:
import jqdata
def initialize(context):
# 开启真实价格模式(Tick回测必须)
set_option('use_real_price', True)
# 设置基准和手续费等...
def before_trading_start(context):
# 订阅平安银行的 tick 事件
subscribe('000001.XSHE', 'tick')
# 当平安银行产生新的行情快照(每3秒)时,此函数被触发
def handle_tick(context, tick):
# tick 对象包含了当前的盘面快照信息
print(f"时间: {tick.datetime}, 最新价: {tick.current}, 买一价: {tick.b1_p}, 卖一价: {tick.a1_p}")
# 在这里编写你的高频交易逻辑
# if tick.current > ...:
# order('000001.XSHE', 100)
def after_trading_end(context):
# 收盘后取消订阅
unsubscribe_all()
当 handle_tick 被触发时,传入的 tick 参数是一个对象,包含了当时的盘面快照信息,主要属性包括:
tick.code: 标的代码tick.datetime: tick 发生的时间tick.current: 最新价tick.high / tick.low: 截至到当前时刻的最高价/最低价tick.volume / tick.money: 截至到当前时刻的累计成交量/成交额tick.a1_p ~ tick.a5_p: 卖一价到卖五价tick.b1_p ~ tick.b5_p: 买一价到买五价tick.a1_v ~ tick.a5_v: 卖一量到卖五量tick.b1_v ~ tick.b5_v: 买一量到买五量简单来说,Tick 事件就是“行情刷新了一下”。handle_tick 就是一个监听器,只要你订阅的股票行情刷新了,它就会立刻告诉你:“行情更新了,这是最新的盘口数据(tick对象),你要不要下单?”