利用 Donchian 通道进行交易·进阶篇
📊

利用 Donchian 通道进行交易·进阶篇

(2/3)· 突破边界就入场常被假信号反咬,本篇拆解通道参数与趋势确认的落地细节

实战向进阶 第 2/3 篇
看到价格刺穿 Donchian 通道上下轨就急着下单,是多数人的本能反应。可通道改编版里标红的回落区说明,裸突破在震荡市里胜率偏低。先搞懂极值类型怎么选,再谈信号确认才靠谱。

◍ 四套Donchian变体的回测底座

先定死测试环境再跑策略: 2016.03.01—2017.03.01, 品种 EURUSD 与 GOLD-6.17 期货, 基于真实报价的逐笔执行, 初始入金 1000 USD, 杠杆 1:500, 服务器 MetaQuotes。EA 以 4 合 1 形态封装, 单次仅持一仓, 所以资金管理的「固定手数」与「按余额」在实测里等价, 只留这两种模式。 四套待测组合: 纯 Donchian; Donchian+ADX; Donchian+MACD; Donchian+平均速度+X4Period_RSI_Arrows。工作时间帧覆盖 M30—D1, 仓位管理对比尾随停止与无尾随, 这部分参数会在优化器里跑。 纯 Donchian 在 EURUSD 的 M30—H1 上最佳, 指标周期 10—12, 价格模式取 CLOSE_HIGH_LOW; 加尾随反而比不用更低效。同周期放到 GOLD-6.17 上结果更好。Donchian+ADX 在 M30 交易数更少但胜率更高, 通道周期 18 / ADX 周期 10 为优; 期货侧 H1 下通道 10、ADX 8 近似。Donchian+MACD 在 H1 最佳, 改 MACD 参数影响微弱, 期货侧通道 10 时尾随反而增效。 复杂滤波器(平均速度+RSI箭头)因期货波动偏小而过选, EURUSD 上更适用。中间结论是: 货币对上 ADX/MACD 过滤能减仓提效, 期货整体结果优于货币对但过滤增益不明显。外汇与贵金属杠杆交易高风险, 上述均为历史样本内的概率性倾向。 下方为 EA 输入参数片段, 可直接拷进 MT5 的 MQ5 头部对照调参:

MQL5 / C++
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| 专家交易系统输入参数                                              |
class=class="str">"cmt">//+------------------------------------------------------------------+
sinput class="type">class="kw">string            Inp_EaComment="Donchian Expert";           class=class="str">"cmt">//EA 注释
input  class="type">class="kw">double            Inp_Lot=class="num">0.01;                             class=class="str">"cmt">//基本手数
input MarginMode         Inp_MMode=LOT;                            class=class="str">"cmt">//资金管理
input  class="type">int               Inp_MagicNum=class="num">555;                         class=class="str">"cmt">//魔幻数字
input  class="type">int               Inp_StopLoss=class="num">400;                         class=class="str">"cmt">//止损 (单位: 点数)
input  class="type">int               Inp_TakeProfit=class="num">600;                       class=class="str">"cmt">//止盈 (单位: 点数)
input  class="type">int               Inp_Deviation = class="num">20;                       class=class="str">"cmt">//偏离
input  ENUM_TIMEFRAMES   InpInd_Timeframe=PERIOD_M30;              class=class="str">"cmt">//工作时间帧
input  class="type">bool              InfoPanel=false;                          class=class="str">"cmt">//显示信息面板
class=class="str">"cmt">//--- Donchian 通道系统指标参数

「EA 输入参数怎么配」

下面这段声明决定了 Donchian 通道 EA 的运行骨架。把周期、手数、止损止盈和点差容忍度一次设对,才能在 MT5 里跑出有意义的回测。 input uint DonchianPeriod=10; //通道周期 input Applied_Extrem Extremes=CLOSE_HIGH_LOW; //极值类型 input Strategy CurStrategy=Donchian; //所选策略 input bool UseTrailing=false; //使用尾随停止 上面四行是策略开关层:通道看 10 根 K 线,极值取收盘价与高低价组合,主策略锁定 Donchian,尾随停止默认关掉。 sinput string Inp_EaComment="Donchian Expert"; //EA 注释 input double Inp_Lot=0.01; //基本手数 input MarginMode Inp_MMode=LOT; //资金管理 input int Inp_MagicNum=555; //魔幻数字 input int Inp_StopLoss=400; //止损 (单位: 点数) input int Inp_TakeProfit=600; //止盈 (单位: 点数) input int Inp_Deviation = 20; //偏离 input ENUM_TIMEFRAMES InpInd_Timeframe=PERIOD_M30; //工作时间帧 input bool InfoPanel=false; //显示信息面板 实盘层参数里,0.01 手是基本仓位,止损 400 点、止盈 600 点构成 1:1.5 的风险回报比;偏离 20 点给成交留了滑点缓冲。时间帧写死 M30,意味着信号只在 30 分钟bar闭合时计算。 input uint DonchianPeriod=12; //通道周期 注意末尾又出现一次 DonchianPeriod,值改成 12。这说明指标内部通道和策略层通道可能用不同周期,真正加载指标时以这行 12 为准。外汇与贵金属杠杆高,400 点止损在黄金上可能瞬间被打掉,上 MT5 前先核对合约最小变动位。

MQL5 / C++
input class="type">uint              DonchianPeriod=class="num">10;                     class=class="str">"cmt">//通道周期
input Applied_Extrem    Extremes=CLOSE_HIGH_LOW;                  class=class="str">"cmt">//极值类型
class=class="str">"cmt">//--- 选择策略
input Strategy          CurStrategy=Donchian;                    class=class="str">"cmt">//所选策略
class=class="str">"cmt">//--- 尾随停止参数
input class="type">bool              UseTrailing=false;                       class=class="str">"cmt">//使用尾随停止
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| 专家交易系统输入参数                                                |
class=class="str">"cmt">//+------------------------------------------------------------------+
sinput class="type">class="kw">string           Inp_EaComment="Donchian Expert";          class=class="str">"cmt">//EA 注释
input class="type">class="kw">double            Inp_Lot=class="num">0.01;                            class=class="str">"cmt">//基本手数
input MarginMode        Inp_MMode=LOT;                           class=class="str">"cmt">//资金管理
input class="type">int               Inp_MagicNum=class="num">555;                        class=class="str">"cmt">//魔幻数字
input class="type">int               Inp_StopLoss=class="num">400;                        class=class="str">"cmt">//止损 (单位: 点数)
input class="type">int               Inp_TakeProfit=class="num">600;                      class=class="str">"cmt">//止盈 (单位: 点数)
input class="type">int               Inp_Deviation = class="num">20;                      class=class="str">"cmt">//偏离
input ENUM_TIMEFRAMES   InpInd_Timeframe=PERIOD_M30;             class=class="str">"cmt">//工作时间帧
input class="type">bool              InfoPanel=false;                         class=class="str">"cmt">//显示信息面板
class=class="str">"cmt">//--- Donchian 通道系统指标参数
input class="type">uint              DonchianPeriod=class="num">12;                       class=class="str">"cmt">//通道周期

尾随止损与下单参数的实盘设定

把唐奇安通道策略接进 EA 时,尾随停止那段参数最容易被忽视,但它直接决定浮盈回吐的幅度。下面这段代码块定义了从开关到步长的完整尾随逻辑,以及基础下单手数和风控线。 尾随默认开启(UseTrailing=true),但没用虚拟止损(VirtualTrailingStop=false),意味着止损位是真实挂到服务器的。步长 StepTrall=50 点、启动门槛 StartTrall=100 点:仓位浮盈先跑过 100 点,之后价格每回撤 50 点才推一次止损。外汇与贵金属杠杆高,这种设定在剧烈波动里可能频繁触发,也可能扛不住滑点。 下单侧给了可验证的硬数字:基础手数 0.01、魔术码 555、固定止损 400 点、止盈 600 点。止损止盈都用点数而非价格,回测时换品种不用重写。开 MT5 把这段贴进输入区,改 StepTrall 到 30 对比一下回撤曲线,比看任何说明都直观。

MQL5 / C++
input Applied_Extrem        Extremes=CLOSE_HIGH_LOW;                    class=class="str">"cmt">//极值类型
class=class="str">"cmt">//--- 选择策略
input Strategy              CurStrategy=Donchian;                          class=class="str">"cmt">//所选策略
....
class=class="str">"cmt">//--- 尾随停止参数
input class="type">bool                 UseTrailing=true;                              class=class="str">"cmt">//使用尾随停止
input class="type">bool                 VirtualTrailingStop=false;                     class=class="str">"cmt">//虚拟尾随停止
input TrallMethod          parameters_trailing=class="num">7;                         class=class="str">"cmt">//尾随停止方法
input ENUM_TIMEFRAMES      TF_Tralling=PERIOD_CURRENT;                    class=class="str">"cmt">//指标时间帧
input class="type">int                  StepTrall=class="num">50;                                  class=class="str">"cmt">//尾随停止步长 (单位: 点数)
input class="type">int                  StartTrall=class="num">100;                                class=class="str">"cmt">//最小尾随盈利 (单位: 点数)
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| 专家交易系统输入参数                                                |
class=class="str">"cmt">//+------------------------------------------------------------------+
sinput class="type">class="kw">string              Inp_EaComment="Donchian Expert";               class=class="str">"cmt">//EA 注释
input class="type">class="kw">double               Inp_Lot=class="num">0.01;                                  class=class="str">"cmt">//基本手数
input MarginMode           Inp_MMode=LOT;                                 class=class="str">"cmt">//资金管理
input class="type">int                  Inp_MagicNum=class="num">555;                              class=class="str">"cmt">//魔幻数字
input class="type">int                  Inp_StopLoss=class="num">400;                              class=class="str">"cmt">//止损 (单位: 点数)
input class="type">int                  Inp_TakeProfit=class="num">600;                            class=class="str">"cmt">//止盈 (单位: 点数)

◍ Donchian+ADX 系统的输入参数拆解

把一套通道突破 EA 跑起来之前,先得把 input 区看明白。下面这段声明定义了它在 M30 上结合 Donchian 与 ADX 过滤的核心可调项,直接复制到 MT5 的 EA 头文件就能编译。 偏离值 Inp_Deviation 设成 20 点,避免成交价滑点过大被拒单;工作时间帧锁 PERIOD_M30,信息面板默认关掉(InfoPanel=false)以减少图表对象开销。Donchian 通道周期给的是 18,极值取 CLOSE_HIGH_LOW,也就是用收盘价和 K 线高低混合判定突破。 策略枚举里 CurStrategy 默认 Donchian_ADX,说明出场和入场都受 ADX 把关:ADX_period=10、ADX_level=20,意味着只有 10 周期 ADX 站上 20 才认趋势成立,概率上能滤掉一部分横盘假突破。 仓位与风控部分,基础手数 0.01、MagicNum 555 便于和其他 EA 区分;止损 400 点、止盈 600 点,盈亏比倾向 1:1.5。外汇与贵金属杠杆高,这类固定点数止损在跳空时可能扩损,实盘前务必在策略测试器用历史数据回测验证。

MQL5 / C++
input class="type">int                Inp_Deviation = class="num">20;                                                                       class=class="str">"cmt">//偏离
input ENUM_TIMEFRAMES     InpInd_Timeframe=PERIOD_M30;                                                                class=class="str">"cmt">//工作时间帧
input class="type">bool                InfoPanel=false;                                                                             class=class="str">"cmt">//显示信息面板
class=class="str">"cmt">//--- Donchian 通道系统指标参数
input class="type">uint                DonchianPeriod=class="num">18;                                                                           class=class="str">"cmt">//通道周期
input Applied_Extrem      Extremes=CLOSE_HIGH_LOW;                                                                     class=class="str">"cmt">//极值类型
class=class="str">"cmt">//--- 选择策略
input Strategy            CurStrategy=Donchian_ADX;                                                                    class=class="str">"cmt">//所选策略
class=class="str">"cmt">//--- ADX 指标参数
input class="type">int                 ADX_period=class="num">10;
input class="type">class="kw">double              ADX_level=class="num">20;
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| 专家交易系统输入参数                                                                                    |
class=class="str">"cmt">//+------------------------------------------------------------------+
sinput class="type">class="kw">string             Inp_EaComment="Donchian Expert";                                                            class=class="str">"cmt">//EA 注释
input class="type">class="kw">double              Inp_Lot=class="num">0.01;                                                                               class=class="str">"cmt">//基本手数
input MarginMode          Inp_MMode=LOT;                                                                              class=class="str">"cmt">//资金管理
input class="type">int                 Inp_MagicNum=class="num">555;                                                                           class=class="str">"cmt">//魔幻数字
input class="type">int                 Inp_StopLoss=class="num">400;                                                                           class=class="str">"cmt">//止损 (单位: 点数)
input class="type">int                 Inp_TakeProfit=class="num">600;                                                                         class=class="str">"cmt">//止盈 (单位: 点数)
input class="type">int                 Inp_Deviation = class="num">20;                                                                         class=class="str">"cmt">//偏离

「把通道系统参数摊开看」

下面这段 EA 输入参数直接决定了 Donchian 通道系统在 MT5 里的运行骨架。核心周期设为 H1,通道回看 18 根 K 线,极值取收盘价高低(CLOSE_HIGH_LOW),这是偏中期突破的默认配置。 策略开关选了 Donchian_ADX,意味着进场会叠加 ADX 过滤:ADX 周期 8、阈值 20,只有当趋势强度越过 20 线,突破信号才可能被采纳,能砍掉一部分震荡假突破。 尾随停止默认开启(UseTrailing=true),但虚拟尾随关掉。方法编号 7,步长 50 点、启动盈利门槛 100 点——也就是说浮盈先跑满 100 点才开始跟价,之后每回撤 50 点砍一次。外汇和贵金属杠杆高,这种尾随在高波动时段可能频繁触发,建议先开模拟盘验证。 EA 本身手数写死 0.01,注释标 'Donchian Expert',属于最小风险试单档位。复制下面代码到 MQ5 文件头部,编译后就能在输入页面对照调参。

MQL5 / C++
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_H1;                  class=class="str">"cmt">//工作时间帧
input class="type">bool                 InfoPanel=false;                               class=class="str">"cmt">//显示信息面板
class=class="str">"cmt">//--- Donchian 通道系统指标参数
input class="type">uint                 DonchianPeriod=class="num">18;                             class=class="str">"cmt">//通道周期
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                       class=class="str">"cmt">//极值类型
class=class="str">"cmt">//--- 选择策略
input Strategy             CurStrategy=Donchian_ADX;                      class=class="str">"cmt">//所选策略
class=class="str">"cmt">//--- ADX 指标参数
input class="type">int                  ADX_period=class="num">8;
input class="type">class="kw">double               ADX_level=class="num">20;
class=class="str">"cmt">//--- 尾随停止参数
input class="type">bool                 UseTrailing=true;                              class=class="str">"cmt">//使用尾随停止
input class="type">bool                 VirtualTrailingStop=false;                     class=class="str">"cmt">//虚拟尾随停止
input TrallMethod          parameters_trailing=class="num">7;                         class=class="str">"cmt">//尾随停止方法
input ENUM_TIMEFRAMES      TF_Tralling=PERIOD_CURRENT;                    class=class="str">"cmt">//指标时间帧
input class="type">int                  StepTrall=class="num">50;                                  class=class="str">"cmt">//尾随停止 (单位: 点数)
input class="type">int                  StartTrall=class="num">100;                                class=class="str">"cmt">//最小尾随盈利 (单位: 点数)
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| 专家交易系统输入参数                                                  |
class=class="str">"cmt">//+------------------------------------------------------------------+
sinput class="type">class="kw">string              Inp_EaComment="Donchian Expert";               class=class="str">"cmt">//EA 注释
input class="type">class="kw">double               Inp_Lot=class="num">0.01;                                 class=class="str">"cmt">//基本手数

把参数面板摊开看清楚

下面这段 input 声明直接决定了 EA 在 MT5 里的可调面板。把它整段贴进 mq5 文件头部,编译后就能在「输入参数」里逐项改,不用动逻辑。 资金管理选 LOT 模式、魔幻数 555 用来隔离本 EA 的订单;止损 400 点、止盈 600 点,偏离 20 点控制成交滑点容忍。工作帧锁在 H1,信息面板默认开,方便盯盘时直接读状态。 通道部分走 Donchian 系统,周期 16、极值取收盘价高低;策略切换项里选了 Donchian_MACD 组合。MACD 则按经典 12/26/9 配:快 EMA 12、慢 EMA 26、信号 SMA 9,应用价用收盘价。外汇与贵金属波动大、杠杆高,实盘前先用策略测试器跑这几组数,看回测里止损触发频率再决定是否收紧。

MQL5 / C++
input MarginMode                Inp_MMode=LOT;                                            class=class="str">"cmt">//资金管理
input class="type">int                     Inp_MagicNum=class="num">555;                                           class=class="str">"cmt">//魔幻数字
input class="type">int                     Inp_StopLoss=class="num">400;                                           class=class="str">"cmt">//止损 (单位: 点数)
input class="type">int                     Inp_TakeProfit=class="num">600;                                         class=class="str">"cmt">//止盈 (单位: 点数)
input class="type">int                     Inp_Deviation = class="num">20;                                         class=class="str">"cmt">//偏离
input ENUM_TIMEFRAMES         InpInd_Timeframe=PERIOD_H1;                                 class=class="str">"cmt">//工作时间帧
input class="type">bool                    InfoPanel=true;                                             class=class="str">"cmt">//显示信息面板
class=class="str">"cmt">//--- Donchian 通道系统指标参数
input class="type">uint                    DonchianPeriod=class="num">16;                                          class=class="str">"cmt">//通道周期
input Applied_Extrem          Extremes=CLOSE_HIGH_LOW;                                    class=class="str">"cmt">//极值类型
class=class="str">"cmt">//--- 选择策略
input Strategy                CurStrategy=Donchian_MACD;                                  class=class="str">"cmt">//所选策略
class=class="str">"cmt">//--- MACD 指标参数
input class="type">int                     InpFastEMA=class="num">12;                                             class=class="str">"cmt">//快速 EMA 周期
input class="type">int                     InpSlowEMA=class="num">26;                                             class=class="str">"cmt">//慢速 EMA 周期
input class="type">int                     InpSignalSMA=class="num">9;                                            class=class="str">"cmt">//信号 SMA 周期
input ENUM_APPLIED_PRICE      InpAppliedPrice=PRICE_CLOSE;                               class=class="str">"cmt">//应用价格
把边界扫描交给小布盯盘
这些诊断小布盯盘的 AIGC 已内置,打开对应品种页即可看到通道突破与趋势指标是否同步,你只管判断要不要跟单。

常见问题

HIGH_LOW_CLOSE 的上边界取所选周期内最高价与收盘价的平均,下边界仍用最低价,比纯高低价更贴近收盘情绪,假突破概率可能略低。
不一致。贵金属与外汇波动结构不同,外汇受时段流动性影响大,贵金属还看避险资金,建议各自回测再定参数,两者均属高风险品种。
通道边界随极值滚动,震荡中价格回碰边界即触发离场,但原趋势可能延续,需叠加趋势指标过滤离场噪声。
可以。小布在品种页叠加通道与趋势确认层,对回落进通道的刺穿柱做了淡红标注,省去肉眼翻历史。
把通道向右偏移若干柱,相当于用滞后边界判突破,能砍掉部分毛刺信号,但也会延迟入场,属概率与时效的权衡。