3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在PTrade量化交易引擎中,常规的 handle_data 函数仅满足日线和分钟级别的盘中处理。如果您需要进行 tick级别 的盘中处理,需要通过 tick_data 或者 run_interval 函数来实现。
以下是这两个函数的详细介绍及使用场景:
tick_data(context, data) 函数tick_data 是专门用于处理tick级别策略交易逻辑的事件函数。它在交易时间内(9:30 -- 14:59)每隔 3秒 执行一次。
特点与注意事项:
tick_data 中的 data 参数与 handle_data 中的不同。它包含 order(逐笔委托)、tick(当前tick数据)、transcation(逐笔成交)三项。order_tick 进行对应的下单操作。代码示例:
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')
run_interval(context, func, seconds=10) 函数run_interval 是一个定时周期性函数,用于以设定的时间间隔(单位为秒)周期性运行指定的自定义函数。它可以作为tick级别处理的另一种灵活实现方式。
特点与注意事项:
initialize 函数中调用。seconds 设置最小时间间隔为3秒,小于3秒默认设定为3秒。代码示例:
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
# 定义一个周期处理函数,每3秒执行一次
run_interval(context, interval_handle, seconds=3)
def interval_handle(context):
# 获取实时行情快照
snapshot = get_snapshot(g.security)
if snapshot:
last_px = snapshot[g.security].get('last_px')
log.info('当前最新价: %s' % last_px)
# 在此处编写您的tick级交易逻辑
tick_data。run_interval 提供了更灵活的定时任务机制。on_order_response(委托主推)和 on_trade_response(成交主推)事件函数作为tick级的补充。