1. 策略概述
BollChannelStrategy 是一个基于 布林带 (Bollinger Bands) 的通道突破策略。 它不仅仅依赖价格突破布林带上下轨,还引入了 CCI (Commodity Channel Index) 作为趋势过滤器,并使用 ATR (Average True Range) 来计算动态的移动止损位。
- 基类:
CtaTemplate - 周期:15分钟 K 线 (通过
BarGenerator合成) - 核心指标:Bollinger Bands, CCI, ATR
- 风控机制:ATR 倍数移动止损
2. 核心参数与变量
| 参数名 | 默认值 | 含义 |
|---|---|---|
boll_window | 18 | 布林带均线周期 |
boll_dev | 3.4 | 布林带标准差倍数(较宽,意味着只抓大趋势) |
cci_window | 10 | CCI 计算周期 |
atr_window | 30 | ATR 计算周期 |
sl_multiplier | 5.2 | 止损距离的 ATR 倍数(非常宽的止损) |
3. 策略逻辑详解
3.1 K 线合成
策略在 on_init 中初始化了一个 15 分钟的 K 线生成器:
| |
这意味着 on_tick 更新 1 分钟 bar,1 分钟 bar 累积满 15 个后触发 on_15min_bar,核心逻辑都在 on_15min_bar 中执行。
3.2 指标计算
| |
3.3 入场逻辑:突破 + 过滤
策略使用 停止单 (Stop Order) 进行突破交易。
- 做多:当 CCI > 0 (处于多头趋势) 时,在布林带上轨 (
boll_up) 挂出买入停止单。 - 做空:当 CCI < 0 (处于空头趋势) 时,在布林带下轨 (
boll_down) 挂出卖出停止单。
| |
关键点:这里使用了
stop=True参数。这意味着委托不会立即成交,而是挂在交易所(或策略引擎本地),只有当价格触及上轨/下轨时才会触发成交。这正是“突破”的定义。
3.4 出场与风控:ATR 吊灯止损 (Chandelier Stop)
策略使用 ATR 的倍数作为移动止损距离。
- 多单止损:
最高价 - ATR * 5.2 - 空单止损:
最低价 + ATR * 5.2
| |
4. 总结
BollChannelStrategy 是一个非常稳健的趋势策略设计范例:
- 大周期:使用 15 分钟而非 1 分钟,过滤了高频噪音。
- 宽通道:3.4 倍标准差的布林带,意味着只有极端的行情爆发才会被捕捉。
- 宽止损:5.2 倍 ATR 的止损幅度,给予行情充分的震荡空间,避免被轻易洗出。
- 顺势过滤:CCI 确保了只在趋势方向上进行突破尝试。
- 停止单: 触发后按市场价成交,确保突破时能迅速进场。可能导致较大滑点。