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

 
Alexander Avksentyev #:

当电网需要这么长的时间时,它将依次关闭右边的。
当你关闭最后一个订单时,可能会发生有10个订单要关闭,它一个一个地关闭所有的订单,这需要无限长的时间。

这个过程是一个不间断的过程。

如果是真的,我们继续;如果是假的,我们处理一个错误;关键的错误,我们退出;非关键的(滑坡),我们继续。

如果交易不是一个完整的厨房,15-20个EA迅速关闭,大约2-3秒,否则最多15秒。编辑,有的案例长达2分钟。

如果是mt5,它几乎立即关闭。

 
Vitaly Muzichenko #:

它不间断地关闭。

在关闭一个后,检查OrderClose函数的返回值,如果为真--继续,如果为假--处理错误关键错误--退出,非关键(滑点)--继续。

如果交易不是一个完整的厨房,15-20个EA迅速关闭,大约2-3秒,否则最多15秒。编辑,有的案例长达2分钟。

如果是mt5,它几乎立即关闭。

如果有任何错误,你仍然需要发送请求,在一定时间间隔后关闭这个订单。因为如果它永远保持悬而未决的状态,它就已经是一个坏的机器人了。对于这样的订单(头寸),如果你长期持有它,甚至有可能损失存款。

 
Mihail Matkovskij #:

如果有任何错误,你仍然需要发送一个请求,在一定的时间间隔后关闭该订单。如果它永远停留在那里,它将是一个糟糕的机器人。由于这个顺序(位置),如果存款被长期持有,甚至会丢失。

我们需要妥善处理。如果它是关键的,那就没有必要猛烈抨击服务器。

 
Vitaly Muzichenko #:

它必须得到适当的处理。如果它是关键的,就没有必要猛烈抨击服务器。

当然,没有任何意义。但在一定的时间间隔后,你应该尝试关闭这个订单(头寸)。原因是这样的。首先,未结头寸不能无限期地挂在那里。第二,职位本身不能永远关闭。迟早有一天,服务器会接受关闭订单 的请求(退出头寸)。而如果你什么都不做,结果就会像我上面提到的那样。存款可能会严重缩水或失去其价值。

 
Mihail Matkovskij #:

当然,没有任何意义。但在一定的时间间隔后,仍然值得尝试关闭这个订单(头寸)。因为。首先,未结头寸不能永远挂着。第二,职位本身不能永远关闭。迟早有一天,服务器会接受关闭订单 的请求(退出头寸)。而如果你什么都不做,结果就会像我上面提到的那样。存款可能会陷入大面积缩水,也可能被卖光。

最近被跳过了,经纪公司在服务器上禁用了自动交易。这是在1分钟前,然后就被切断了。

我们还会试图关闭它吗?

 
Vitaly Muzichenko #:

最近有人提到,DC已经关闭了服务器上的自动交易功能。这是1分钟前的事,然后他们就把它关掉了。

我们还将尝试关闭吗?

当平仓出现关键错误时,该信息是正确的。

 
Vitaly Muzichenko #:

最近有人提到,DC已经关闭了服务器上的自动交易功能。这是1分钟前的事,然后他们就把它关掉了。

还打算尝试关闭它吗?

好吧,那么我们可以叫

AccountInfoInteger(ACCOUNT_TRADE_EXPERT)

而且还

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)

И

TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)

以防万一。并对任何或所有函数的相应结果不做任何处理。并相应地处理因关闭不成功而产生的错误。

在任何情况下,我们将保证,只要至少有一项功能禁止,机器人就不会进行交易。

Документация по MQL5: Программы MQL5 / Разрешение на торговлю
Документация по MQL5: Программы MQL5 / Разрешение на торговлю
  • www.mql5.com
Разрешение на торговлю - Программы MQL5 - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Mihail Matkovskij #:

嗯,并相应地处理因关闭失败而产生的错误。

只是我不知道,如果调用OrderSend,而服务器已经禁用了交易,OrderSend是否会返回false,还是会先将请求发送到服务器,然后再 返回响应?如果是后者,那么OrderSend将返回true。然后你肯定需要添加一个函数()来阻止OrderSend 函数调用。如果是第一个,那么这个请求甚至不会被发送到队列中,因为OrderSend返回了false。这有意义吗?

 
Mihail Matkovskij #:

只是我不知道,如果调用OrderSend,而服务器已经禁用了交易,OrderSend是否会返回false,还是会先将请求发送到服务器,然后再 返回响应?如果是后者,那么OrderSend将返回true。然后你肯定需要添加一个函数()来阻止OrderSend 函数调用。如果是第一个,那么这个请求甚至不会被发送到队列中,因为OrderSend返回了false。这有意义吗?

OrderSend成功后会返回一张票据 :)

我可能会去新手分部

 
Vitaly Muzichenko #:

OrderSend成功后会返回一张票据 :)

我可能会去新手分部

MQL4中的OrderSend返回一个票据。而在MQL5中,它是一个bool。我已经习惯于考虑MQL5 的虚构。我对MQL4 有点忘了(因为我习惯于将应用程序从MQL5移植到MQL4)。在MQL5中,OrderSend bool可以打开和关闭头寸,以及创建/删除订单。MQL5具有订单、交易和仓位的功能。在MQL4中,intOrderSend用于进入,而bool OrderClose用于退出。对于待处理的订单,也有bool OrderDelete。而在MQL4 中,只有订单被分为市场订单和挂单。你让我想起了这两种语言之间的区别是什么。:)

所以,人不可能知道所有的事情。而这很容易让人感到困惑。

原因: