Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 880

 
Mikhail Rudyk:

il robot sta solo su questo grafico ma scambia le stesse opzioni che fanno per i robot

Inserire questa linea.

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

mettere

ma non credo che resettare l'errore possa aiutare.

 
Mikhail Rudyk:

ma non credo che resettare l'errore possa aiutare.

Anche.

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

L'ho già fatto e ha funzionato.

Ma il fatto dell'errore è ancora irrisolto.

grazie mille per il vostro aiuto

while(eror==false&&step<10)
{
double bid=SymbolInfoDouble(symbolName,SYMBOL_BID);
ResetLastError();
eror=Trade.Buy(lot,symbolName,bid,0,0,comment);
passo++;
Dormire(200);
se(eror==falso)
{
Print("error - ",GetLastError());
if(GetLastError()==4754){OnInit();}
}
}

 
Mikhail Rudyk:

il fatto dell'errore è irrisolto.

Ecco perché ho suggerito questa opzione.

 
fxsaber:

Ecco perché ho suggerito questa opzione.

Beh, farò un tentativo.

Ma perché la classe standard non funziona?

 
Mikhail Rudyk:

Beh, farò un tentativo.

Ma perché la classe standard non funziona?

Se la biblioteca alternativa funziona, sarà chiaro dove scavare.

Non riesco a riprodurre il problema con ciascuna delle librerie.

 
Mikhail Rudyk:

L'ho già fatto e ha funzionato.

while(eror==false&&&step<10)
{
double bid=SymbolInfoDouble(symbolName,SYMBOL_BID);
ResetLastError();
eror=Trade.Buy(lot,symbolName,bid,0,0,comment);
passo++;
Dormire(200);
se(eror==falso)
{
Print("error - ",GetLastError());
if(GetLastError()==4754){OnInit();}
}
}

Questo non dovrebbe funzionare. 4754 si verifica quando OrdersTotal è maggiore di zero, ma OrderSelect o OrderGetTicket si incasinano.

Questo è molto raro, ma non in questo caso. Il server/simbolo è così specifico qui che la stessa cosa accade con le posizioni, solo con l'errore 4753.

Già preparato a dover fare aggiustamenti alla bibbia alternativa, dato che le situazioni che si presentano tirano giù molta logica. Per lì si invia un ordine di mercato, arriva al server, crea una posizione e la chiude nello stesso millisecondo. E il terminale riceve informazioni retroattivamente grazie al ping.

Sono stato piacevolmente sorpreso che tutto ha funzionato perfettamente.


Server/simbolo stesso dodosil, l'errore non si è verificato.


SZY La posa non può essere aperta manualmente, solo attraverso MQL.

 

Intendevo dire che ha aiutato il fatto che il robot non si sia appeso

 
Mikhail Rudyk:

Intendevo dire che ha aiutato il robot a non appendere

Poi mostra OnInit. In questo momento sembra un'assurdità.

Motivazione: