下载MetaTrader 5
要添加评论,请登录注册
您有博客吗?把链接放在MQL5.community 并获利
wangguangli
126
wangguangli 2009.04.14 05:20 

近来有一些网友总是问一些问题,所他们自己的做的EA,或者铃声提示,在到达条件的时候,总是频繁的开仓或者频繁的报警,这样给他们带来很多的不便。事实上,这样的问题是很好解决的,你只要再加一个变量来限制一下就解决了!举例如下:写一个报警的条件吧

如果价格向上达到指定价位,则报警
如果“MACD上穿,则报警
如果均线金叉,则报警

如果我们这样写


if( High[1]<1.0000 && High[0]>=1.0000 && mark!=1)
{
Alert(symbol(),"价格向上触及1.0000");
mark=1;
}
if( Low[1]>1.0000 && Low[0]<=1.0000 && mark!=2)
{
Alert(symbol(),"价格向下触及1.0000");

}

在达到if后面的条件后,肯定的连续的要报警,因为后面一段时间都会连续符合条件。这样,就不会达到做程序的目的,如果是下单不限制的情况下,那就会更加危险。那么我们怎么避免呢?那我还是把上面的程序修改成下面的代码一下就解决问题了:

int mark=0;
if( High[1]<1.0000 && High[0]>=1.0000 && mark!=1)
{
Alert(symbol(),"价格向上触及1.0000");
mark=1;
}
if( Low[1]>1.0000 && Low[0]<=1.0000 && mark!=2)
{
Alert(symbol(),"价格向下触及1.0000");
mark=2;
}
那为什么会是这样呢?这是因为

mark=0,说明从未报过警,上、下穿都能报警;
mark=1,说明已经上穿报过警了,不能再上穿报警了,但仍可下穿报警;
mark=2,说明已经下穿报过警了,不能再下穿报警了,但仍可上穿报警。

当然这个看起来很简单的程序,里面却蕴涵丰富的理论知识,同样,如果是一个EA狂开定单的情况下,是不是也可以用相同的方法来解决呢?当然解决的方式也不是一种哦。由于篇幅有限,我也不能在这里一一列举其他容易出现的问题了。如果你有什么不懂的问题,或者有什么不明白的地方,请QQ:450459237。

/
要添加评论,请登录注册