您应该了解的MQL5向导技巧(第七十三部分):使用一目均衡表形态与ADX-Wilder形态
引言
本文将一目均衡表(Ichimoku)指标与韦尔德平均趋向指数(ADX)震荡指标组合使用,分别用于判断支撑/阻力与识别趋势。一目均衡表功能丰富、用途广泛,所能提供的远不止支撑与阻力位。然而,我们目前仅使用其支撑/阻力这一功能。指标组合,尤其是互补性的指标搭配,可能为EA提供更清晰的入场信号。与往期一样,我们基于该指标组合研究了10种信号形态。对这10种指定索引的信号形态逐一进行测试,并遵循以下规则:
形态索引从0到9,便于EA计算并专属调用对应的映射值。例如,如果形态索引为1,则参数PatternsUsed需设置为2的1次方,即2;如果索引为4,则为2的4次方,即16,以此类推。由于总共有10种形态,因此该参数的最大有效值为1023。0到1023之间非2的纯幂次的数值,代表10种形态中的多种形态组合。
在先前的文章中我们已经论述过:使用多信号进行训练或优化,即便测试结果看起来十分亮眼,最终也注定效果不佳。原因在于,当同时启用多个信号时,它们往往会在有限的测试窗口内,于最利于最大化利润的关键位置,无意间互相抵消彼此的交易信号。虽然可以通过扩大测试窗口来回避这一问题,但本文的测试周期仅为一年,因此该方法并不适用。
一目均衡表
顾名思义,一目均衡表是一套综合性指标,通过多个要素共同判断趋势方向、动量强弱以及支撑阻力位。这一指标的名称本身就意为“一体化交易系统”,旨在对价格行为提供全局视角,常被用于趋势跟踪策略。它由五个数据缓冲区构成:转换线、基准线、先行上线A、先行下线B和滞后线。除此之外,通常还会提到由先行上线A和先行下线B围成的云带(Kumo)。直观上看,云带可作为支撑/阻力标识,其厚度也可作为衡量趋势强度的指标。
计算这五条线只需要三个参数,通常设置为9、26和52。理论上这些数值可以根据不同市场自定义,但通常建议保留默认周期,转而调整系统的其他参数。通过该指标可以衍生出大量交易信号,包括转换线与基准线的交叉、滞后线确认信号等,我们将在下文详细说明。因此一目均衡表适用性极强,可用于股票、外汇、加密货币等各类资产,也适配多种时间周期。
让我们来看一下这五条线的基础计算公式,首先是转换线,其计算公式如下:
=(周期内最高价 + 周期内最低价)/2
其中:
- 最高价是过去9个周期内的最高价格;
- 最低价同样是过去9个周期内的最低价格。
转换线可视为短期趋势指标,对价格变动较为敏感,能够快速反映短期行情的冷热。基准线的计算方式与之类似:
=(周期内最高价 + 周期内最低价)/2
其中:
- 最高价为26个周期内的最高价格;
- 最低价为26个周期内的最低价格。
基准线作为中期趋势晴雨表,同时也可充当支撑与阻力位。接下来是先行上线A,其缓冲区计算公式如下:
=(转换线 + 基准线)/2
其中:
- 转换线和基准线分别为来自缓冲区的转换线和基准线值,其公式如上所示。
缓冲区的主要作用是构成云带的一条边缘,是一目均衡表中重要的支撑/阻力位。接下来是先行下线B,其计算逻辑同样与转换线类似,区别仅在于所使用的周期长度不同:
=(周期内最高价 + 周期内最低价)/2
其中:
- 最高价为52个周期内的最高价格;
- 最低价为52个周期内的最低价格。
其作用是配合先行上线A,构成云带的第二条边线。更长的周期也使其成为长期的支撑/阻力位。最后是滞后线,即最后一条线,定义如下:
= 当前周期收盘价
其中:
- 收盘价会向前偏移26个周期绘制
滞后线的作用是通过对比历史价格与当前走势来确认趋势。同样值得注意的是前文已提及的云带。通常是指先行上线A与先行下线B之间的区域。当A>B时,为看涨云带;反之,当A<B时,为看跌云带。云带可直观反映趋势强度及支撑/阻力水平。
韦尔德平均趋向指数
本文使用的第二个指标用于衡量现有趋势的强度,而非趋势方向。然而,除主线外还有两条附加线,可用于判断多头与空头动能。通常来说,ADX主线数值范围在0至100之间,但极少突破25,因此一旦上破25,即视为强趋势信号。当数值低于20时,代表趋势疲软。它属于滞后指标,计算默认周期通常为14。适用于各类资产与品种。辅助信号可通过+DI与-DI的交叉获取,用于判断趋势方向,再由ADX主缓冲区确认趋势强度。
韦尔德平均趋向指数输出3条线,但计算过程中实际会用到多达6条缓冲区数据:正向动向+DM、正向动向指标+DI、负向动向- DM、负向动向指标- DI、真实波幅TR,以及最终的ADX主缓冲区。让我们逐一介绍计算公式。首先是正向动向(+DM):
= 当前周期最高价 − 上一周期最高价
其中:
- 前一周期的最低价必须大于当前周期的最低价。如果该条件不满足,则取值为0。
该缓冲区用于追踪价格的上行波动。接下来是负向动向(-DM)缓冲区,计算公式如下:
= 前一周期最低价 − 当前周期最低价
其中:
- 当前周期的最高价需高于前一周期的最高价,否则取值为0。
该缓冲区用于衡量价格的下行波动。定义完动向指标后,我们来关注真实波幅(TR)。计算公式如下:
= 三者中的最大值:(当前最高价 − 当前最低价)、|当前最高价 − 前一周期收盘价|、|当前最低价 − 前一周期收盘价|
其中:
- Max即为上述三个差值中的最大值。
真实波幅的主要作用是衡量价格波动率。在定义完动向与真实波幅后,我们来看实际使用的指标缓冲区。首先是正向动向指标(+DI),计算公式如下:
=(平滑后的+DM/平滑后的TR)× 100
其中:
- 平滑+DM为上述正向动向的指数移动平均值。
- 平滑TR为真实波幅的指数移动平均值。
+DI的作用是指示多头力量强度。接下来是负向动向指标(-DI),计算公式如下:
=(平滑后的-DM/平滑后的TR)× 100
其中:
- 平滑后的-DM为上述负向动向的指数移动平均值。
- 平滑TR同样为真实波幅的指数移动平均值。
+DI与-DI缓冲区通常使用14作为周期。-DI的作用是衡量空头力量强度。定义完这两个缓冲区后,我们就可以得出ADX主缓冲区。其公式如下:
= 平滑处理[(|+DI − -DI| ÷ (+DI + -DI)) × 100]
其中:
- 平滑处理指对公式计算结果,以14周期进行指数平均。
- +DI为上文定义的多头动向指标,而非正向动向(+DM)。
- -DI同样为上文定义的空头动向指标。
- 未经过平滑处理的数值也被称为DX。
经过平滑处理的DX,即ADX,用于量化趋势强度。介绍完两个指标后,我们来看本文所用的10种交易形态。所有测试一如既往地将2023年作为回测周期,2024年作为前向步进或测试环境。然而,本次我们采用30分钟周期,而非惯用的4小时周期,因为一目均衡表在一年测试窗口内产生的信号不够多。测试品种为英镑兑美元(GBPUSD)。
价格突破先行上线A与ADX确认
形态0是我们的第一种交易模型,命名格式统一为pattern-x,其中x为形态索引,而非出现顺序。如前文引言所述,我们强调索引编号,是因为便于设置输入参数,实现一次只测试一种形态。形态0多头信号定义:价格向上突破先行上线A,标志着价格向上突破云带。该信号通常需要ADX数值至少达到25作为有效趋势确认。我们在MQL5中按照如下方式实现该逻辑:
//+------------------------------------------------------------------+ //| Check for Pattern 0. | //+------------------------------------------------------------------+ bool CSignalIchimoku_ADXWilder::IsPattern_0(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Close(X() + 1) < Ichimoku_SenkouSpanA(X() + 1) && Close(X()) > Ichimoku_SenkouSpanA(X()) && ADX(X()) >= 25.0) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X() + 1) > Ichimoku_SenkouSpanA(X() + 1) && Close(X()) < Ichimoku_SenkouSpanA(X()) && ADX(X()) >= 25.0) { return(true); } return(false); }
空头形态定义:价格向下跌破先行上线A并收于其下方。该信号代表价格向下跌破云带,且伴随强势趋势。一目云带突破与ADX趋势强度确认的组合,有助于提高信号筛选质量。该形态在趋势行情中效果最优,震荡行情则不适用。在仅对2023年进行回测后,我们又进行了2023至2024年两年周期测试,得到的报告如下:

2023年初次测试结果波动较大,但仍小幅盈利。有趣的是,前向步进也呈现相似的资金曲线形态,且依旧保持盈利。该形态的最优实践建议:入场前可在更高时间周期上做趋势共振确认。ADX至少为25的条件,对过滤弱势信号至关重要。多单/空单的止损可分别设置在云带下方/上方。密切监控假突破尤为关键。
转换线/基准线交叉与ADX确认
下一个形态基于双移动平均线交叉与ADX强度确认。多头信号:转换线自下向上穿越基准线并收于其上方,标志着短期多头动量转向,此时ADX需至少为20。我们在MQL5中编写的判断函数如下:
//+------------------------------------------------------------------+ //| Check for Pattern 1. | //+------------------------------------------------------------------+ bool CSignalIchimoku_ADXWilder::IsPattern_1(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Ichimoku_TenkanSen(X() + 1) < Ichimoku_KijunSen(X() + 1) && Ichimoku_TenkanSen(X()) > Ichimoku_KijunSen(X()) && ADX(X()) >= 20.0) { return(true); } else if(T == POSITION_TYPE_SELL && Ichimoku_TenkanSen(X() + 1) > Ichimoku_KijunSen(X() + 1) && Ichimoku_TenkanSen(X()) < Ichimoku_KijunSen(X()) && ADX(X()) >= 20.0) { return(true); } return(false); }
空头信号:转换线从上向下穿越基准线并收于其下方,标志着行情转向空头动能。该信号本质上是一目均衡表中的早期趋势反转信号,并辅以ADX进行强度确认。适用市场环境为趋势启动初期或分型转折点;在横盘震荡市场中,可靠性会明显下降。单独运行该形态,得到的报告如下:

该形态在前向步进中表现明显不佳。原因可能是止盈目标设置过紧,且未设置止损。读者可对这些参数进行优化调整,以得到更合适的交易设置。此外,使用该形态时,交易方向应与更高时间周期的趋势保持一致。将ADX阈值设置为 20,目的是过滤掉弱势交叉信号。多单止损可设置在基准线下方,而空单止损则设置在基准线上方。结合成交量指标使用,可进一步提升信号的可靠性。
先行上线A/B交叉与ADX 确认
形态2基于云带转换或交叉构建。多头信号:当先行上线A向上穿越先行下线B,形成看涨云带时触发。该转换发生时,ADX需至少达到25。我们在MQL5中按照如下方式实现该逻辑:
//+------------------------------------------------------------------+ //| Check for Pattern 2. | //+------------------------------------------------------------------+ bool CSignalIchimoku_ADXWilder::IsPattern_2(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Ichimoku_SenkouSpanA(X() + 1) < Ichimoku_SenkouSpanB(X() + 1) && Ichimoku_SenkouSpanA(X()) > Ichimoku_SenkouSpanB(X()) && ADX(X()) >= 25.0) { return(true); } else if(T == POSITION_TYPE_SELL && Ichimoku_SenkouSpanA(X() + 1) > Ichimoku_SenkouSpanB(X() + 1) && Ichimoku_SenkouSpanA(X()) < Ichimoku_SenkouSpanB(X()) && ADX(X()) >= 25.0) { return(true); } return(false); }
对于空头信号,当先行上线A从上向下穿越先行下线B并收于其下方时触发。该信号标志着云带转向空头,是长期趋势反转信号,也可作为趋势的辅助确认依据。该信号适合趋势行情中作为波段交易信号使用。其测试结果如下:

形态2在前向步进中表现稳健。与前文相同,本次测试周期仅为一年,样本有限,因此读者在进一步应用这些思路前,务必自行完成独立、严谨的测试验证。对于形态2,如果能在更高时间周期上确认云带交叉信号,效果会更可靠。ADX 25这一阈值是过滤弱势信号的关键。多单止损可设置在云带下方,空单止损设置在云带上方。云带较薄时,应避免使用该形态。
价格在云带处反弹/遇阻配合ADX与DI确认
形态3关注价格在一目云带附近的走势表现。多头信号:价格从云带上沿(即先行上线A)获得支撑反弹,同时ADX至少为25,且+DI(多头指标)>-DI(空头指标)。我们在MQL5中按照如下方式实现该逻辑:
//+------------------------------------------------------------------+ //| Check for Pattern 3. | //+------------------------------------------------------------------+ bool CSignalIchimoku_ADXWilder::IsPattern_3(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Close(X() + 2) > Close(X() + 1) && Close(X() + 1) < Close(X()) && Close(X() + 2) > Ichimoku_SenkouSpanA(X() + 2) && Close(X()) > Ichimoku_SenkouSpanA(X()) && Close(X() + 1) <= Ichimoku_SenkouSpanA(X() + 1) && ADX_Plus(X()) > ADX_Minus(X()) && ADX(X()) >= 25.0 ) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X() + 2) < Close(X() + 1) && Close(X() + 1) > Close(X()) && Close(X() + 2) < Ichimoku_SenkouSpanA(X() + 2) && Close(X()) < Ichimoku_SenkouSpanA(X()) && Close(X() + 1) >= Ichimoku_SenkouSpanA(X() + 1) && ADX_Plus(X()) < ADX_Minus(X()) && ADX(X()) >= 25.0 ) { return(true); } return(false); }
空头信号:价格在云带下边缘附近受阻回落,具体边界取决于先行上线A与先行下线B的相对位置。同时满足ADX至少为25,且-DI(空头指标)>+DI(多头指标)。形态3是一个较强的支撑/阻力信号,同时附带方向确认条件。它最适合用在区间震荡向趋势行情切换的阶段 —— 这类拐点往往较难识别,因此本信号需要经过多重过滤才能确认。形态3的测试结果如下:

该形态与形态2有些相似,如上所示,在前向步进中也实现了稳定盈利。使用形态3时,建议结合K线形态(如针形线)来确认反弹或受阻信号,效果更优。正负动向指标的相对强弱,需要与价格趋势方向保持一致。止损可设置在先行下线B的略下方/上方。
滞后线相对先行上线A位置与ADX确认
形态4用到了一目均衡表的第五根线 —— 滞后线。多头信号:滞后线位于先行上线A上方。如前文所述,滞后线是一条滞后指标,通常滞后26根 K 线。从编程角度出发,在调用内置一目均衡表的滞后线缓冲区时,需要手动将数值偏移26期读取,否则会出现无效值(NaN)。因此,当滞后线位于先行上线A上方,且ADX高于25时,即为有效信号。我们在MQL5中按照如下方式实现该逻辑:
//+------------------------------------------------------------------+ //| Check for Pattern 4. | //+------------------------------------------------------------------+ bool CSignalIchimoku_ADXWilder::IsPattern_4(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Ichimoku_ChinkouSpan(X() + 26) > Ichimoku_SenkouSpanA(X()) && ADX(X()) >= 25.0 ) { return(true); } else if(T == POSITION_TYPE_SELL && Ichimoku_ChinkouSpan(X() + 26) < Ichimoku_SenkouSpanA(X()) && ADX(X()) >= 25.0 ) { return(true); } return(false); }
空头信号:滞后线运行在先行上线A下方,同时ADX数值不低于25。然而,在此情况下,先行上线A位于先行下线B下方,而在多头信号中,先行上线A是处在先行下线B上方。该信号属于趋势强度的滞后确认信号,最适合用来验证已形成的现有趋势。前向步进测试结果如下:

形态4在前向步进中的表现十分优异,甚至优于形态3与形态2。但是在实际使用时,该信号更适合用来确认趋势,而非直接作为入场信号。也可搭配其他一目均衡表信号组合使用,例如结合云带位置进行综合判断。止损位可依据近期波段高低点进行设置。形态4适配趋势明确的行情,震荡盘整行情不建议使用该信号。以下为图表上多头形态4信号的直观示例。

价格在转换线处反弹/遇阻配合ADX与DI确认
下一个形态研究的是价格在转换线处的走势,而非刚才讲到的云带形态。多头信号:价格从转换线获得支撑并反弹,同时ADX至少达到25,且+DI(多头动向指标)>-DI(空头动向指标)。我们在MQL5中按照如下方式实现该逻辑:
//+------------------------------------------------------------------+ //| Check for Pattern 5. | //+------------------------------------------------------------------+ bool CSignalIchimoku_ADXWilder::IsPattern_5(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Close(X() + 2) > Close(X() + 1) && Close(X() + 1) < Close(X()) && Close(X() + 2) > Ichimoku_TenkanSen(X() + 2) && Close(X()) > Ichimoku_TenkanSen(X()) && Close(X() + 1) <= Ichimoku_TenkanSen(X() + 1) && ADX_Plus(X()) > ADX_Minus(X()) && ADX(X()) >= 25.0 ) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X() + 2) < Close(X() + 1) && Close(X() + 1) > Close(X()) && Close(X() + 2) < Ichimoku_TenkanSen(X() + 2) && Close(X()) < Ichimoku_TenkanSen(X()) && Close(X() + 1) >= Ichimoku_TenkanSen(X() + 1) && ADX_Plus(X()) < ADX_Minus(X()) && ADX(X()) >= 25.0 ) { return(true); } return(false); }
空头形态:价格在转换线遇阻回落,将其视为阻力位,同时ADX至少为 25。此时动向指标需满足:-DI(空头指标)>+DI(多头指标)。该信号用于确认短期动量,在趋势行情中尤其有效,特别是在回调走势中。前向步进测试结果如下:

在目前这套指标组合测试的所有信号形态中,该形态的表现显然是最差的。它在前向步进中完全失效。可以改进的方向包括:增加K线形态来确认信号。目前已经在检查动向指标是否同向,还可以额外加入阈值判断,再确认信号。另外本次测试未设置止损,后续也可以加上,多单止损放在转换线下方,空单止损放在转换线上方。
价格突破基准线配合ADX与DI 确认
下一个形态 ,即形态6,涉及价格与基准线的交叉。多头信号:价格自下向上突破基准线并收于其上,同时满足+DI >-DI,且ADX至少为25。我们在MQL5中按照如下方式实现该逻辑:
//+------------------------------------------------------------------+ //| Check for Pattern 6. | //+------------------------------------------------------------------+ bool CSignalIchimoku_ADXWilder::IsPattern_6(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Close(X() + 1) < Ichimoku_KijunSen(X() + 1) && Close(X()) > Ichimoku_KijunSen(X()) && ADX_Plus(X()) > ADX_Minus(X()) && ADX(X()) >= 25.0) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X() + 1) > Ichimoku_KijunSen(X() + 1) && Close(X()) < Ichimoku_KijunSen(X()) && ADX_Plus(X()) < ADX_Minus(X()) && ADX(X()) >= 25.0) { return(true); } return(false); }
空头信号:价格自上而下穿越基准线并收于其下方。同时满足-DI >+DI,且ADX主线数值至少为25。这是一个中期趋势信号,并附带了方向强度确认。最适合的市场环境为已有明确趋势的行情。形态6的测试报告如下:

该形态和上一个测试的形态一样,前向步进效果很差,只是没那么糟糕而已。可以尝试的改进方向:参考更高时间周期的云带方向。另外,除了ADX阈值和动向指标方向匹配外,还可以设置止损,多单止损放在基准线下方,空单放在基准线上方。
价格在先行下线B处反弹/遇阻与ADX确认
第八个形态,形态7,关注价格在先行下线B处的表现。多头信号:价格在先行下线B处获得支撑反弹,同时ADX处于20且正在上升。这种情况下,先行上线A位于先行下线B上方,说明价格拐点出现在云带内部。我们在MQL5中按照如下方式实现该逻辑:
//+------------------------------------------------------------------+ //| Check for Pattern 7. \ //+------------------------------------------------------------------+ bool CSignalIchimoku_ADXWilder::IsPattern_7(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Close(X() + 2) > Close(X() + 1) && Close(X() + 1) < Close(X()) && Close(X() + 2) > Ichimoku_SenkouSpanB(X() + 2) && Close(X()) > Ichimoku_SenkouSpanB(X()) && Close(X() + 1) <= Ichimoku_SenkouSpanB(X() + 1) && Ichimoku_SenkouSpanA(X()) > Ichimoku_SenkouSpanB(X()) && ADX(X()) >= 20.0 ) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X() + 2) < Close(X() + 1) && Close(X() + 1) > Close(X()) && Close(X() + 2) < Ichimoku_SenkouSpanB(X() + 2) && Close(X()) < Ichimoku_SenkouSpanB(X()) && Close(X() + 1) >= Ichimoku_SenkouSpanB(X() + 1) && Ichimoku_SenkouSpanA(X()) < Ichimoku_SenkouSpanB(X()) && ADX(X()) >= 20.0 ) { return(true); } return(false); }
空头信号:价格在先行下线B处遇阻回落,此时B线充当阻力,ADX至少为20,如果同时呈上升状态,则可视为更强确认。与多头信号一致,此时先行下线B位于先行上线A上方,说明价格反转同样发生在云带内部。这是一个基于云带支撑/阻力的信号,适用于趋势行情中的深度回调。与前文的信号相同,我们对其进行前向步进测试,结果如下:

形态7的表现要好于前两个形态,在一年测试/优化后,能够实现一整年的前向步进盈利。尽管如此,它仍有优化空间。可以加入K线形态来独立验证方向。止损可以设置得相对紧凑,多单/空单分别严格放在先行下线B的下方/上方。当云带较薄或ADX数值偏低时,应避免使用该形态。
价格位于云带之上/之下与ADX确认
倒数第二个形态偏向宏观视角,关注价格相对于云带的整体位置。多头信号:价格运行在云带之上,即先行上线A高于先行下线B,且ADX至少为25。我们在MQL5中按照如下方式实现该逻辑:
//+------------------------------------------------------------------+ //| Check for Pattern 8. | //+------------------------------------------------------------------+ bool CSignalIchimoku_ADXWilder::IsPattern_8(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Close(X() + 1) < Close(X()) && Close(X() + 1) > Ichimoku_SenkouSpanA(X() + 1) && Close(X()) > Ichimoku_SenkouSpanA(X()) && Ichimoku_SenkouSpanA(X()) > Ichimoku_SenkouSpanB(X()) && ADX(X()) >= 25.0 ) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X() + 1) > Close(X()) && Close(X() + 1) < Ichimoku_SenkouSpanA(X() + 1) && Close(X()) < Ichimoku_SenkouSpanA(X()) && Ichimoku_SenkouSpanA(X()) > Ichimoku_SenkouSpanB(X()) && ADX(X()) >= 25.0 ) { return(true); } return(false); }
空头信号:价格运行在云带下方,应为先行上线A低于先行下线B。ADX主线需显示出明确的强趋势,即数值至少达到25。该形态属于简单的趋势跟踪信号,并辅以ADX进行强度确认。非常适合用于趋势延续的交易场景。在优化后对该形态进行前向步进,结果如下:

形态8可能是本文所有测试信号形态中表现最好的一个,其前向步进结果明显优于回测结果。我们的测试和训练周期非常有限,因此读者需始终留意这一点。形态8的可优化方向:入场前可通过价格变动参数,进一步确认实际趋势方向。同时,多单/空单的止损可以稳妥设置在云带下方或上方一定距离处。为更直观说明,下图为形态8的多头信号示例:

滞后线对比价格与云带位置与ADX确认
最后一个形态重新使用了我们在形态4中提到的滞后线,并将其与云带结合。多头信号:应要求滞后线高于价格且高于先行上线A,且ADX至少为25以确认强趋势。我们在MQL5中按照如下方式实现该逻辑:
//+------------------------------------------------------------------+ //| Check for Pattern 9. | //+------------------------------------------------------------------+ bool CSignalIchimoku_ADXWilder::IsPattern_9(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Ichimoku_ChinkouSpan(X() + 26) > Ichimoku_SenkouSpanA(X()) && //Ichimoku_ChinkouSpan(X() + 26) > Close(X()) && Ichimoku_SenkouSpanA(X()) > Ichimoku_SenkouSpanB(X()) && ADX(X()) >= 25.0 ) { return(true); } else if(T == POSITION_TYPE_SELL && Ichimoku_ChinkouSpan(X() + 26) < Ichimoku_SenkouSpanA(X()) && //Ichimoku_ChinkouSpan(X() + 26) < Close(X()) && Ichimoku_SenkouSpanA(X()) < Ichimoku_SenkouSpanB(X()) && ADX(X()) >= 25.0 ) { return(true); } return(false); }
空头信号:滞后线位于价格下方,同时也位于先行上线A下方,且ADX至少为 25。这是一个偏滞后的信号,用于确认趋势方向与强度。形态9最适合的市场环境是强势趋势行情。作为最后一个形态,测试结果如下:

尽管该形态在前向步进阶段最终实现了盈利,但与形态8,以及前文提到的形态4等其他几个形态相比,表现仍略显逊色。可优化的方向包括:结合其他一目均衡表形态作为二次确认信号。使用该形态时,务必确保云带方向与交易方向保持一致。止损可依据近期价格走势设置;再次强调,该形态不适用于横盘或震荡行情。
结论
本文介绍了另一种指标组合,即一目均衡表与韦尔德平均趋向指数。在为期两年的有限测试周期内,该指标组合筛选出了七种具备前向步进盈利潜力的信号形态。之所以称其“有潜力”,是因为测试周期较短,且本文的核心思路始终是探索性研究。在下一篇文章中,我们将重点分析三个前向表现不佳的信号形态,并探讨机器学习能否帮助它们改善表现。
| 名称 | 描述 |
|---|---|
| WZ-73.mq5 | 向导组装式EA,其头文件显示组装中所包含的文件 |
| SignalWZ_73.mqh | MQL5向导组装中使用的自定义信号类文件 |
本文由MetaQuotes Ltd译自英文
原文地址: https://www.mql5.com/en/articles/18723
注意: MetaQuotes Ltd.将保留所有关于这些材料的权利。全部或部分复制或者转载这些材料将被禁止。
本文由网站的一位用户撰写,反映了他们的个人观点。MetaQuotes Ltd 不对所提供信息的准确性负责,也不对因使用所述解决方案、策略或建议而产生的任何后果负责。
神经网络在交易中的应用:用于多元时间序列预测的 LSTM 优化(DA-CG-LSTM)
新手在交易中的10个基本错误
数据科学与机器学习(第43篇):使用潜在高斯混合模型(LGMM)识别指标数据中的隐藏模式