策略解析:KingKeltnerStrategy (肯特纳通道突破)

源码文件:vnpy_ctastrategy.strategies.king_keltner_strategy 1. 策略概述 KingKeltnerStrategy 是一个基于 肯特纳通道 (Keltner Channel) 的趋势突破策略。 肯特纳通道与布林带类似,都是“均线 + 带宽”的结构,但肯特纳通道使用 ATR (平均真实波幅) 来计算带宽,而不是标准差。这使得它对波动率的反应更加平滑。 基类:CtaTemplate 周期:5分钟 K 线 核心指标:Keltner Channel (MA ± N * ATR) 订单管理:OCO (One Cancels Other) —— 双向挂单 2. 核心参数 参数名 默认值 含义 kk_length 11 计算均线和 ATR 的周期 kk_dev 1.6 通道宽度倍数 (MA ± 1.6 * ATR) trailing_percent 0.8 移动止损百分比 3. 策略逻辑详解 3.1 指标计算 策略在 5 分钟 K 线 (on_5min_bar) 上计算通道。 1 self.kk_up, self.kk_down = am.keltner(self.kk_length, self.kk_dev) 上轨 = MA + 1.6 * ATR 下轨 = MA - 1.6 * ATR 3.2 入场逻辑:OCO 双向挂单 这是该策略最独特的实现细节。 当空仓时,策略同时在上方挂买入停止单,在下方挂卖出停止单。 ...

May 7, 2025 · 1 min

策略解析:DualThrustStrategy (Dual Thrust 区间突破)

源码文件:vnpy_ctastrategy.strategies.dual_thrust_strategy 1. 策略概述 DualThrustStrategy 是 Michael Chalek 在 20 世纪 80 年代开发的著名策略,曾被 Future Truth 杂志评为最赚钱的策略之一。 它是一个典型的 日内突破策略。核心逻辑是利用前 N 日(这里简化为前 1 日)的最高价、最低价、收盘价计算出一个“波动区间 (Range)”,然后以今日开盘价为锚点,加上/减去这个区间的倍数,形成上轨和下轨。 基类:CtaTemplate 核心逻辑:Range Breakout (区间突破) 交易时段:日内交易,收盘前强制平仓 2. 核心参数 参数名 默认值 含义 k1 0.4 上轨系数 (用于做多) k2 0.6 下轨系数 (用于做空) fixed_size 1 每次下单手数 注意:k1 和 k2 可以不对称。如果 k1 < k2,说明做多更容易触发,适合多头市场;反之适合空头市场。 3. 策略逻辑详解 3.1 计算 Range (波动区间) 策略在每天开盘时(检测到日期变化),利用前一日的数据计算 Range。 1 2 3 4 5 6 7 if last_bar.datetime.date() != bar.datetime.date(): if self.day_high: self.day_range = self.day_high - self.day_low # 前一日振幅 # 计算今日突破轨 self.long_entry = bar.open_price + self.k1 * self.day_range self.short_entry = bar.open_price - self.k2 * self.day_range 上轨 (Long Entry) = 今日开盘价 + K1 * 昨日振幅 下轨 (Short Entry) = 今日开盘价 - K2 * 昨日振幅 3.2 盘中突破交易 在收盘时间 (exit_time, 14:55) 之前,策略持续监控价格是否突破上下轨。 ...

May 6, 2025 · 1 min