VN.PY CTA 策略模板与通用接口详解

在编写 CTA 策略前,必须理解 vnpy_ctastrategy.template 提供的基础框架。本文将拆解核心接口。 1. CtaTemplate:策略的灵魂 所有 CTA 策略都继承自 CtaTemplate。 1.1 生命周期回调 策略在不同阶段会自动触发以下函数,你需要重写它们来实现逻辑: 回调函数 触发时机 典型用途 on_init 策略初始化时 加载历史数据 (self.load_bar(10)),初始化指标 on_start 策略启动时 标记状态,打印日志 on_tick 收到 Tick 数据 高频逻辑,或合成 K 线 (bg.update_tick(tick)) on_bar K 线合成完毕 核心逻辑区:计算指标、判断信号、发单 on_order 委托状态变化 追踪订单状态(未成交/部分成交/全成/撤单) on_trade 成交推送 更新持仓均价,记录交易日志 1.2 交易指令(原始接口) 在 CtaTemplate 中,发单函数是“方向”与“开平”的组合: 买入开仓 (Long): self.buy(price, volume) 卖出平仓 (Sell): self.sell(price, volume) 卖出开仓 (Short): self.short(price, volume) 买入平仓 (Cover): self.cover(price, volume) 注意:只有当 self.trading = True 时(即策略启动后),这些函数才会真正发出委托,否则只会返回空列表。 2. TargetPosTemplate:目标仓位管理 对于复杂的组合策略,手动管理开平仓极其繁琐(需要判断当前持仓是多还是空,是平仓还是反手)。 TargetPosTemplate 解决了这个问题。 ...

May 1, 2025 · 1 min