编码帮助 - 页 554

 

Mntiwana,在Bar to Use上,如果你输入0,它将在仍然打开的条上获取信号(对EA来说是危险的,IMHO),如果大于0,EA将从关闭的条上获取信号,回到打开的条上,所以如果你的BarToUse=2,那么你的EA将检查 两个条上。

 

hi mladen....please help me....ı was posted but ı guess you can't see...ok...ı have a got indicator ...ı need histo version.thank you very much.

附加的文件:
trend.ex4  9 kb
trend.mq4  2 kb
 
aress:
hi mladen....please help me....ı was posted but ı guess you can't see...ok...ı have a got indicator...ı need histo version.thank you very much

aress

你有该指标的原始(未反编译的)源代码吗?如果有,请贴出原始的mq4文件,以便可以进行工作。

_________________

PS:你也可以看看这个https://www.mql5.com/en/forum/174961/page4,就我看来,就是这个了。

 

大家好。

请看一下我的代码。

这个指标用icustom函数调用 另一个指标。

我遇到的问题是,有时,即使信号的条件没有得到满足。

这个指标仍然产生错误的声音警报,这些错误的警报不显示箭头。

我不知道问题出在哪里。我试过(以我有限的知识),但没有成功。

如何确保停止虚假警报?我如何确保只有在有箭头的情况下才有声音提示?

请帮助我。

谢谢。

int start()

{

int counted_bars=IndicatorCounted()。

//----

如果(counted_bars>0) counted_bars--。

int limit=Bars-counted_bars;

int j;

for(int i=limit; i>=0; i--)

{

arr_up = EMPTY_VALUE; arr_dn = EMPTY_VALUE;

j=i。

double var1 = 0;

double var2 = 0;

for (j = i; j <= i + 9; j++) var2 += MathAbs(High[j] - Low[j]);

var1 = var2 / 10.0;

double sellprevious = iCustom(NULL,0, "MA-Repaint", FastEMA,SlowEMA,SlowEMA,signal,price,0,i);

double buyprevious = iCustom(NULL,0, "MA-Repaint", FastEMA,SlowEMA,SlowEMA,signal,price,1,i);

静态数据时间LastAlert。

datetime curbar = Time[0];

如果(buyprevious !=EMPTY_VALUE )

{

arr_up=iLow(Symbol(),0,i) - (var1/2);

DrawLine("EntryLine11",iHigh(Symbol(),0,i+1), EntryLineColor)。

if ( LastAlert != curbar && !upalert){

Alert (Symbol()," ",Period(), "BUY")。

upalert=true。

downalert=false。

LastAlert =curbar;

}

}

else if(sellprevious !=EMPTY_VALUE )

{

arr_dn=iHigh(Symbol(),0,i) + (var1/2);

DrawLine("EntryLine11",iLow(Symbol(),0,i+1), EntryLineColor)。

if ( LastAlert != curbar && !downalert){

Alert (Symbol()," ",Period(), "SELL")。

downalert=true。

upalert=false。

LastAlert = curbar;

}

}

}

 
luffy:
HI guys,

请看一下我的代码。

这个指标用icustom函数调用另一个指标。

我遇到的问题是,有时,即使信号的条件没有得到满足。

这个指标仍然产生错误的声音警报,这些错误的警报不显示箭头。

我不知道问题出在哪里。我试过(以我有限的知识),但没有成功。

如何确保停止虚假警报?我如何确保只有在有箭头的情况下才有声音提示?

请帮助我。

谢谢。

int start()

{

int counted_bars=IndicatorCounted()。

//----

如果(counted_bars>0) counted_bars--。

int limit=Bars-counted_bars;

int j;

for(int i=limit; i>=0; i--)

{

arr_up = EMPTY_VALUE; arr_dn = EMPTY_VALUE;

j=i。

double var1 = 0;

double var2 = 0;

for (j = i; j <= i + 9; j++) var2 += MathAbs(High[j] - Low[j]);

var1 = var2 / 10.0;

double sellprevious = iCustom(NULL,0, "MA-Repaint", FastEMA,SlowEMA,SlowEMA,signal,price,0,i);

double buyprevious = iCustom(NULL,0, "MA-Repaint", FastEMA,SlowEMA,SlowEMA,signal,price,1,i);

静态数据时间LastAlert。

datetime curbar = Time[0];

如果(buyprevious !=EMPTY_VALUE )

{

arr_up=iLow(Symbol(),0,i) - (var1/2);

DrawLine("EntryLine11",iHigh(Symbol(),0,i+1), EntryLineColor)。

if ( LastAlert != curbar && !upalert){

Alert (Symbol()," ",Period(), "BUY")。

upalert=true。

downalert=false。

LastAlert =curbar;

}

}

else if(sellprevious !=EMPTY_VALUE )

{

arr_dn=iHigh(Symbol(),0,i) + (var1/2);

DrawLine("EntryLine11",iLow(Symbol(),0,i+1), EntryLineColor)。

if ( LastAlert != curbar && !downalert){

Alert (Symbol()," ",Period(), "SELL")。

downalert=true。

upalert=false。

LastAlert = curbar;

}

}

}

luffy

你能不能把调用的指标 也贴出来,这样就可以测试了?

 
mrtools:
Mntiwana, 在Bar to Use上,如果你把零填上,它将在仍然开放的Bar上获取信号(对EA来说很危险,IMHO),如果大于零,EA将从开放的Bar上获取封闭的Bar上的信号,所以如果你的BarToUse=2,那么你的EA将检查2个Bar。

亲爱的MLADEN和MRTOOLS。

感谢你们的帮助,很抱歉占用了你们很多时间,问了这么多 ..............so 在这个EA的情况下,什么是最好的和合适的,哪个Bar应该被添加.....,我想当慢速MA线完全越过快速MA线(无论哪种方式).........,交易应该被执行,我们可以这样编码,越过后,多少个Bar后交易可能被执行,例如在第一个Bar越过后,在第二个或第三个Bar越过后? 为了更好地解释这个问题,附上图片,谢谢

问候

附加的文件:
7.png  35 kb
8.png  38 kb
 

这里是指标。

谢谢。

附加的文件:
 
mrtools:
Mntiwana,在Bar to Use上,如果你把零放进去,它将在仍然打开的条上获取信号(对EA来说很危险,IMHO),如果大于零,EA将从关闭的条上获取信号,回到打开的条上,所以如果你的BarToUse=2,那么你的EA将检查2个条上。

亲爱的MRTOOLS。

你的意思是.... bar to use = 2 ...... 2 bar after crossing...not 2 N bars , 当你写Bars BACK时,我混淆了,我的错....,请纠正我。谢谢。

问候

 
mntiwana:
亲爱的MRTOOLS。

你的意思是 .... bar to use = 2 ...... 2 bar after crossing...not 2 N bars , when you write Bars BACK, I confused,my fault....please correct me. Thanks.

问候

mntiwana

不,但是当使用的条数==2时,那么将检查 从当前条数开始的2个条数的交叉 - 它不会检查当前条数的交叉。因此,如果有2个条形的延迟

 
mladen:
mntiwana 不,但是当使用的条数==2时,那么将检查从当前条数开始的两个条数的交叉点--它将不检查当前条数的交叉。因此,如果有2条延迟

亲爱的MLADEN,

谢谢老板,那么在这种情况下,代码可能是这样的吗?

问候

===================================================================

原始的 "简单MA交叉EA "代码

//

#define _doNothing 0

#define _doBuy 1

#define _doSell 2

int start()

{

int doWhat = _doNothing;

double diffc = iMA(NULL,0,Ma1Period,0,Ma1Method,Ma1Price,BarToUse) -iMA(NULL,0,Ma2Period,0,Ma2Method,Ma2Price,BarToUse) 。

double diffp = iMA(NULL,0,Ma1Period,0,Ma1Method,Ma1Price,BarToUse+1)-iMA(NULL,0,Ma2Period,0,Ma2Method,Ma2Price,BarToUse+1) 。

如果((diffc*diffp)<0)

如果(diffc>0)

doWhat = _doBuy;

否则 doWhat = _doSell;

如果(doWhat==_doNothing)返回(0)。

//

================================================

这样改一下

#define _doNothing 0

#define _doBuy 1

#define _doSell 2

int start()

{

int doWhat = _doNothing;

double diffc = iCustom(NULL,0, "Hullparabolic 2.1",PERIOD_CURRENT,Ma1Period,Ma1Price,2,0 ,0,BarToUse)

-iCustom(NULL,0, "Hull parabolic 2.1",PERIOD_CURRENT,Ma2Period,Ma2Price,2,0 ,0,BarToUse)。

double diffp = iCustom(NULL,0, "Hull parabolic 2.1",PERIOD_CURRENT,Ma1Period,Ma1Price,2,0 ,0,BarToUse==2)

-iCustom(NULL,0, "Hull parabolic 2.1",PERIOD_CURRENT,Ma2Period,Ma2Price,2,0 ,0,BarToUse==2) 。

如果 ((diffc*diffp)<0)

如果(diffc>0)

doWhat = _doBuy;

否则 doWhat = _doSell;

如果(doWhat==_doNothing)返回(0)。

//

=====================================

附加的文件:
9.png  108 kb