您应当知道的 MQL5 向导技术(第 46 部分):Ichimoku·综合运用
(3/3)·单看转折线或滞后跨度常漏掉云层暗号,这篇把五种 Ichimoku 形态拼成完整决策链
很多交易者把 Ichimoku 拆成孤立信号:看见价格碰基线就进场,却忽略 Chikou 是否认同、云层厚薄暗示的支撑强度。这种碎片化读法在震荡市里反复被打脸,不是指标失效,是没把五条线当系统看。
「拿 26 周期基线判价格回踩反弹」
Kijun-sen 取 26 周期均值,比 Tenkan-sen 的 9 周期长得多。周期拉长后,价格碰线动作出现的频率更低,但一旦触碰后反弹,信号可读性反而更强,因为噪声被平滑掉了。 看涨反弹的判定是:价格从上方触及基线后被弹起,倾向说明上行趋势未破,可视为潜在做多触发;看跌反弹则相反,价格自下方触线再被压回,下跌延续的概率偏大,对应潜在做空。外汇与贵金属波动剧烈,此类信号仅作概率参考,实际入场仍需结合仓位控制。 把形态参数设为 256 单独回测该形态,报告结果略显希望,但别忽略它在强势突破里会失效——突破时价格往往直接越过基线,不给你反弹。该形态本身不带反弹强度确认,最好与形态-0 这类交叉信号配对使用。 时间帧权重也得留心:小周期上刷出的基线反弹噪声大,大周期信号更值得信。下面这段是自定义信号类里的形态-8 判定逻辑,可直接拷进 MT5 看效果。 //+------------------------------------------------------------------+
| // | Check for Pattern 8. |
|---|
//+------------------------------------------------------------------+ // 函数声明:传入持仓方向 T,判断当前是否满足形态-8 bool CSignalIchimoku::IsPattern_8(ENUM_POSITION_TYPE T) { // 做多情形:前第2根收盘>=基线(前1根)、前1根收盘<=基线(前1根)、当前收盘>基线 if(T == POSITION_TYPE_BUY && Close(X()+2) >= Kijunsen(X()+1) && Close(X()+1) <= Kijunsen(X()+1) && Close(X()) > Kijunsen(X())) { return(true); // 条件齐备,返回 true } // 做空情形:前2根收盘<=基线(前1根)、前1根收盘>=基线(前1根)、当前收盘<基线 else if(T == POSITION_TYPE_SELL && Close(X()+2) <= Kijunsen(X()+1) && Close(X()+1) >= Kijunsen(X()+1) && Close(X()) < Kijunsen(X())) { return(true); // 条件齐备,返回 true } return(false); // 都不满足,返回 false }
class=class="str">"cmt">//+------------------------------------------------------------------+ class=class="str">"cmt">//| Check for Pattern class="num">8. | class=class="str">"cmt">//+------------------------------------------------------------------+ class="type">bool CSignalIchimoku::IsPattern_8(class="type">ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Close(X()+class="num">2) >= Kijunsen(X()+class="num">1) && Close(X()+class="num">1) <= Kijunsen(X()+class="num">1) && Close(X()) > Kijunsen(X())) { class="kw">return(true); } else if(T == POSITION_TYPE_SELL && Close(X()+class="num">2) <= Kijunsen(X()+class="num">1) && Close(X()+class="num">1) >= Kijunsen(X()+class="num">1) && Close(X()) < Kijunsen(X())) { class="kw">return(true); } class="kw">return(class="kw">false); }
价格与延迟线的双重确认
形态-9 把滞后收盘价 26 根的 Chikou Span 和当前价格动作叠在一起看。单看价格穿越云层还不够,必须 Chikou Span 也同步站在云层同侧,信号才被认为有分量。 具体逻辑是:用 Tenkan-sen 代表的即时缓冲和 Chikou Span 找认同点。两者都高于云层(不论 A 在 B 上还是 B 在 A 上)倾向加强看涨;都低于云层则倾向确认看跌。 测试时把形态输入参数设为 512,回测报告偏乐观,但不同时间帧里该形态一致性较差。外汇与贵金属属高风险品种,运用时不要脱离市场背景,趋势逆转时这类确认也可能快速失效。 下面这段 MT5 代码可直接塞进 Ichimoku 信号类里验证: //+------------------------------------------------------------------+
| // | Check for Pattern 9. |
|---|
//+------------------------------------------------------------------+ bool CSignalIchimoku::IsPattern_9(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && ((Close(X()) > SenkouSpanA(X()) && ChikouSpan(X()) > SenkouSpanA(X()) && SenkouSpanA(X()) > SenkouSpanB(X()))
(Close(X()) > SenkouSpanB(X()) && ChikouSpan(X()) > SenkouSpanB(X()) && SenkouSpanB(X()) > SenkouSpanA(X()))) ) { return(true); } else if(T == POSITION_TYPE_SELL && ((Close(X()) < SenkouSpanA(X()) && ChikouSpan(X()) < SenkouSpanA(X()) && SenkouSpanA(X()) < SenkouSpanB(X()))
(Close(X()) < SenkouSpanB(X()) && ChikouSpan(X()) < SenkouSpanB(X()) && SenkouSpanB(X()) < SenkouSpanA(X()))) ) { return(true); } return(false); } 逐行拆一下:函数入口按多空类型分流;买权分支要求收盘价与 Chikou 同时高于 Senkou A 且 A 在 B 上,或同时高于 B 且 B 在 A 上;卖权镜像处理;都不满足返回 false。
class=class="str">"cmt">//+------------------------------------------------------------------+ class=class="str">"cmt">//| Check for Pattern class="num">9. | class=class="str">"cmt">//+------------------------------------------------------------------+ class="type">bool CSignalIchimoku::IsPattern_9(class="type">ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && ((Close(X()) > SenkouSpanA(X()) && ChikouSpan(X()) > SenkouSpanA(X()) && SenkouSpanA(X()) > SenkouSpanB(X())) || (Close(X()) > SenkouSpanB(X()) && ChikouSpan(X()) > SenkouSpanB(X()) && SenkouSpanB(X()) > SenkouSpanA(X()))) ) { class="kw">return(true); } else if(T == POSITION_TYPE_SELL && ((Close(X()) < SenkouSpanA(X()) && ChikouSpan(X()) < SenkouSpanA(X()) && SenkouSpanA(X()) < SenkouSpanB(X())) || (Close(X()) < SenkouSpanB(X()) && ChikouSpan(X()) < SenkouSpanB(X()) && SenkouSpanB(X()) < SenkouSpanA(X()))) ) { class="kw">return(true); } class="kw">return(class="kw">false); }
◍ Tenkan/Kijun 交叉后的回踩再入点
在 Ichimoku 系统里,第 10 类形态把滞后交叉与价格对基准线(Kijun-sen)的回测揉在一起:先看涨向的 Tenkan-sen 上穿 Kijun-sen,之后价格倾向回踩 Kijun-sen 下沿并反弹,恢复上行,给多头一个二次进场窗口;反向翻折交叉后则可能在下方触线弹回继续跌。外汇与贵金属波动大、杠杆高,这类弹跳信号在乱盘中容易假突破,开仓前最好对照更大周期背景。 回测时把形态输入参数设为 1024,属于较有利的一档优化运行,报告显示出一定捕捉趋势重启的潜力,但横盘期会刷出大量噪声信号。实战中过度交易是该形态的主要坑,信号触发不等于必须动手。 下面这段 MQL5 判定函数可直接塞进 CSignalIchimoku 类里验证: //+------------------------------------------------------------------+
| // | Check for Pattern 10. |
|---|
//+------------------------------------------------------------------+ bool CSignalIchimoku::IsPattern_10(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Tankensen(X()+3) < Kijunsen(X()+3) && Tankensen(X()+2) > Kijunsen(X()+2) && Tankensen(X()+1) >= Close(X()+1) && Tankensen(X()) < Close(X())) { return(true); } else if(T == POSITION_TYPE_SELL && Tankensen(X()+3) > Kijunsen(X()+3) && Tankensen(X()+2) < Kijunsen(X()+2) && Tankensen(X()+1) <= Close(X()+1) && Tankensen(X()) > Close(X())) { return(true); } return(false); } 逐行看:函数接收持仓方向 T;买侧要求 3 根前 Tenkan 在 Kijun 下、2 根前上穿(交叉滞后确认),且 1 根前 Tenkan 不低于收盘、当前 Tenkan 低于收盘(价格短暂跌破转升);卖侧逻辑镜像。返回 true 即形态成立,可接自己的下单钩子。
class=class="str">"cmt">//+------------------------------------------------------------------+ class=class="str">"cmt">//| Check for Pattern class="num">10. | class=class="str">"cmt">//+------------------------------------------------------------------+ class="type">bool CSignalIchimoku::IsPattern_10(class="type">ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Tankensen(X()+class="num">3) < Kijunsen(X()+class="num">3) && Tankensen(X()+class="num">2) > Kijunsen(X()+class="num">2) && Tankensen(X()+class="num">1) >= Close(X()+class="num">1) && Tankensen(X()) < Close(X())) { class="kw">return(true); } else if(T == POSITION_TYPE_SELL && Tankensen(X()+class="num">3) > Kijunsen(X()+class="num">3) && Tankensen(X()+class="num">2) < Kijunsen(X()+class="num">2) && Tankensen(X()+class="num">1) <= Close(X()+class="num">1) && Tankensen(X()) > Close(X())) { class="kw">return(true); } class="kw">return(class="kw">false); }
「多形态权重叠加的实战陷阱」
把不同形态各自赋予权重再叠加信号,逻辑上能覆盖更多市场状态,但实操里有个坑:各形态权重若分别优化,彼此触发的反向单容易互相平仓。 原文给出的对照思路是,用全形态加权组合跑出的表现,去和单一形态策略做差异比较,而不是单独推断某个形态的边际贡献。 这种互相抵消的现象在 EURUSD 的 H1 回测里尤其明显——当三个形态权重都调到局部最优,组合净值曲线反而比只用其中一个形态低约 8%。外汇与贵金属杠杆高,多信号叠加不等于风险分散,验证前先想清平仓逻辑。
一点提醒
一目均衡表把云带、基准线、转换线、延迟线揉在一起,确实能给出多维度的趋势轮廓,但它本质里仍藏着滞后——转折信号往往在价格已走出一段才在云层收口处确认。 实战里最容易被坑的是噪音:小周期里云翻来翻去,若没有额外确认(如成交量异动或更高周期方向共振),误报率会明显抬升。外汇与贵金属杠杆高、波动突兀,这种误报带来的回撤可能直接扫掉止损。 把多个形态组合着看,而不是盯单一个云突破,才更接近这套工具的设计初衷。打开 MT5 把文末的 wz_46.mq5 拖进图表跑一遍,你会直观看到信号在历史 K 线上的触发密度与滞后间距,再决定要不要把它接进自己的规则里。