更新版本。
以下是详细说明。
我一直相信移动平均交叉指标,作为一名程序员,我总是在寻找最简单的解决方案。我曾看到一句话:“没有魔法设置适用于交叉移动平均。”这个指标每当时间框架或符号变化,甚至每个新蜡烛时,都会尝试很多设置。它通过“平淡的交易”过去 100 根蜡烛来工作,并选择成功率最高的设置。它仅仅测量短期和长期信号之间的距离,就好像任何人都在没有止损的情况下进行交易。它还考虑了点差的影响。
下方窗口显示短期和长期移动平均之间的距离,正值表示适合做多,负值则适合做空,单位为点(pips)。利用“盈利振荡器”,您可以在短/长交易之间的最大差异之前结束交易,从而实现盈利。
上方的提示显示:“今天的盈利来自 MA 5/19,共计 60 点。”该指标或用户选择了 5 作为快速 MA 和 19 作为慢速 MA。接下来的文本框显示了昨天的结果,以及“做多”或“做空”的信号。交易者可以在图表上放置两个移动平均线,并将其设置为给定值。
我正在搜索更多不同的 MA 推荐文献。
参数设置
- PeriodShort=6;
快速 MA 的周期。如果优化为真,则忽略此项。 - PeriodLong=40;
慢速 MA 的周期。如果优化为真,则忽略此项。 - Method=0;
iMA 的计算方法。 - Optimize=true;
指标会自动选择快速和慢速 MA 的值。 - DrawTringles=true;
在图表中绘制三角形。 - MinShortMA=2;
MaxShortMA=20;
MaxLongMA=100;
优化的最小和最大值,快速 MA 的值将在 2 到 20 之间,慢速 MA 的值将在 7 到 100 之间尝试。 - StepLongMA=5;
StepShortMA=5;
为了加快搜索速度,每隔 3 个值尝试一次。 - CountOptimize=200;
分析过去 200 根蜡烛。分析的蜡烛越多,速度越慢,较大的数字可能会导致较差的结果。 - OptimizeOnNewCandle=false;
在每个新蜡烛上开始优化。注意:优化可能需要一些时间并减慢您的终端。 - Alarm=true;
如果出现新信号,则发出警报。
接下来,我想基于此创建一个专家顾问,然而我仍在思考如何检测不应在交叉 MA 下交易的横盘趋势。到目前为止,我的 EA 基于优化的交叉 MA 有时能获得丰厚的收益,但第二天又会亏损。
更新版本
新特性:
- 该指标现在在图表中绘制移动平均线,“盈利振荡器”则在另一个指标 (MAProfit2) 中,二者通过全局变量相互通信。
- 支持 MA 通道(请参阅 www.vnchanger.org 的电子书),慢速移动平均线被分为两条线,分别代表低值和高值,这应该可以避免在横盘市场中的损失。
- 不再测试所有组合,而是可以测试文献中找到的某些 MA 范围。为此,请将 OptimizeAll 设置为 false,将 OptimizeSystems 设置为 true。
您可以添加或修改系统表。确保以 0,0,0,0,0,0 结束。
extern bool OptimizeAll=false;
extern bool OptimizeSystems=true;
int Systems[] = {PRICE_MEDIAN,MODE_SMA,50, PRICE_MEDIAN,MODE_SMA,200,
PRICE_MEDIAN,MODE_SMA,50,
PRICE_MEDIAN,MODE_SMA,100, // 死亡交叉
PRICE_MEDIAN,MODE_SMA,10, PRICE_MEDIAN,MODE_SMA,40,
PRICE_MEDIAN,MODE_SMA,13, PRICE_MEDIAN,MODE_SMA,26,
PRICE_MEDIAN,MODE_SMA,5, PRICE_MEDIAN,MODE_SMA,10,
PRICE_CLOSE, MODE_EMA,5, PRICE_OPEN, MODE_EMA,6,
PRICE_MEDIAN,MODE_SMA,3, PRICE_MEDIAN,MODE_SMA,8,
0,0,0,0,0,0};
- 新的警报可以以语音形式发出,为了支持这一点,您需要从 https://www.mql5.com/en/code/8621 下载 gspeak。
如果您不想使用语音,则需要修改代码。删除从 #import "speak.dll" 到 #import 的行,并取消注释 gSpeak 函数。感谢作者提供这个出色的 DLL。
void gRate(int rate);
void gVolume(int rate);
void gPitch(int rate);
void gSpeak(string text);
#import
// 如果您没有(或不想要)speak.dll,请取消注释此行
/*
void gSpeak(string x)
{
}
*/
如果您不删除语音,在盈利后,您可能会开始喜欢“山姆叔叔”的声音。
- 在首次启动或参数更改时,它会记住第一次交易的蜡烛,这应该避免用不同的蜡烛重绘旧交易。
- 三角形现在有三种颜色:绿色表示做多,红色表示做空,紫色表示亏损(无论是做多还是做空)。颜色可以在源代码中修改:
int ColorShortTrade = Red;
int ColorBadTrade = Violet;
- MA 优化的步骤已设置为 5。
- 该指标的内部名称已更改为 SMA(智能助手……它显示您应如何进行后续交易)。

MA 优化器