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) 上计算通道。
| |
- 上轨 = MA + 1.6 * ATR
- 下轨 = MA - 1.6 * ATR
3.2 入场逻辑:OCO 双向挂单
这是该策略最独特的实现细节。 当空仓时,策略同时在上方挂买入停止单,在下方挂卖出停止单。
| |
send_oco_order 内部会发出两笔 stop=True 的委托,并记录它们的 ID。
3.3 订单管理 (OCO 机制)
一旦其中一笔成交(例如向上突破买入成交),策略必须立即撤销另一笔未成交的委托(撤销下方的卖出单),防止双向持仓或意外反手。
这在 on_trade 回调中处理:
| |
3.4 出场与风控
持仓后,策略不再关注通道,而是转为 百分比移动止损。
- 记录持仓后的极值 (
intra_trade_high/intra_trade_low)。 - 回撤 0.8% 止损。
4. 总结
KingKeltnerStrategy 展示了高级的订单管理技巧:
- OCO (One Cancels Other):在震荡区间内,同时埋伏上下突破,哪边突破做哪边。
- 通道选择:相比布林带,肯特纳通道在计算带宽时使用了 ATR,这在某些品种上能提供更稳定的支撑压力位。