MQL5:验证 :-( 我已经绞尽脑汁想知道它是什么以及如何解决。 - 页 2

 
Alexandr Gavrilin:

其他关于保证金短缺的消息也不断传来。

我试着像错误中描述的那样,在考虑到挂单的情况下,将某一方向 的仪器的所有手数加起来,而不是给出一个开仓指令,如果超过了开仓指令,就没有用了。

错误是一样的,我的调试信息在验证期间没有显示在报告日志中,我不知道如何捕捉和调试这个错误,或者如何在我的终端中模拟这个错误。

错误

 
Alexandr Gavrilin:

....

错误是一样的,我的调试信息在验证过程中没有显示在报告日志中,我不知道我如何能抓住并调试处理这个问题,或者如何在我的终端模拟这个错误...

尝试用非常大的成交量开仓。看看你的EA 是否会发现这个错误

 
Alexandr Gavrilin:

其他关于保证金短缺的消息也不断传来。

我试着像错误中描述的那样,在考虑到挂单的情况下,将该工具在特定方向上的所有手数加起来,如果超过了考虑到开仓单的情况,则不给开仓指令,但没有用。

错误是一样的,我的调试信息在验证期间没有显示在报告日志中,我不知道如何捕捉和调试这个错误,或者如何在我的终端中模拟这个错误。

你可以检查保证金水平。比方说,如果低于5000%,那么就不会有交易被执行。

 
Vladimir Karputov:

了。

解决了。

//в функции до открытия ордера.

double max_volume=SymbolInfoDouble(m_name,SYMBOL_VOLUME_LIMIT);

      double current_lots=getAllVolume();

      if(max_volume>0 && max_volume-current_lots-dlot<=0)
        {
         //PrintFormat("%.2f - %.2f",max_volume , dlot);
         return 0;
        }
//...
//функция подсчета объема
double getAllVolume()
     {
      int itotal=PositionsTotal();
      ulong uticket=-1;
      double dVolume=0;

      for(int i=itotal-1;i>=0;i--)
        {
         if(!(uticket=PositionGetTicket(i))) continue;

         if(PositionGetString(POSITION_SYMBOL)==m_symbol.Name())
            dVolume+=PositionGetDouble(POSITION_VOLUME);
        }

      itotal=OrdersTotal();

      for(int i=itotal-1;i>=0;i--)
        {
         if(!(uticket=OrderGetTicket(i))) continue;

         if(OrderGetString(ORDER_SYMBOL)==m_symbol.Name())
            dVolume+=OrderGetDouble(ORDER_VOLUME_CURRENT);
        }

      return dVolume;
     }
随后,该产品顺利通过了检查。
 
Alexandr Gavrilin:

解决了。

该产品随后被成功测试。

:)

 

顺便说一下,注意SYMBOL_VOLUME_LIMIT 可以被设置为 "0.0"。

以免在检查中被发现。

if(check_volume > SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT))
   return;
 
Vladimir Karputov:

顺便说一下,注意SYMBOL_VOLUME_LIMIT 可以被设置为 "0.0"。

为了不在检查中被抓住。

关于这条消息,有些不对劲:1.14380 的位置上, 未能即时卖出 3.30 欧元兑美元 [ 达到交易量 限制]

我有一个净值账户,没有限价单或挂单。所有的检查都在现场。

现在我检查了SYMBOL_VOLUME_LIMIT,无论是否有未平仓的订单,它总是返回0。我总是有一个头寸(因为我是净值型),这个信息只在我增加手数时出现,而且只在我自动放弃时出现。

 
Petros Shatakhtsyan:

关于这条消息,有些不对劲:1.14380 的位置上, 未能即时卖出 3.30 欧元兑美元 [ 达到交易量 限制]

我有一个净值账户,没有限价单或挂单。所有的检查都在现场。

现在我检查了SYMBOL_VOLUME_LIMIT,无论是否有未平仓的订单,它总是返回0。我总是有一个头寸(因为我是净值型),这个信息只在我增加手数时出现,而且只在我自动交易时出现。

如果你在某个服务器上工作,并不意味着周围所有的服务器都有相同的设置 :) 。

 
Vladimir Karputov:

如果你在某个服务器上工作,并不意味着周围所有的服务器都有相同的设置 :) 。

所以我在不同的服务器上检查,大约有5-6个,那里有不同的执行类型。在这个职位上,执行类型是即时的

但这并不是最主要的。自动废止法提供的信息很少,而且它使人们很难找到一个错误。而且总是有办法解决的。

 
昨天我在更新时经历了自动废止。在MT5上半推半就,但MT4几乎花了整整一个晚上,所有的订单都没有人接。我受够了,几个小时后我回到了平台。我觉得很无聊,几个小时后就回来了。有时问题不在专家顾问,而在服务。