3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化交易平台中,get_tick_direction 是用于获取当日 Level 2 分时成交(逐笔合并分时) 行情数据的核心接口。在高频交易或 Tick 级策略中,合理使用该接口的参数对降低延迟、提高策略执行效率至关重要。
search_direction 参数 1 与 2 的区别get_tick_direction 接口的定义如下:
get_tick_direction(symbols=None, query_date=0, start_pos=0, search_direction=1, data_count=50)
其中,search_direction(搜索方向)参数决定了数据的检索和返回顺序:
search_direction=1(向前搜索 / 默认值):
search_direction=2(向后搜索):
start_pos 起始位置往未来的时间点检索。在高频 Tick 级或秒级(run_interval)策略中,行情获取的延迟直接影响下单的滑点。以下是针对 get_tick_direction 的提速优化建议:
精简订阅股票池(symbols):
None(默认获取当前股票池所有代码)。在高频场景下,应显式传入当前急需处理的单只或少数几只股票代码,如 get_tick_direction('600570.SS'),避免多余的数据传输和解析开销。控制获取条数(data_count):
data_count 设为较小的值(例如 data_count=5 或 data_count=10),这能显著减少网络 I/O 和内存开销。配合 set_parameters 过滤 L2 逐笔数据:
tick_data 事件,但不需要逐笔委托和逐笔成交,可以在 initialize 中设置 set_parameters(tick_data_no_l2="1")。这样可以避免推送多余的 L2 逐笔明细,从而为整体策略运行提速。以下是一个在 tick_data(3秒周期)中,利用 search_direction=1 快速获取最新 5 笔分时成交并判断大单方向的策略骨架:
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
# 开启相关参数优化
set_parameters(tick_data_no_l2="1")
def handle_data(context, data):
pass
def tick_data(context, data):
# 提速技巧 1:指定单只股票
# 提速技巧 2:限制 data_count 为 5,仅获取最新 5 笔
# 提速技巧 3:使用 search_direction=1 确保列表头部为最新数据
direction_data = get_tick_direction(
symbols=[g.security],
search_direction=1,
data_count=5
)
if direction_data and g.security in direction_data:
ticks = direction_data[g.security]
if len(ticks) > 0:
# 获取最新一笔分时成交(由于 search_direction=1,索引 0 即为最新)
latest_tick = ticks[0]
latest_price = latest_tick['hq_px']
latest_amount = latest_tick['business_amount']
latest_direction = latest_tick['business_direction'] # 0:卖, 1:买, 2:平盘
log.info(f"最新成交 - 价格: {latest_price}, 数量: {latest_amount}, 方向: {latest_direction}")
# 策略逻辑:如果最新一笔是大额买单(方向为1),则执行相应操作
if latest_direction == 1 and latest_amount >= 50000:
log.info("检测到大额买单流入,触发逻辑...")