3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在超短线或高频交易策略中,毫秒级的下单速度与精准的盘口价格捕捉至关重要。ptrade 提供了 tick_data 事件函数与 order_tick 下单接口,允许开发者以 3 秒一次的频率处理 tick 级别行情,并按盘口指定档位快速报单。
tick_data(context, data)data[security]['tick'] 包含了当前的 Tick 盘口快照,如买卖档位信息 bid_grp 与 offer_grp。order_tick(sid, amount, priceGear='1', limit_price=None)tick_data 模块中使用。sid (str):股票或标的代码,例如 '600570.SS'。amount (int):交易数量,正数表示买入,负数表示卖出。priceGear (str):盘口档位选择。
'1' ~ '5'(Level2 行情支持到 '10')。'-1' ~ '-5'(Level2 行情支持到 '-10')。limit_price (float):买卖限价。当传入该参数时,下单价格优先以 limit_price 为准。以下示例演示如何在 tick_data 函数中解析盘口买一价,并在满足条件时,按卖一档位(priceGear='-1')快速买入吃单或按买一档位(priceGear='1')挂单:
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def tick_data(context, data):
security = g.security
# 校验 tick 数据
if security not in data or 'tick' not in data[security]:
return
tick_info = data[security]['tick']
# 获取买一档价格 (bid_grp[1][0] 为买一价)
# 结构: {档位: [价格, 委托量, 委托笔数]}
bid_grp = tick_info.get('bid_grp', {})
if 1 in bid_grp:
bid1_price = bid_grp[1][0]
# 策略条件 1:价格上涨突破指定阈值,按卖一档位快速买入(吃单)
if bid1_price > 35.50:
# priceGear='-1' 表示以卖一档价格挂买单,实现快速吃单成交
order_id = order_tick(security, 100, priceGear='-1')
log.info(f"触发卖一吃单买入,订单编号: {order_id}")
# 策略条件 2:价格回调时,按买一档位排队挂单
elif bid1_price < 34.00:
# priceGear='1' 表示以买一档价格挂买单
order_id = order_tick(security, 100, priceGear='1')
log.info(f"触发买一排队挂单,订单编号: {order_id}")
def handle_data(context, data):
pass
order_tick 是 tick 级别的专属下单接口,严禁在 handle_data 或 run_daily 中调用,否则会报错或无法下单。priceGear 和 limit_price,ptrade 引擎将优先使用 limit_price 的具体数值报单。