Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 880

 
Mikhail Rudyk:

der Roboter steht nur auf diesem Diagramm, handelt aber mit den gleichen Optionen, wie sie auch für Roboter verwendet werden

Fügen Sie diese Zeile ein.

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());
                              }
                  }
   }
 

setzen.

aber ich glaube nicht, dass das Zurücksetzen des Fehlers helfen wird.

 
Mikhail Rudyk:

aber ich glaube nicht, dass das Zurücksetzen des Fehlers helfen wird.

Auch.

#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());
                              }
                  }
   }
 

Ich habe dies bereits getan und es hat funktioniert.

Aber die Tatsache des Fehlers ist immer noch nicht geklärt.

vielen Dank für Ihre Hilfe

while(eror==false&&step<10)
{
double bid=SymbolInfoDouble(symbolName,SYMBOL_BID);
ResetLastError();
eror=Trade.Kaufen(Los,Symbolname,Angebot,0,0,Kommentar);
Schritt++;
Schlaf(200);
if(eror==false)
{
Print("Fehler - ",GetLastError());
if(GetLastError()==4754){OnInit();}
}
}

 
Mikhail Rudyk:

die Tatsache des Fehlers ist nicht geklärt.

Deshalb habe ich diese Option vorgeschlagen.

 
fxsaber:

Deshalb habe ich diese Option vorgeschlagen.

Nun, ich werde es ausprobieren.

Aber warum funktioniert der Standardkurs nicht?

 
Mikhail Rudyk:

Nun, ich werde es ausprobieren.

Aber warum funktioniert der Standardkurs nicht?

Wenn die alternative Bibliothek funktioniert, wird sich zeigen, wo man graben muss.

Ich kann das Problem nicht mit jeder der Bibliotheken reproduzieren.

 
Mikhail Rudyk:

Ich habe dies bereits getan und es hat funktioniert.

while(eror==false&&&step<10)
{
double bid=SymbolInfoDouble(symbolName,SYMBOL_BID);
ResetLastError();
eror=Trade.Kaufen(Los,Symbolname,Angebot,0,0,Kommentar);
Schritt++;
Schlaf(200);
if(eror==false)
{
Print("Fehler - ",GetLastError());
if(GetLastError()==4754){OnInit();}
}
}

Dies sollte nicht funktionieren. 4754 tritt auf, wenn OrdersTotal größer als Null ist, aber OrderSelect oder OrderGetTicket durcheinander gebracht werden.

Dies ist sehr selten, aber nicht in diesem Fall. Der Server/das Symbol ist hier so spezifisch, dass dasselbe mit Positionen passiert, nur mit Fehler 4753.

Ich bin bereits darauf vorbereitet, die alternative Bibel anpassen zu müssen, da die Situationen, die sich ergeben, eine Menge Logik nach unten ziehen. Wenn Sie dort eine Marktorder senden, wird diese an den Server weitergeleitet, eine Position erstellt und in derselben Millisekunde wieder geschlossen. Und das Terminal erhält aufgrund des Pings rückwirkend Informationen.

Ich war angenehm überrascht, dass alles perfekt funktionierte.


Server/Symbol selbst dodosil, Fehler ist nicht aufgetreten.


SZY Die Pose kann nicht manuell geöffnet werden, sondern nur über MMS.

 

Ich meinte, dass es hilfreich war, dass der Roboter sich nicht aufgehängt hat.

 
Mikhail Rudyk:

Ich meinte, dass es dem Roboter half, nicht zu hängen.

Dann OnInit anzeigen. Im Moment sieht es nach Unsinn aus.

Grund der Beschwerde: