Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Ian,
Controlla Straddle&Trail expert. puoi trovarlo qui https://www.mql5.com/en/forum/general
Ciao a tutti,
Voglio chiudere tutti i miei ordini allo stesso tempo ma non ci riesco.
Ho provato questo codice ma non funziona:
''''''''''''''''''''''''''''''''''''''''
totale = OrdiniTotali();
for(i=0;i < totale;i++)
{
if(OrderSelect(i, SELECT_BY_POS)==true)
{
OrderClose(OrderTicket(),OrderLots(),Ask,80,CLR_NONE);
OrderClose(OrderTicket(),OrderLots(),Bid,80,CLR_NONE);
}
}
''''''''''''''''''''''''''''''''''''''''
Qualcuno può aiutarmi?
Vi sarei molto grato se poteste aiutarmi
Mehdi,
Metti questo codice (procedura) fuori dalla sezione start() e quando se la condizione è soddisfatta per chiudere tutti i trade, chiama semplicemente la procedura così:
int start()
{ // il vostro codice qui .....
Se (la tua condizione qui) ShutDownAllTrades();
}
void ShutDownAllTrades
{ int Retry;
Mentre (OrdiniTotali()>0)
{ for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)
{ OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_BUY)
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
RefreshRates();
OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Yellow);
Sleep(1000);
}
else if (OrderType()==OP_SELL)
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
RefreshRates();
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Yellow);
Sleep(1000);
}
else
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
OrderDelete(OrderTicket());
Sleep(1000);
}
}
}
}
HTH
Yannis
Caro Yannis,
Grazie per il tuo aiuto.
Ti auguro il meglio.
Mehdi,
Mettete questo codice (procedura) fuori dalla sezione start() e quando se la condizione è soddisfatta per chiudere tutti i trade, chiamate semplicemente la procedura così:
int start()
{ // il vostro codice qui .....
Se (la vostra condizione qui) ShutDownAllTrades();
}
void ShutDownAllTrades
{ int Retry;
Mentre (OrdiniTotali()>0)
{ for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)
{ OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_BUY)
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
RefreshRates();
OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Yellow);
Sleep(1000);
}
else if (OrderType()==OP_SELL)
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
RefreshRates();
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Yellow);
Sleep(1000);
}
else
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
OrderDelete(OrderTicket());
Sleep(1000);
}
}
}
}
HTH
YannisCaro Yannis,
Ho aggiunto la tua procedura tra " int deinit() { } " (fuori dall'inizio) come hai detto ma c'è un problema tramite la compilazione dopo void ShutDownAllTrades { : '{' virgola o punto e virgola previsto.
Non vedo l'ora di sentire da te.
Grazie mille
Ops, scusate.
Quello che manca è il () dopo void ShutDownAllTrades()
Fate attenzione anche alla variabile chiamata 'Slippage' nella funzione orderclose.
Potresti aver bisogno di sostituirla con quella che usi quando piazzi gli ordini.
Yannis
Ops, scusate.
Quello che manca è il () dopo void ShutDownAllTrades()
Fate attenzione anche alla variabile chiamata 'Slippage' nella funzione orderclose.
Potresti aver bisogno di sostituirla con quella che usi quando fai gli ordini.
YannisFunziona molto bene !
Grazie ancora
Sto usando l'indicatore MTF CCI dal thread degli indicatori Multi Time Frame, è una linea gialla a gradini, vedi immagine allegata.
Quando la linea è sopra il livello 100 (ipercomprato) - il prezzo scende e quando è sotto -100 (ipervenduto) - il prezzo sale.
L'unico problema è che non si aggiorna sempre, devo farlo manualmente cliccando col tasto destro sul grafico e selezionando 'Aggiorna'.
Una domanda ai programmatori: C'è qualche funzione in MQ4 per fare quel tipo di aggiornamento automaticamente su ogni tick?
Apprezzerei un consiglio.
euro pean
Provate questo:
void ObjectsRedraw()
Ridisegna tutti gli oggetti del grafico
Esempio
ObjectsRedraw();
Potrebbe essere necessario usare prima ObjectCreate.
Provate questo:
void ObjectsRedraw()
Ridisegna tutti gli oggetti sul grafico
Esempio
ObjectsRedraw();
Potrebbe essere necessario usare prima ObjectCreate.Grazie per aver risposto.
Per quanto ne so, ObjectsRedraw() aggiorna gli oggetti che sono stati appena "creati" e "impostati".
Ho bisogno di aggiornare un indicatore che non è nella lista degli oggetti, quindi ObjectsRedraw() non funziona.
O forse sapete come fare riferimento a un indicatore esistente?