PTrade中tick_data函数的执行时间和频率是什么?
想了解tick级别策略的执行时机
问题描述
解决方案
在 PTrade 量化交易平台中,tick_data 函数是专门用于处理 tick 级别高频策略的核心回调函数。关于它的执行时间和频率,官方文档有明确的规定:
1. 执行频率
- 频率:
tick_data函数每隔 3 秒执行一次。 - 说明:当策略选择 tick 频率运行时,交易的最小频率可以达到 3 秒运行一次,这使得策略能够捕捉到盘中极短时间内的价格和盘口变化。
2. 执行时间
- 时间段:该函数的执行时间为交易日的 9:30 -- 14:59。
- 说明:它覆盖了正常的连续竞价交易时段,不包含盘前集合竞价和 14:59 之后的尾盘集合竞价阶段。
3. 使用场景与注意事项
- 适用模块:该函数仅在交易模块可用,回测环境中不支持。
- 下单限制:在
tick_data函数中,只能使用order_tick接口进行对应的下单操作,不能使用常规的order系列函数。 - 数据结构:
tick_data函数中的data参数与handle_data中的data结构完全不同。它是一个嵌套字典,包含了order(逐笔委托)、tick(当前tick快照数据)和transcation(逐笔成交)三项内容。 - Level2 行情依赖:参数
data中包含的逐笔委托(order)和逐笔成交(transcation)数据,必须开通 Level2 行情才会有数据推送,否则对应字段会返回None。
4. 简单代码示例
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def tick_data(context, data):
security = g.security
# 获取买一价
current_price = eval(data[security]['tick']['bid_grp'][0])[1][0]
log.info("当前买一价: %s" % current_price)
# 简单的触发逻辑:如果买一价大于指定价格,则按买一档价格下单
if current_price > 38.19:
order_tick(security, 100, 1)
def handle_data(context, data):
pass
总结来说,如果您需要编写对时间极其敏感、依赖盘口档位或逐笔数据的策略,tick_data 是您的首选,但务必注意其 3 秒的执行间隔以及对 Level2 行情的依赖。