错误、漏洞、问题 - 页 811 1...804805806807808809810811812813814815816817818...3184 新评论 Alexey Da 2012.08.16 14:08 #8101 abeiks: 下午好。 我正在尝试使用MQL5。我拆解了exp_tema.mq5 并修改了代码。现在我应该打印每根蜡烛的MA日志(最后20根)。但我不明白为什么日志中缺少一些条目。我注意到, 如果日志中缺少ma[3],就没有ma[13]。为什么会发生这种情况?那里的错误在哪里呢? 在这里,它是。if(CopyBuffer(Handle[Number],0,0,20,ma)<0) 显然缺少一张支票。BarsCalculated>= 20CopyBuffer==20 附加的文件: exp_tema.mq5 27 kb Fia 2012.08.16 14:12 #8102 sergeev:不需要视频。在代码中做一个详细的Print,这样我们就可以在日志中看到中间变量等于什么了。#property copyright "Copyright 2011, "#property link "http://www.mql5.com"#property version "1.00"//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+ int OnInit() {//--- double Vhod=0; Print("Начало_Vhod="+DoubleToString(Vhod,2)); Vhod=linfunc(15); Print("Конец_Vhod="+DoubleToString(Vhod,2));//--- return(0); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+ void OnDeinit(const int reason) {//--- }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+ void OnTick() {//--- }//+------------------------------------------------------------------+ double linfunc(double b) // имя функции и список параметров { double a=1; while((a/b)<1 && !IsStopped())//------------------- { Print("а="+DoubleToString(a,2)+", b="+DoubleToString(b,2)+", a/b="+DoubleToString(a/b,2)); a=a+1; } Print("а="+DoubleToString(a,2)+", b="+DoubleToString(b,2)+", a/b="+DoubleToString(a/b,2)); Print("a+b="+DoubleToString(a+b,2)); double f=a+b; // составной оператор return(f); // возвращаемое значение }//+------------------------------------------------------------------+以下是代码。以下是其印刷品GM 0 1 (EURUSD,M1) 18:11:11 Start_Vhod=0.00 FO 0 1 (EURUSD,M1) 18:11:13 a=1.00, b=15.00, a/b=0.07 JF 0 1 (EURUSD,M1) 18:11:13 a=2.00, b=15.00, a/b=0.13 CQ 0 1 (EURUSD,M1) 18:11:13 a=3.00, b=15.00, a/b=0.20 EH 0 1 (EURUSD,M1) 18:11:13 a=4.00, b=15.00, a/b=0.27 KS 0 1 (EURUSD,M1) 18:11:13 a=5.00, b=15.00, a/b=0.33 PJ 0 1 (EURUSD,M1) 18:11:13 a=6.00, b=15.00, a/b=0.40 PE 0 1 (EURUSD,M1) 18:11:13 a=7.00, b=15.00, a/b=0.47 HL 0 1 (EURUSD,M1) 18:11:13 a=8.00, b=15.00, a/b=0.53 MF 0 1 (EURUSD,M1) 18:11:13 a=9.00, b=15.00, a/b=0.60 JR 0 1 (EURUSD,M1) 18:11:13 a=10.00, b=15.00, a/b=0.67 FK 0 1 (EURUSD,M1) 18:11:13 a=11.00, b=15.00, a/b=0.73 OP 0 1 (EURUSD,M1) 18:11:13 a=12.00, b=15.00, a/b=0.80 MI 0 1 (EURUSD,M1) 18:11:13 a=13.00, b=15.00, a/b=0.87 KF 0 1 (EURUSD,M1) 18:11:13 a=14.00, b=15.00, a/b=0.93 EO 0 1 (EURUSD,M1) 18:11:13 a=15.00, b=15.00, a/b=1.00 DJ 0 1 (EURUSD,M1) 18:11:14 a+b=30.00 RL 0 1 1 (EURUSD,M1) 18:11:17 End_Vhod=0.00 NH 2 1 (EURUSD,M1) 18:11:24 调试结束 Errors, bugs, questions trade.PositionClose() is not working Bar Alexey Da 2012.08.16 14:39 #8103 Fia:如果你不从编辑器中运行调试EX5,而是直接在终端中运行--结果一样吗?你能附上调试后的EX5吗? Vladimir Gomonov 2012.08.16 14:43 #8104 Fia:这是他的印刷品GM 0 1 (EURUSD,M1) 18:11:11 Start_Vhod=0.00 FO 0 1 (EURUSD,M1) 18:11:13 a=1.00, b=15.00, a/b=0.07 JF 0 1 (EURUSD,M1) 18:11:13 a=2.00, b=15.00, a/b=0.13 CQ 0 1 (EURUSD,M1) 18:11:13 a=3.00, b=15.00, a/b=0.20 EH 0 1 (EURUSD,M1) 18:11:13 a=4.00, b=15.00, a/b=0.27 KS 0 1 (EURUSD,M1) 18:11:13 a=5.00, b=15.00, a/b=0.33 PJ 0 1 (EURUSD,M1) 18:11:13 a=6.00, b=15.00, a/b=0.40 PE 0 1 (EURUSD,M1) 18:11:13 a=7.00, b=15.00, a/b=0.47 HL 0 1 (EURUSD,M1) 18:11:13 a=8.00, b=15.00, a/b=0.53 MF 0 1 (EURUSD,M1) 18:11:13 a=9.00, b=15.00, a/b=0.60 JR 0 1 (EURUSD,M1) 18:11:13 a=10.00, b=15.00, a/b=0.67 FK 0 1 (EURUSD,M1) 18:11:13 a=11.00, b=15.00, a/b=0.73 OP 0 1 (EURUSD,M1) 18:11:13 a=12.00, b=15.00, a/b=0.80 MI 0 1 (EURUSD,M1) 18:11:13 a=13.00, b=15.00, a/b=0.87 KF 0 1 (EURUSD,M1) 18:11:13 a=14.00, b=15.00, a/b=0.93 EO 0 1 (EURUSD,M1) 18:11:13 a=15.00, b=15.00, a/b=1.00 DJ 0 1 (EURUSD,M1) 18:11:14 a+b=30.00 RL 0 1 1 (EURUSD,M1) 18:11:17 End_Vhod=0.00 NH 2 1 (EURUSD,M1) 18:11:24 调试结束它不玩了。2012.08.16 18:42:34 Test_001 (GBPUSD,M15) Конец_Vhod=30.00 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) a+b=30.00 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=15.00, b=15.00, a/b=1.00 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=14.00, b=15.00, a/b=0.93 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=13.00, b=15.00, a/b=0.87 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=12.00, b=15.00, a/b=0.80 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=11.00, b=15.00, a/b=0.73 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=10.00, b=15.00, a/b=0.67 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=9.00, b=15.00, a/b=0.60 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=8.00, b=15.00, a/b=0.53 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=7.00, b=15.00, a/b=0.47 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=6.00, b=15.00, a/b=0.40 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=5.00, b=15.00, a/b=0.33 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=4.00, b=15.00, a/b=0.27 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=3.00, b=15.00, a/b=0.20 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=2.00, b=15.00, a/b=0.13 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) а=1.00, b=15.00, a/b=0.07 2012.08.16 18:42:34 Test_001 (GBPUSD,M15) Начало_Vhod=0.00 Win7 x64MT5 x64 build 687 Fia 2012.08.16 14:50 #8105 alexvd:如果你不从编辑器中运行调试EX5,而是直接在终端中运行--结果一样吗?你能附上调试的EX5吗?有趣的是,如果我从测试器上运行,它给出了30,如果我作为EA运行,它在打印上也给出了30。如果我回到调试状态,它返回0。元驱动 在什么情况下,在什么样的情况下(请原谅我的表达),它是有效的。我必须仍旧将视频铺开,如果没有人不能重现这个奇迹。 附加的文件: 1.ex5 5 kb Nauris Zukas 2012.08.16 15:39 #8106 alexvd:就在那里 显然缺少一些检查。BarsCalculated >= 20CopyBuffer==20谢谢你,我将尝试添加它。 Fia 2012.08.16 16:36 #8107 这里有一段视频(但要选择高于720的分辨率,否则一切都会变成肥皂色)。https://www.youtube.com/watch?v=Prpw6DUYvjY&feature=youtu.beWin7 64bit MT5 687 build我发现当返回值为0时的效果似乎只发生在调试器中。同时,如果我只使用 "边走边看 "的按钮,似乎也能工作。如果我进入while循环,用 "step in "按钮退出,它不起作用,输出稳定在0。在一般情况下,视频显示了一切,但如何成为和做什么,直到我不明白(为什么它是如此只有我?) Vladimir Gomonov 2012.08.16 16:50 #8108 Fia: Win7 64bit MT5 687 build 终端的比特率是多少? Konstantin Chernov 2012.08.16 17:12 #8109 在优化过程中出现了难以理解的符号在垂直优化图标签中,所有数值都是-1 Nauris Zukas 2012.08.17 09:50 #8110 alexvd:就在那里 显然缺少一些检查。BarsCalculated >= 20CopyBuffer==20然而,我对缓冲区仍有疑问,当我阅读它们时一切都很清楚,但我不明白它们在代码中应如何实现。如果不是太麻烦,你能把它插入代码中吗? 1...804805806807808809810811812813814815816817818...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
下午好。
我正在尝试使用MQL5。我拆解了exp_tema.mq5 并修改了代码。现在我应该打印每根蜡烛的MA日志(最后20根)。但我不明白为什么日志中缺少一些条目。我注意到, 如果日志中缺少ma[3],就没有ma[13]。为什么会发生这种情况?那里的错误在哪里呢?
在这里,它是。
显然缺少一张支票。
不需要视频。
在代码中做一个详细的Print,这样我们就可以在日志中看到中间变量等于什么了。
#property copyright "Copyright 2011, "
#property link "http://www.mql5.com"#property version "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
double Vhod=0;
Print("Начало_Vhod="+DoubleToString(Vhod,2));
Vhod=linfunc(15);
Print("Конец_Vhod="+DoubleToString(Vhod,2));
//---
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
double linfunc(double b) // имя функции и список параметров
{
double a=1;
while((a/b)<1 && !IsStopped())//-------------------
{
Print("а="+DoubleToString(a,2)+", b="+DoubleToString(b,2)+", a/b="+DoubleToString(a/b,2));
a=a+1;
}
Print("а="+DoubleToString(a,2)+", b="+DoubleToString(b,2)+", a/b="+DoubleToString(a/b,2));
Print("a+b="+DoubleToString(a+b,2));
double f=a+b;
// составной оператор
return(f); // возвращаемое значение
}
//+------------------------------------------------------------------+
以下是代码。
以下是其印刷品
GM 0 1 (EURUSD,M1) 18:11:11 Start_Vhod=0.00
FO 0 1 (EURUSD,M1) 18:11:13 a=1.00, b=15.00, a/b=0.07
JF 0 1 (EURUSD,M1) 18:11:13 a=2.00, b=15.00, a/b=0.13
CQ 0 1 (EURUSD,M1) 18:11:13 a=3.00, b=15.00, a/b=0.20
EH 0 1 (EURUSD,M1) 18:11:13 a=4.00, b=15.00, a/b=0.27
KS 0 1 (EURUSD,M1) 18:11:13 a=5.00, b=15.00, a/b=0.33
PJ 0 1 (EURUSD,M1) 18:11:13 a=6.00, b=15.00, a/b=0.40
PE 0 1 (EURUSD,M1) 18:11:13 a=7.00, b=15.00, a/b=0.47
HL 0 1 (EURUSD,M1) 18:11:13 a=8.00, b=15.00, a/b=0.53
MF 0 1 (EURUSD,M1) 18:11:13 a=9.00, b=15.00, a/b=0.60
JR 0 1 (EURUSD,M1) 18:11:13 a=10.00, b=15.00, a/b=0.67
FK 0 1 (EURUSD,M1) 18:11:13 a=11.00, b=15.00, a/b=0.73
OP 0 1 (EURUSD,M1) 18:11:13 a=12.00, b=15.00, a/b=0.80
MI 0 1 (EURUSD,M1) 18:11:13 a=13.00, b=15.00, a/b=0.87
KF 0 1 (EURUSD,M1) 18:11:13 a=14.00, b=15.00, a/b=0.93
EO 0 1 (EURUSD,M1) 18:11:13 a=15.00, b=15.00, a/b=1.00
DJ 0 1 (EURUSD,M1) 18:11:14 a+b=30.00
RL 0 1 1 (EURUSD,M1) 18:11:17 End_Vhod=0.00
NH 2 1 (EURUSD,M1) 18:11:24 调试结束
如果你不从编辑器中运行调试EX5,而是直接在终端中运行--结果一样吗?
你能附上调试后的EX5吗?
这是他的印刷品
GM 0 1 (EURUSD,M1) 18:11:11 Start_Vhod=0.00
FO 0 1 (EURUSD,M1) 18:11:13 a=1.00, b=15.00, a/b=0.07
JF 0 1 (EURUSD,M1) 18:11:13 a=2.00, b=15.00, a/b=0.13
CQ 0 1 (EURUSD,M1) 18:11:13 a=3.00, b=15.00, a/b=0.20
EH 0 1 (EURUSD,M1) 18:11:13 a=4.00, b=15.00, a/b=0.27
KS 0 1 (EURUSD,M1) 18:11:13 a=5.00, b=15.00, a/b=0.33
PJ 0 1 (EURUSD,M1) 18:11:13 a=6.00, b=15.00, a/b=0.40
PE 0 1 (EURUSD,M1) 18:11:13 a=7.00, b=15.00, a/b=0.47
HL 0 1 (EURUSD,M1) 18:11:13 a=8.00, b=15.00, a/b=0.53
MF 0 1 (EURUSD,M1) 18:11:13 a=9.00, b=15.00, a/b=0.60
JR 0 1 (EURUSD,M1) 18:11:13 a=10.00, b=15.00, a/b=0.67
FK 0 1 (EURUSD,M1) 18:11:13 a=11.00, b=15.00, a/b=0.73
OP 0 1 (EURUSD,M1) 18:11:13 a=12.00, b=15.00, a/b=0.80
MI 0 1 (EURUSD,M1) 18:11:13 a=13.00, b=15.00, a/b=0.87
KF 0 1 (EURUSD,M1) 18:11:13 a=14.00, b=15.00, a/b=0.93
EO 0 1 (EURUSD,M1) 18:11:13 a=15.00, b=15.00, a/b=1.00
DJ 0 1 (EURUSD,M1) 18:11:14 a+b=30.00
RL 0 1 1 (EURUSD,M1) 18:11:17 End_Vhod=0.00
NH 2 1 (EURUSD,M1) 18:11:24 调试结束
它不玩了。
Win7 x64
MT5 x64 build 687
如果你不从编辑器中运行调试EX5,而是直接在终端中运行--结果一样吗?
你能附上调试的EX5吗?
有趣的是,如果我从测试器上运行,它给出了30,如果我作为EA运行,它在打印上也给出了30。
如果我回到调试状态,它返回0。
元驱动
在什么情况下,在什么样的情况下(请原谅我的表达),它是有效的。
我必须仍旧将视频铺开,如果没有人不能重现这个奇迹。
就在那里
显然缺少一些检查。
谢谢你,我将尝试添加它。
这里有一段视频(但要选择高于720的分辨率,否则一切都会变成肥皂色)。
https://www.youtube.com/watch?v=Prpw6DUYvjY&feature=youtu.be
Win7 64bit MT5 687 build
我发现当返回值为0时的效果似乎只发生在调试器中。
同时,如果我只使用 "边走边看 "的按钮,似乎也能工作。
如果我进入while循环,用 "step in "按钮退出,它不起作用,输出稳定在0。
在一般情况下,视频显示了一切,但如何成为和做什么,直到我不明白(为什么它是如此只有我?)
Win7 64bit MT5 687 build
在优化过程中出现了难以理解的符号
在垂直优化图标签中,所有数值都是-1
就在那里
显然缺少一些检查。
然而,我对缓冲区仍有疑问,当我阅读它们时一切都很清楚,但我不明白它们在代码中应如何实现。如果不是太麻烦,你能把它插入代码中吗?