新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 708

 
Rustam Bikbulatov:
大家好。请你告诉我,为什么我有几十个订单是以交错的顺序或不同的顺序关闭的?我应该如何修复它?是否有一种方法可以一次性关闭?

关闭时--改变订单的顺序

即该循环应该是

for(int i=OrdersTotal()-1;i>=0;i--){...}

至少:-)

PS.只要有人踩到了 "它"--以 "交错 "的顺序关闭订单,有时会很有用。
 
Maxim Kuznetsov:

关闭时--改变订单的顺序

即必须有一个周期

至少:-)

PS.既然你已经踩到了它--以 "交错 "的顺序关闭订单 有时 是有用的。

如果是有控制的关闭;)

一般来说(尽管你的评论是正确的),问题是关于 "一次关闭的方法",这不能在循环中完成。

在这里,你需要打开相反的位置,手数等于所有开仓 锁定的手数之和,然后安静地关闭相反的位置。

 
Artyom Trishkin:

如果它是一个受控的封闭;)

而一般来说(尽管你的评论是正确的),问题是关于 "一次性关闭的方法",这不能在循环中完成。

你需要开一个相反的仓位,手数等于所有开仓的 手数之和,以便锁定,然后悄悄地关闭相反的仓位。

又是什么原因使你不能按顺序关闭订单?

 
Rustam Bikbulatov:

又是什么原因导致订单无法按顺序关闭?

当市场列表中的订单在直接循环中被删除时,将其索引从0偏移到OrdersTotal()-1。

 
Rustam Bikbulatov:

什么原因导致订单无法按顺序关闭?

要么按照列表中的顺序,从OrdersTotal()-1到>=0的反向循环中关闭所有未结头寸,要么打开一个相反的头寸进行锁定,然后悄悄地用一个相反的头寸关闭所需头寸。

 
谢谢你,Artem!
 
Artyom Trishkin:

如果它是一个受控的封闭;)

一般来说(尽管你的观点是正确的),问题是关于 "一次性关闭的方法",这不能在循环中完成。

在这里,你需要用相当于所有开仓锁 仓的手数之和的手数打开相反的仓位,然后已经悄悄地用计数器关闭了

最合适的平仓方法是给你的经纪人打电话:"约翰,平掉通用电气的头寸,我们在所有方面都达成了一致"。

:-)

并不总是能够用相反的量来覆盖。而且它更难滑动--体积很大。

 
Artyom Trishkin:

在市场列表中直接删除订单时,订单索引的偏移量从0到OrdersTotal()-1。

我曾见过在直接序列中关闭订单的代码,它的工作没有失败。

在那里,当一个订单被成功关闭时,它只是将循环计数器增加1。))))我不太记得了,我也不知道该怎么办。

 
Maxim Kuznetsov:

最正确的平仓方法是给你的经纪人打电话,"约翰,平掉通用电气的头寸,我们已经达成了一切协议"。

:-)

并不总是能够用反量来覆盖。而且它更难滑行--音量很大。

但都是一次性的 :)并在一个循环中,一次一个地进行。

 
Alexey Viktorov:

我已经看到了以直接顺序关闭订单的代码,它的工作没有任何故障。

当订单被成功关闭时,它只是将循环计数器增加了一个。))))我不太记得了,我也不知道该怎么办。

为了避免你的大脑紧张,你可以把你准备删除的所有职位按照你想要的顺序(任何你喜欢的顺序)收集到一个列表中,然后看着这个列表 "逐名 "删除它们。这样一来,正确的删除顺序将得到保持。