3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 PTrade 极速量化交易系统中,tick_data 函数每 3 秒触发一次,用于处理 Tick 级别的实时行情与交易逻辑。通过开通 Level2 行情,我们可以从 data 参数中直接获取**逐笔成交(transcation)与逐笔委托(order)**数据,从而精准捕捉机构或主力资金的大单交易动向。
在 tick_data(context, data) 中,data 参数是一个字典。针对每一个订阅标的,其内部包含三大核心数据字段:
tick:当前 Tick 盘口及快照数据。order:最近一条逐笔委托(需 Level2 权限)。transcation:最近一条逐笔成交(需 Level2 权限)。transcation 返回一个包含以下关键字段的 DataFrame:
business_time:时间戳(毫秒级)hq_px:成交价格business_amount:成交量(股/张)trade_index:成交编号business_direction:成交方向(0 - 卖,1 - 买)buy_no / sell_no:叫买方/叫卖方编号initialize 中使用 set_universe 设定监控股票池。None。data[security]['transcation'] 获取最新逐笔成交 DataFrame。order_tick 下单或记录日志。python # -*- coding: utf-8 -*- def initialize(context): # 1. 设置监控标的 g.security = '600570.SS' # 恒生电子 set_universe(g.security) # 2. 设置大单筛选阈值(例如:单笔成交量大于 500 手 / 50000 股) g.big_order_amount = 50000 def tick_data(context, data): security = g.security if security not in data: return # 获取逐笔成交数据 transcation_df = data[security].get('transcation') # 判断是否有 Level2 逐笔成交数据 if transcation_df is None or transcation_df.empty: return # 提取最新一条逐笔成交记录 latest_trans = transcation_df.iloc[-1] amount = latest_trans.get('business_amount', 0) price = latest_trans.get('hq_px', 0.0) direction = latest_trans.get('business_direction', -1) trade_time = latest_trans.get('business_time', '') # 计算成交金额 balance = price * amount # 筛选大单 if amount >= g.big_order_amount: direction_str = "主动买单(主买)" if direction == 1 else ("主动卖单(主卖)" if direction == 0 else "未知") log.info(f"[大单监控提醒] 时间: {trade_time} | 代码: {security} | 方向: {direction_str} | 价格: {price} | 成交量: {amount}股 | 总额: {balance:.2f}元") # 示例逻辑:若出现主动买入大单,按买一档跟单下单(请根据实际风险控制编写) # if direction == 1: # order_tick(security, 100, "1") # 以买一档买入 100 股 def handle_data(context, data): pass
transcation 数据返回为 None。tick_data 回调函数中下单,必须使用专门的 order_tick() 接口,而非普通的 order()。set_parameters 中合理配置,或使用 is_dict=True 提高高性能数据解析效率。