Errore 4051

Sezione dedicata a metatrader (ed altre piattaforme) ed al suo linguaggio di programmazione per il trading automatico
Rispondi
thinky
Messaggi: 8
Iscritto il: 22/03/2020, 10:26

Errore 4051

Messaggio da thinky »

Salve ho il problema con errore 4051 ho scritto questo ma mi da questo errore.

void EseguiOrdineLong(){

if(Ticket>0){
if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES))Print("Errore Ordine Select",GetLastError());

if(OrderCloseTime()==0 && OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber){

if(!OrderClose(Ticket,OrderLots(),Ask,0,0)){
Print("Errore Ordine Close",GetLastError());
}
Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Ask-10*SL*Point,Ask+10*TP*Point,"Ordine Buy 3 Soldati ",MagicNumber,0,0);


}
else
if(OrderCloseTime()!=0 && OrderMagicNumber()==MagicNumber){

Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Ask-10*SL*Point,Ask+10*TP*Point,"Ordine Buy 3 Soldati ",MagicNumber,0,0);
}
}
else Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Ask-10*SL*Point,Ask+10*TP*Point,"Ordine Buy 3 Soldati ",MagicNumber,0,0);



}
Semporasere
Messaggi: 20
Iscritto il: 19/02/2021, 15:00

Re: Errore 4051

Messaggio da Semporasere »

Salve.
Senza entrare nel merito della logica della funzione, l'errore #4051 dovrebbe derivare dalla presenza del n."0" come ultimo parametro delle funzioni OrderSend(...) ed OrderClose(): provi a toglierlo.

Annotazioni:
La variabile globale Ticket dovrebbe essere verificata/valorizzata all'avvio dell'EA (e comunque prima di richiamare la funzione).
La 2^ if del codice dovrebbe verificare la negazione "if(!OrderSelect..."
Bisognerebbe gestire gli eventuali errori restituiti da OrderSelect(...) ed OrderClose(...), magari solamente uscendo dalla funzione.
Bisognerebbe verificare il risultato di OrderSend.

Saluti.
Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti