程序库: MT4Orders - 页 72

 
fxsaber #:

如果是 OrderSend,失败后会有详细日志。如果 OrderSend 没有执行,则应在代码中查找原因。


查看ACCOUNT_LIMIT_ORDERS 等于多少。

有很多 :-)10k

它们都是手动打开的。

到目前为止,似乎在 54 个未结头寸的限制下(就 mt5 而言)(或具体而言),OrderSelect 开始失效。

   // 计算指定价格上下的解锁量
   // 
   double volumes[2];
   for(int pos=OrdersTotal()-1;pos>=0;pos--) {
      if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {
         Sleep(50);
         if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {
            PrintFormat("OrderSelect() failed: Pool TRADES not synced");
            continue;
         }
      }

在重新重复时,一个小的 Sleep 就足以让价格 "跑掉"。

日志中出现了这样的咒骂。这种情况会重复出现 - 我会显示日志。这样就更清楚该看哪里,该注意什么了。

---
它发生在市场非常活跃的时刻,信号是成功的 - 那里的刻度线是活跃的,同时在其他工具上打开机器人的副本。

 
Maxim Kuznetsov #:

目前看来,当未结头寸限制为 54 个时(就 mt5 而言)(或具体而言),OrderSelect 就会开始失效

在 PrintFormat 中打印 pos 和 OrdersTotal()。同时在睡眠前记录相同的状态。


在模拟账户上,尝试(以任何人为方式)重现此类活动,以实现 OrderSelect == false。

如果成功,您将需要所有数据进行重现。

 
fxsaber #:

以 PrintFormat 格式打印 pos 和 OrdersTotal()。同时记录 BEFORE Sleep 的相同状态。


在模拟账户上,尝试(以任何人为方式)重现此类活动,以实现订单选择 == false。

如果成功,您将需要所有数据用于重现。

完全相同的事情还没有发生过--毕竟很多仓位都很少见。

但今天又超过了 55,出现了同样的错误。


了解了 Expert Advisor 的工作逻辑后,情况是这样的:机器人收到了对 OrderSend 的错误响应--所有操作都已执行,但函数返回错误。因此,机器人在价格返回后立即重复,并以相同的价格获得了两笔交易(在屏幕上--其中一笔已经被手关闭)
订单再次超过 55,并且交易品种不是最受欢迎的(在屏幕上是 CADCHF)
----
我将使用新的、最大限度更新的 mt4orders 进行重建,并更加密切地观察。

 
Maxim Kuznetsov #:

毕竟,很多职位都是稀缺的。

但今天又超过了 55,而且出现了同样的错误。


根据 Expert Advisor 的工作逻辑,情况是这样的:机器人收到了对 OrderSend 的错误响应--所有操作都已执行,但函数返回错误。因此,一旦价格返回,机器人就重复执行,并以相同的价格获得了两笔交易(在屏幕上 - 其中一笔已被手关闭)
订单再次超过 55,并且交易品种不是最受欢迎的(在屏幕上是 CADCHF)
----
我将使用新的、最大限度更新的 mt4orders 进行重建,并更加密切地观察。

上周我也遇到了同样的情况,是反向的。

那天网络很糟糕,ping 很高。

我认为这个错误是服务器->终端->服务器连接时间过长造成的。但我可能错了。

我在日志中什么也没看到

 
Vitaly Muzichenko #:

上周我也遇到了同样的事情,出现了反弹。

允许等待结果,最多 10 秒钟。

MT4ORDERS::OrderSend_MaxPause = 10000000; // 以 µs 为单位的最长同步时间。
 
fxsaber #:

等待结果的时间最长为 10 秒钟。

冷却!

 
fxsaber #:

等待结果的时间最长为 10 秒钟。

我会试试的,但这种情况很少发生,所以我没有什么可向您报告的。

 
prostotrader #:

酷毙了

最酷的是终端 5 可以这样与服务器通信。

 
Vitaly Muzichenko #:

最酷的是终端 5 可以这样与服务器通信。

如果 OnTradeTransaction 没有响应,我的最大等待时间为 250 毫秒。

10 秒钟内,您就可以将存款全部取出。

 
prostotrader #:

如果 OnTradeTransaction 中没有回应,我的最大等待时间为 250 MCs。

如果没有回应,在这之后您要做什么?