30指标对比分析EA实战教学
用矩阵信号法筛选最有效MT4指标组
为什么需要指标对比分析
在MetaTrader 4平台中,交易者面对数百种内置与自定义指标,常常陷入选择困难。新手通常会在历史数据与模拟账户上逐个测试,但这种方式受交易品种、图表周期、波动率等大量参数干扰,结论往往主观且片面。更科学的做法是将多个指标置于同一市场环境下横向对比,观察它们在不同行情阶段发出信号的一致性与有效性。
然而,若直接将十个以上指标加载到价格图表,视觉严重过载,图形混乱无法分析。本文提出的Expert Advisor正是为解决该矛盾而生:它不在主图绘制指标线,而是生成一个独立的数字矩阵,用统一语言表达各指标信号,使对比清晰可行。
EA核心设计理念与定位
需明确,该EA并非用于实盘自动交易的机器人,不包含资金管理模块,下单逻辑极简。它的核心任务是信号可视化与对比分析。程序逐一计算30个常见指标与震荡指标在当前柱的立场,并映射为三种标记:-1代表卖出信号,0代表无信号,1代表买入信号。
这种抽象剥离了指标原有画法,使不同量纲的指标具备可比性。例如鳄鱼指标的分形突破、RSI的超买超卖、MACD的零轴交叉,最终都转化为矩阵中的同一行数据,交易者一眼可识别哪些指标看多、哪些看空。
30个被覆盖的指标清单
程序内置分析以下工具:加速/减速指标(AC)、累积/派发指标(A/D)、鳄鱼与分形、加多摆动、ADX、ATR、动量震荡、熊力、保力加通道、牛力、顺势指标、DeMarker、包络线、强力指数、一目平衡表(三个变体)、MFI、移动平均、MACD(两个变体)、MACD直方图(两个变体)、抛物线转向、RSI、RVI、标准离差、随机震荡(两个变体)、威廉指标。几乎涵盖MT4所有默认震荡与趋势工具。
- 趋势类:MACD、ADX、移动平均、一目平衡表、鳄鱼
- 震荡类:RSI、随机、威廉、CCI、RVI、动量
- 成交量类:A/D、MFI、强力指数
- 波动率类:ATR、保力加通道、标准离差
信号矩阵的工作原理
EA在图表上创建一个文本对象矩阵。每一行对应一个指标,每一列对应一个时刻(基于选定周期)。单元格显示-1、0或1。图1展示整体效果;图2以RVI为例:主线破信号线之上记1,之下记-1,因该指标无中性状态故无0。
根据特性,指标分为两类:持续显著型(标记从不为0,如RVI、MACD主线交叉类),以及逐点显著型(可含0,仅特定点发信号,如抛物线转向)。理解此分类有助于后续分组——持续型适合判趋势方向,逐点型适合找入场时机。
//30. Williams Percent Range
//Buy: crossing -80 upwards
//Sell: crossing -20 downwards
if (iWPR(NULL,piwpr,piwprbar,1)<-80&&iWPR(NULL,piwpr,piwprbar,0)>=-80)
{f30=1;}
if (iWPR(NULL,piwpr,piwprbar,1)>-20&&iWPR(NULL,piwpr,piwprbar,0)<=-20)
{f30=-1;}
上段代码展示威廉指标逻辑:前一根低于-80且当前升至-80上方为买;前一根高于-20且当前跌穿-20为卖。每个指标均以此类条件赋标记,存入数组f[]。
矩阵绘制的代码实现
为避免同时间对象名重复,EA用TimeCurrent()拼接唯一标识,循环创建OBJ_TEXT对象于独立窗口区域。以下片段说明显示逻辑:
timeident=TimeCurrent(); //Time to form the unique object name
for (i=0;i<=29;i++) //Loop for displaying values
{ident=DoubleToStr(30-i,0)+" "+DoubleToStr(timeident,0);
ObjectCreate(ident,OBJ_TEXT,0,timeident,WindowPriceMin()+Point*5*(i+1));
info=DoubleToStr(f[30-i],0); //Forming a text line to be displayed
ObjectSetText(ident,info,6,"Arial", Black);}
该设计将30行信号垂直排列于图表底部,不与K线重叠,解决视觉过载。参数均可外部变量化,支持策略测试器优化初始值。
基于矩阵筛选指标组的步骤
第一步,选定带趋势的图表与周期。第二步,标识趋势区间(绿线示于原文图4),含启动横盘与结束获利点,排除先行/滞后信号干扰。第三步,读取该区间内矩阵各行:持续与趋势同向且及时的指标保留,反之剔除。第四步,在其他周期类比验证,扩充或缩减,得最终组。
例如,在EURUSD H1上升趋势中,若MACD与动量震荡全程记1而随机震荡频繁闪0,则优先保留前者入组。这种基于证据的精简,比盲目相信'万能指标'更稳健。
策略块测试指标组
EA允许将筛选出的组写入'处理策略块'做历史回测。如下例:当指标8与21同发买信号,主标记flag=1触发买;同发卖则flag=-1。未满足时flag=0不开仓。
if(f8==1&&f21==1) //Set of conditions, providing which Buy is executed flag=1; if(f8==-1&&f21==-1) //Set of conditions, providing which Sell is executed flag=-1;
此块可扩展为多指标'与'逻辑,验证组的共振质量。注意EA含平仓注释块,但默认不自动交易,仅示警。
与其他方案的对比
传统多指标同图:视觉乱、难量化。独立子窗口指标:仍占空间且不同步。商业信号面板:贵且黑盒。本EA开源(mq4)、轻量、可优化,且以统一矩阵语言打通指标鸿沟。缺点是非实时交易,需交易者二次决策。
总结与灵活扩展
该EA是分析脚手架而非赚钱机器。它令电脑不过载地展示信号,方便形成指标组。用户可加新指标至矩阵,或用既有组测历史。原文地址:https://www.mql5.com/zh/articles/1518,附Matrix.mq4下载。谨记MetaQuotes保留权利,勿整体转载。