1. 策略概述
TurtleSignalStrategy 是大名鼎鼎的 海龟交易法则 (Turtle Trading Rules) 的完整复现。 它不仅仅是一个简单的突破策略,而是一套完整的资金管理系统,包含了:
- 入场:唐奇安通道 (Donchian Channel) 突破。
- 仓位管理:基于 ATR (N值) 的加仓 (Pyramiding)。
- 止损:基于 ATR 的移动止损。
- 离场:反向通道突破。
- 基类:
CtaTemplate - 核心指标:Donchian Channel, ATR
- 复杂度:高(涉及分批加仓逻辑)
2. 核心参数
| 参数名 | 默认值 | 含义 |
|---|---|---|
entry_window | 20 | 入场通道周期 (20日高点) |
exit_window | 10 | 离场通道周期 (10日低点) |
atr_window | 20 | ATR 计算周期 |
3. 策略逻辑详解
3.1 信号计算
策略使用 am.donchian 计算唐奇安通道,使用 am.atr 计算波动率 N 值。
| |
3.2 初始入场
当空仓时,在 20 日高点挂买入停止单,在 20 日低点挂卖出停止单。
| |
3.3 加仓逻辑 (Pyramiding)
这是海龟法则的精髓。策略不会一次性买入,而是随着趋势发展分批加仓。
send_buy_orders 函数会根据当前持仓量 (self.pos) 计算还需要加多少次仓。
海龟法则规定:每上涨 0.5 * ATR,加仓 1 个单位,最多加到 4 个单位。
| |
策略在
on_bar中每次都会调用这个函数。如果已经持仓 2 手,它会自动挂出第 3 手和第 4 手的停止单。
3.4 动态止损
海龟法则的止损非常严格:最后一次加仓价 - 2 * ATR。 这意味着随着加仓,止损线会不断上移(保护利润)。
在 on_trade 回调中,每当有新成交,就更新止损线:
| |
3.5 离场
当价格跌破 10 日低点 (exit_down) 时,无条件清仓离场。
| |
这里取 max 是为了处理一种情况:如果止损线 (long_stop) 比 10 日低点还高,那就按止损线走;否则按 10 日低点走。
4. 总结
TurtleSignalStrategy 是一个教科书级别的趋势策略实现。 它教会我们:
- 敢于赢:通过加仓机制,在趋势正确时大幅放大收益。
- 敢于输:通过严格的 2ATR 止损,控制单笔亏损。
- 机械化:完全基于价格突破,没有任何主观预测。