3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 PTrade 量化交易平台中,高频 Tick 策略(最小频率可达 3 秒运行一次)对行情延迟和报单速度有着极高的要求。要实现极速交易,需要从行情获取方式、报单接口选择、系统参数配置以及代码逻辑精简四个维度进行深度优化。
order_tick 代替普通 ordertick_data 事件中,必须使用专为 Tick 级别设计的 order_tick 接口。该接口支持直接指定盘口档位(如买一、卖二等)进行委托,避免了因本地计算限价而产生的延迟。在 initialize 中使用 set_parameters 接口进行精细化配置,减少不必要的数据传输:
tick_data_no_l2="1":如果策略不需要逐笔委托和逐笔成交数据,务必将其设置为 "1"。这样 tick_data 的 data 中将不包含 order 和 transaction,大幅降低内存占用和解析耗时。receive_other_response="0":不接收非本交易产生的主推,减少回调函数的触发频率。is_dict=True 极速取数get_individual_entrust(逐笔委托)或 get_individual_transaction(逐笔成交)时,将 is_dict 参数设置为 True。返回的 dict 格式比默认的 DataFrame 或 Panel 格式解析速度有质的提升,特别是在订阅股票数量较多时,能有效避免卡顿。tick_data 中调用高耗时接口:如 get_history、get_price 或 get_fundamentals。历史行情和财务数据应在 before_trading_start(盘前)一次性获取并缓存至全局变量 g 中。numpy 数组进行数学计算,避免复杂的循环。以下是一个经过优化的高频 Tick 策略标准代码结构:
def initialize(context):
# 设置操作的股票池
g.security = '600570.SS'
set_universe(g.security)
# 核心参数优化配置
# 1. 过滤不需要的L2逐笔数据,降低行情推送延迟
# 2. 避免服务器重启时重复执行盘前初始化
set_parameters(
tick_data_no_l2="1",
receive_other_response="0",
server_restart_not_do_before="1"
)
def before_trading_start(context, data):
# 盘前准备:获取历史数据并缓存,避免在Tick事件中实时获取
history = get_history(10, '1d', 'close', g.security, fq='pre', include=False)
g.close_array = history['close'].values
g.has_ordered = False # 报单状态控制
def tick_data(context, data):
security = g.security
# 安全检查:确保当前代码有Tick数据推送
if security not in data or 'tick' not in data[security]:
return
tick_df = data[security]['tick']
if tick_df is None or tick_df.empty:
return
# 极速获取买一价与卖一价(避免使用 eval,直接通过 DataFrame 索引或字典解析)
# 注意:根据实际返回格式,若 bid_grp 是字符串,需在盘前或初始化中做好解析准备
try:
bid_grp = tick_df['bid_grp'].iloc[0]
offer_grp = tick_df['offer_grp'].iloc[0]
# 示例:如果买一价大于设定阈值且未报单,使用 order_tick 快速挂单
current_price = bid_grp[1][0] # 获取买一价
if current_price > 35.50 and not g.has_ordered:
# 使用 order_tick 快速向买一档报单买入 100 股
order_tick(security, 100, priceGear='1')
log.info(f"触发高频买入,代码: {security}, 价格: {current_price}")
g.has_ordered = True
except Exception as e:
log.error(f"解析Tick数据异常: {e}")
def handle_data(context, data):
# 日线/分钟线事件保持为空,避免干扰 Tick 线程
pass
高频交易是毫秒级的竞争。在 PTrade 上运行 Tick 策略时,**“盘前缓存、参数精简、盘口直报(order_tick)”**是提升速度的三大法宝。通过合理配置 set_parameters 过滤无用行情,并采用原生 Python 字典或 Numpy 结构处理数据,可以最大程度压榨系统性能,降低交易延迟。