编码帮助 - 页 554 1...547548549550551552553554555556557558559560561...786 新评论 William Snyder 2015.10.13 21:06 #5531 Mntiwana,在Bar to Use上,如果你输入0,它将在仍然打开的条上获取信号(对EA来说是危险的,IMHO),如果大于0,EA将从关闭的条上获取信号,回到打开的条上,所以如果你的BarToUse=2,那么你的EA将检查 两个条上。 aras2580 2015.10.14 07:23 #5532 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 Mladen Rakic 2015.10.14 07:49 #5533 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,就我看来,就是这个了。 [删除] 2015.10.14 12:13 #5534 大家好。 请看一下我的代码。 这个指标用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; } } } Coding help mt4 rsi 超买超卖提醒不了 多时间框架指标 Mladen Rakic 2015.10.14 12:40 #5535 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 你能不能把调用的指标 也贴出来,这样就可以测试了? mntiwana 2015.10.14 13:59 #5536 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 [删除] 2015.10.14 13:59 #5537 这里是指标。 谢谢。 附加的文件: ma-repaint.ex4 11 kb test_alert.mq4 5 kb mntiwana 2015.10.14 14:10 #5538 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时,我混淆了,我的错....,请纠正我。谢谢。 问候 Mladen Rakic 2015.10.14 14:53 #5539 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个条形的延迟 mntiwana 2015.10.14 15:52 #5540 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 Coding help 回溯测试/优化 Backtesting/Optimization 1...547548549550551552553554555556557558559560561...786 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
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.
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;
}
}
}
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
你能不能把调用的指标 也贴出来,这样就可以测试了?
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越过后? 为了更好地解释这个问题,附上图片,谢谢
问候
这里是指标。
谢谢。![](https://c.mql5.com/forextsd/smiles/smile.png)
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时,我混淆了,我的错....,请纠正我。谢谢。
问候
亲爱的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个条形的延迟
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)。
//
=====================================