利用 Donchian 通道进行交易·进阶篇
(2/3)· 突破边界就入场常被假信号反咬,本篇拆解通道参数与趋势确认的落地细节
◍ 四套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 头部对照调参:
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 前先核对合约最小变动位。
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 对比一下回撤曲线,比看任何说明都直观。
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。外汇与贵金属杠杆高,这类固定点数止损在跳空时可能扩损,实盘前务必在策略测试器用历史数据回测验证。
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 文件头部,编译后就能在输入页面对照调参。
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,应用价用收盘价。外汇与贵金属波动大、杠杆高,实盘前先用策略测试器跑这几组数,看回测里止损触发频率再决定是否收紧。
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">//应用价格