新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 660 1...653654655656657658659660661662663664665666667...1953 新评论 Algotrader18 2018.10.12 19:52 #6591 Igor Makanu:这个代码是有效的,通过类比来做。做了最小的改动--删除了OrderMagicNumber()分析,增加了三个日志。 不幸的是,其结果是一样的--见Pr。- 在第一张截图中,它开始(我不知道为什么不从0开始),而在第二张截图中,它从124到99开始。 int NumberOfOrders(){ int i,res=0,k=OrdersTotal(); string sy=Symbol(); for(i=0;i<k; i++){ log("k = " + k +"; " ); log("i = " + i +"; " ); if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){ if((OrderSymbol()==sy)) res++; //if(( OrderMagicNumber()==magic_)&& (OrderSymbol()==sy)) res++; log("res = " + res +"; " ); }} return(res);} 附加的文件: test_1.png 6 kb test_2.png 6 kb Algotrader18 2018.10.12 20:08 #6592 Alexey Viktorov: 这段代码的编译真的没有错误吗?我不相信... 你为什么要怀疑呢?在任何情况下,MQL4都不会产生任何错误。 Igor Makanu 2018.10.12 20:46 #6593 Algotrader18:(不清楚为什么不从0开始),而在第二个地方,它从124到99。因为终端 "吃 "了Print()的一部分,在MQL中输出的优先级最低,在Print() 之前添加Slepp(123),就不会有跳过。 虽然根据日志,你只是在打印循环计数器 Algotrader18 2018.10.12 22:27 #6594 Igor Makanu:因为终端 "吃 "了Print()的部分,在MQL的输出中具有最低的优先级,在Print()之前添加Slepp(123),就不会有跳过。虽然根据日志,你只是在打印循环计数器 这非常有趣--你能不能说得更具体一点?这个 "吃 "的过程是如何进行的? 你的回答给我的印象是我 "吃了"--它只是没有把它放进日志,因为有更重要的事情,但我真正的任务是浏览所有订单并删除某些订单,我注意到EA跳过了一些订单(这不是以最低优先级输出信息)。我简化了任务以了解原因,结果,我们在日志中只有输出,但我仍然看到省略的订单,即专家顾问在几个订单上跳跃。 最低订单优先级很好地解释了不是从0开始的输出,但它如何解释不一致的输出,例如,从124跳到99。 如果我们所说的 "吃 "是指其他东西,我想了解是什么? 附加的文件: test_2.png 6 kb Roman Sharanov 2018.10.13 00:15 #6595 neverness:这真是太棒了! 罗曼! 例如,我是一个拥有20年经验的成功交易员。 我不明白你为什么需要"你所输入的货币对的收盘价与它们 的移动平均数 之间的差额"。 此外,你知道如何建立这些差异的移动平均线吗?- 太棒了! 你能简单地画出报价的移动平均线吗?- 也没有? 那么问题出在哪里?收盘平均数的差异不等于收盘平均数的差异,唉,啊。 Alexey Viktorov 2018.10.13 05:57 #6596 Algotrader18: 有什么疑虑?总之,在MQL4中没有错误。1.学习如何插入代码。 Algotrader18。我做了最小的改动--删除了OrderMagicNumber()分析,增加了三个日志。 不幸的是,其结果是一样的--见上文。- 在第一张截图中,开头(我不知道为什么不从0开始),而在第二张截图中--从124开始到99的地方。 int NumberOfOrders() { int i,res=0,k=OrdersTotal(); string sy=Symbol(); for(i=0; i<k; i++) { log("k = " + k +"; "); log("i = " + i +"; "); if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if((OrderSymbol()==sy)) res++; //if((OrderMagicNumber()==magic_) && (OrderSymbol()==sy)) res++; log("res = " + res +"; "); } } return(res); } 2.log是对数吗? 注意事项 你可以使用 log()而不是MathLog()。 MathLog - Математические функции - Справочник MQL4 docs.mql4.com MathLog - Математические функции - Справочник MQL4 Alexey Viktorov 2018.10.13 06:06 #6597 Roman Sharanov:我还发现一个严重的缺点,对CopyClose()的调用 太多 你能告诉我如何在一个循环中复制货币对数组的报价吗? 这似乎是一个双数组,但MQL不支持它,像%。 你说的 "双数组 "是什么意思? Roman Sharanov 2018.10.13 07:08 #6598 Alexey Viktorov:你说的'双数组'是什么意思?嗯,二维的。 Alexey Viktorov 2018.10.13 08:05 #6599 Roman Sharanov:好吧,二维的。哪里写着CopyClose 将数据复制到二维数组?为什么一开始就提到二维阵列? Roman Sharanov 2018.10.13 08:31 #6600 Alexey Viktorov:哪里写着CopyClose将数据复制到一个二维数组?为什么会提到二维数组?因为我需要在一个数组中存储数组的引号。 为了在一个循环中复制一次,然后使用ArrayCopy 进行计算,但不是CloseCopy 1...653654655656657658659660661662663664665666667...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这个代码是有效的,通过类比来做。
做了最小的改动--删除了OrderMagicNumber()分析,增加了三个日志。
不幸的是,其结果是一样的--见Pr。- 在第一张截图中,它开始(我不知道为什么不从0开始),而在第二张截图中,它从124到99开始。
int NumberOfOrders()
{
int i,res=0,k=OrdersTotal(); string sy=Symbol();
for(i=0;i<k; i++)
{
log("k = " + k +"; " );
log("i = " + i +"; " );
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==sy)) res++; //if(( OrderMagicNumber()==magic_)&& (OrderSymbol()==sy)) res++;
log("res = " + res +"; " );
}
}
return(res);
}
这段代码的编译真的没有错误吗?我不相信...
(不清楚为什么不从0开始),而在第二个地方,它从124到99。
因为终端 "吃 "了Print()的一部分,在MQL中输出的优先级最低,在Print() 之前添加Slepp(123),就不会有跳过。
虽然根据日志,你只是在打印循环计数器
因为终端 "吃 "了Print()的部分,在MQL的输出中具有最低的优先级,在Print()之前添加Slepp(123),就不会有跳过。
虽然根据日志,你只是在打印循环计数器
你的回答给我的印象是我 "吃了"--它只是没有把它放进日志,因为有更重要的事情,但我真正的任务是浏览所有订单并删除某些订单,我注意到EA跳过了一些订单(这不是以最低优先级输出信息)。我简化了任务以了解原因,结果,我们在日志中只有输出,但我仍然看到省略的订单,即专家顾问在几个订单上跳跃。 最低订单优先级很好地解释了不是从0开始的输出,但它如何解释不一致的输出,例如,从124跳到99。
如果我们所说的 "吃 "是指其他东西,我想了解是什么?
这真是太棒了!
罗曼!
例如,我是一个拥有20年经验的成功交易员。
我不明白你为什么需要"你所输入的货币对的收盘价与它们 的移动平均数 之间的差额"。
此外,你知道如何建立这些差异的移动平均线吗?- 太棒了!
你能简单地画出报价的移动平均线吗?- 也没有?
那么问题出在哪里?
收盘平均数的差异不等于收盘平均数的差异,唉,啊。
有什么疑虑?总之,在MQL4中没有错误。
1.学习如何插入代码。
我做了最小的改动--删除了OrderMagicNumber()分析,增加了三个日志。
不幸的是,其结果是一样的--见上文。- 在第一张截图中,开头(我不知道为什么不从0开始),而在第二张截图中--从124开始到99的地方。
2.log是对数吗?
注意事项
你可以使用 log()而不是MathLog()。
我还发现一个严重的缺点,对CopyClose()的调用 太多
你能告诉我如何在一个循环中复制货币对数组的报价吗?
这似乎是一个双数组,但MQL不支持它,像%。
你说的 "双数组 "是什么意思?
你说的'双数组'是什么意思?
嗯,二维的。
好吧,二维的。
哪里写着CopyClose 将数据复制到二维数组?为什么一开始就提到二维阵列?
哪里写着CopyClose将数据复制到一个二维数组?为什么会提到二维数组?
因为我需要在一个数组中存储数组的引号。
为了在一个循环中复制一次,然后使用ArrayCopy 进行计算,但不是CloseCopy