帮助。为什么EA不关闭交易 - 页 2 1234567 新评论 onewithzachy 2012.05.21 06:02 #11 crossy: 谢谢onewithzachy。 首先,我认为你有一个小错误。 for(int cnt = OrdersTotal()-1 ; cnt >= 0; cnt--) 你必须加上绿色和粗体的修正。 但是,我不明白下面这一行对我们有什么帮助? #include "...\libraries\stdlib.mq4" 谢谢,Y。 你对计数的看法是正确的,但是,如果我们像我写的那样写,OrderSelect()将返回false,for循环继续到下一个计数。 这包括将打印这段代码中的错误...... Print("failed to close buy position ", ErrorDescription(GetLastError()) ); ...这样我们就知道为什么你的EA没有关闭任何订单:(。 你也可以这样写,包括... #include <stdlib.mqh> 在MetaEditor脚本文件夹中有一个例子,标题为trade.mq4。 我 想 你 应该 知道该把附件放在哪里,对吗?把它放在你的EA的顶部(就像全局变量或者就像trade.mq4)。 stdlib.mq4位于MetaEditor > Navigator Window(Ctrl + D)> files tab > libraries folder > stdlib.mq4。 哇,我希望你不要介意我说得太详细,因为我不知道你是否已经知道或不知道:) Yochanan Gerbi 2012.05.21 12:53 #12 onewithzachy: 你对计数的看法是正确的,但是,如果我们像我写的那样写,OrderSelect()将返回false,for循环继续到下一个计数。 这包括将打印出这段代码中的错误...... ...这样我们就知道为什么你的EA没有关闭任何订单:(。 你也可以这样写,包括... 在MetaEditor脚本文件夹中有一个例子,标题为trade.mq4。 我 想 你 应该 知道该把附件放在哪里,对吗?把它放在你的EA的顶部(就像全局变量或者就像trade.mq4)。 stdlib.mq4位于MetaEditor > Navigator Window(Ctrl + D)> files tab > libraries folder > stdlib.mq4。 哇,我希望你不要介意我说得太详细,因为我不知道你是否已经知道或不知道:) 谢谢onewithzachy。 我按照你的建议做了,我在等待正确的结论。我将更新。 onewithzachy 2012.05.21 12:59 #13 crossy: 谢谢onewithzachy。 我按照你的建议做了,我在等待正确的结论。我将更新。 嗯....,我不太喜欢回溯测试,然而,RaptorUK在另一个主题中建议(点击这里),我们可以用回溯测试来调试我们的代码。 Yochanan Gerbi 2012.05.21 16:01 #14 onewithzachy: 嗯....,我不太喜欢回测,但是,RaptorUK在另一个主题(点击这里)中建议,我们可以用回测来调试我们的代码。 该EA是多对的,所以回测是不可能的。 总之,我可以很快得到相关情况。我已经得到了结果。我将更新。 谢谢 Simon Gniadkowski 2012.05.21 16:19 #15 crossy: 该EA是多对的,所以不可能进行回测。 不是回测......调试......即使是基于投资组合的EA,调试也是可能的。 Yochanan Gerbi 2012.05.21 18:36 #16 谢谢Raptor。 我注意到ORDERSELECT是一个bool变量,有时MT4不能成功地 做到这一点。正因为如此,onewithzachy建议我们这样做。 for(int cnt=0; cnt<OrdersTotal(); cnt++) { 如果(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) == true &&) OrderSymbol()==Pair &&。 OrderType()==OP_BUY) { // 关闭的代码 } } 我的问题是:如果ORDERSELECT是假的,我怎样才能再次进行 "cnt "循环,而不丢失...? 我希望你能理解我。 Y. [警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 Help: Why The EA 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 Simon Gniadkowski 2012.05.21 19:36 #17 crossy: 谢谢Raptor。 我注意到ORDERSELECT是一个bool变量,有时MT4不能成功地 做到这一点。正因为如此,onewithzachy建议我们这样做。 for(int cnt=0; cnt<OrdersTotal(); cnt++ ) 我的问题是:如果ORDERSELECT是假的,我怎样才能再次进行 "cnt "循环,而不丢失...? 我希望你能理解我。 Y. 如果你要关闭订单,你必须 往下数。 而不是 向上。 Yochanan Gerbi 2012.05.21 20:04 #18 RaptorUK: 如果你要关闭订单,你必须 往下数...。而不是 向上。 对不起,Raptor,我只是从以前的帖子中复制粘贴了一下,但我在代码中改了一下。 总之,你对我之前的问题有什么想法吗? Simon Gniadkowski 2012.05.21 20:06 #19 crossy: 对不起,Raptor,我只是从以前的帖子中复制了一个Copy_paste,但我在我的代码中改变了它。 总之,你对我之前的问题有什么想法吗? 请出示你的代码,我可以给你一个意见。 Yochanan Gerbi 2012.05.21 20:37 #20 RaptorUK: 请出示你的代码,我可以给你一个意见。 Rap,它是4016个代码行.... 总之,我的问题是一个技术性的问题。我曾经学过FORTRAN,在那里,你可以用数字来表示所需的代码行,所以你可以做 "GO to 120",然后代码就会再次进入该行。 在这里,如果Orderselect是FALSE,EA如何回到代码行:for(int cnt=OrdersTotal(); cnt > 0; cnt-- ) ??? 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢onewithzachy。
首先,我认为你有一个小错误。
for(int cnt = OrdersTotal()-1 ; cnt >= 0; cnt--)
你必须加上绿色和粗体的修正。
但是,我不明白下面这一行对我们有什么帮助?
#include "...\libraries\stdlib.mq4"
谢谢,Y。
你对计数的看法是正确的,但是,如果我们像我写的那样写,OrderSelect()将返回false,for循环继续到下一个计数。
这包括将打印这段代码中的错误......
...这样我们就知道为什么你的EA没有关闭任何订单:(。
你也可以这样写,包括...
#include <stdlib.mqh>
在MetaEditor脚本文件夹中有一个例子,标题为trade.mq4。
我 想 你 应该 知道该把附件放在哪里,对吗?把它放在你的EA的顶部(就像全局变量或者就像trade.mq4)。
stdlib.mq4位于MetaEditor > Navigator Window(Ctrl + D)> files tab > libraries folder > stdlib.mq4。
哇,我希望你不要介意我说得太详细,因为我不知道你是否已经知道或不知道:)
你对计数的看法是正确的,但是,如果我们像我写的那样写,OrderSelect()将返回false,for循环继续到下一个计数。
这包括将打印出这段代码中的错误......
...这样我们就知道为什么你的EA没有关闭任何订单:(。
你也可以这样写,包括...
在MetaEditor脚本文件夹中有一个例子,标题为trade.mq4。
我 想 你 应该 知道该把附件放在哪里,对吗?把它放在你的EA的顶部(就像全局变量或者就像trade.mq4)。
stdlib.mq4位于MetaEditor > Navigator Window(Ctrl + D)> files tab > libraries folder > stdlib.mq4。
哇,我希望你不要介意我说得太详细,因为我不知道你是否已经知道或不知道:)
谢谢onewithzachy。
我按照你的建议做了,我在等待正确的结论。我将更新。
谢谢onewithzachy。
我按照你的建议做了,我在等待正确的结论。我将更新。
嗯....,我不太喜欢回测,但是,RaptorUK在另一个主题(点击这里)中建议,我们可以用回测来调试我们的代码。
该EA是多对的,所以回测是不可能的。
总之,我可以很快得到相关情况。我已经得到了结果。我将更新。
谢谢
该EA是多对的,所以不可能进行回测。
谢谢Raptor。
我注意到ORDERSELECT是一个bool变量,有时MT4不能成功地
做到这一点。正因为如此,onewithzachy建议我们这样做。
for(int cnt=0; cnt<OrdersTotal(); cnt++)
{
如果(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) == true &&)
OrderSymbol()==Pair &&。
OrderType()==OP_BUY)
{
// 关闭的代码
}
}
我的问题是:如果ORDERSELECT是假的,我怎样才能再次进行 "cnt "循环,而不丢失...?
我希望你能理解我。
Y.
谢谢Raptor。
我注意到ORDERSELECT是一个bool变量,有时MT4不能成功地
做到这一点。正因为如此,onewithzachy建议我们这样做。
for(int cnt=0; cnt<OrdersTotal(); cnt++ )
我的问题是:如果ORDERSELECT是假的,我怎样才能再次进行 "cnt "循环,而不丢失...?
我希望你能理解我。
Y.
如果你要关闭订单,你必须 往下数...。而不是 向上。
对不起,Raptor,我只是从以前的帖子中复制粘贴了一下,但我在代码中改了一下。
总之,你对我之前的问题有什么想法吗?
对不起,Raptor,我只是从以前的帖子中复制了一个Copy_paste,但我在我的代码中改变了它。
总之,你对我之前的问题有什么想法吗?
请出示你的代码,我可以给你一个意见。
Rap,它是4016个代码行....
总之,我的问题是一个技术性的问题。我曾经学过FORTRAN,在那里,你可以用数字来表示所需的代码行,所以你可以做
"GO to 120",然后代码就会再次进入该行。
在这里,如果Orderselect是FALSE,EA如何回到代码行:for(int cnt=OrdersTotal(); cnt > 0; cnt-- )
???