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

 
Mikhail Rudyk:

机器人只站在这个图表上,但交易的选项与他们的机器人相同。

插入这一行。

void Open(int lot,string comment)
   {
               bool eror=false;
               int step=0;
               if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)==1)
                  {
                           while(eror==false&&step<10)
                              {
                                 double bid=SymbolInfoDouble(symbolName,SYMBOL_BID);
                                 ResetLastError();
                                 eror=Trade.Buy(lot,symbolName,bid,0,0,comment);
                                 step++;
                                 Sleep(200);
                                 if(eror==false)Print("error - ",GetLastError());
                              }
                  }
   }
 

但我不认为重设错误 会有帮助。

 
Mikhail Rudyk:

但我不认为重设错误会有帮助。

还有。

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

void Open(int lot,string comment)
   {
               bool eror=false;
               int step=0;
               if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)==1)
                  {
                           while(eror==false&&step<10)
                              {
                                 double bid=SymbolInfoDouble(symbolName,SYMBOL_BID);
                                 ResetLastError();
                                 // eror=Trade.Buy(lot,symbolName,bid,0,0,comment); // закомментировать
                                 eror=OrderSend(symbolName, OP_BUY, lot, bid, 0, 0, 0, comment);
                                 step++;
                                 Sleep(200);
                                 if(eror==false)Print("error - ",GetLastError());
                              }
                  }
   }
 

我已经这样做了,而且成功了。

但错误的事实仍未得到解决。

非常感谢您的帮助

while(eror==false&&step<10)
{
double bid=SymbolInfoDouble(symbolName,SYMBOL_BID)。
ResetLastError()。
eror=贸易。买入(lot,symbolName,bid,0,0,评论)。
步骤++。
睡眠(200)。
如果(eror==false)
{
Print("error - ",GetLastError())。
如果(GetLastError()==4754){OnInit();}。
}
}

 
Mikhail Rudyk:

错误的事实是无法解决的。

这就是为什么我提出这个方案

 
fxsaber:

这就是为什么我提出这个方案

好吧,那我就试试吧。

但为什么标准班不工作呢?

 
Mikhail Rudyk:

好吧,那我就试试吧。

但为什么标准班不工作呢?

如果替代图书馆起作用,那么在哪里挖掘就会变得很清楚。

我无法在每个库中重现这个问题。

 
Mikhail Rudyk:

我已经这样做了,而且成功了。

while(eror==false&&step<10)
{
double bid=SymbolInfoDouble(symbolName,SYMBOL_BID)。
ResetLastError()。
eror=贸易。买入(lot,symbolName,bid,0,0,评论)。
步骤++。
睡眠(200)。
如果(eror==false)
{
Print("error - ",GetLastError())。
如果(GetLastError()==4754){OnInit();}。
}
}

这应该不起作用。4754发生在OrdersTotal大于0的情况下,但OrderSelect或OrderGetTicket被搞砸了。

这种情况非常罕见,但在本案中却没有。这里的服务器/符号非常特殊,同样的事情发生在仓位上,只是错误4753。

已经准备好要对备用圣经进行调整,因为出现的情况会把很多逻辑拉下来。在那里,你发送一个市场订单,它来到服务器,创建一个头寸,并在同一毫秒内关闭它。而终端因为ping的缘故,收到了信息的追溯。

我感到惊喜的是,一切工作都很完美。


服务器/符号本身dodosil,错误没有发生。


SZY 姿势不能手动打开,只能通过MQL。

 

我的意思是,机器人没有悬挂,这很有帮助。

 
Mikhail Rudyk:

我的意思是,它帮助机器人不挂掉

然后显示OnInit。现在,它看起来是无稽之谈。

原因: