![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Questa parte
se(newbar==Time[0])return(0);
altrimenti newbar=Time[0];
int biglietto, totale;
se(Bars<100)
{
Print("barre inferiori a 100");
return(0);
}
se(TakeProfit<10)
{
Print("TakeProfit inferiore a 10");
return(0); // controlla TakeProfit
}
Sta impedendo all'ea di chiudere gli ordini in un certo momento se non è il primo tick di una nuova barra e se il profitto non è > 10 pipsCiao mladen, ho rimosso quella parte della codifica e ancora il mio ea non si chiude al momento desiderato.
Hai qualche idea su quale potrebbe essere la ragione? Grazie.
Saluti
Ryan
Ciao mladen, ho rimosso quella parte della codifica e ancora il mio ea non chiude al momento desiderato.
Avete qualche idea su quale possa essere la ragione? Grazie.
Saluti
RyanPer come è scritto, chiuderà gli ordini solo e soltanto se l'orario del broker è esattamente 07:00:00
Nel modo in cui è scritto, chiuderà gli ordini solo, e solo se l'ora del broker è esattamente 07:00:00
Ciao mladen, c'è qualche altro modo per aggirare questo problema, dato che qui non sembra funzionare.![](https://c.mql5.com/forextsd/smiles/frown.png)
Saluti
Ryan
Ciao mladen, c'è qualche altro modo per aggirare questo, dato che non sembra funzionare qui.
Saluti
RyanProva a usare
If (TimeCurrent()>= StringToTime("07:00:00"))
invece
Prova ad usare
Se (TimeCurrent()>= StringToTime("07:00:00"))
inveceCiao mladen, non funziona ancora. Mi sto chiedendo se potrebbe essere dovuto a queste righe qui... o OrdersTotal o OrderSelect potrebbero essere la causa del problema?
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
Saluti
Ryan
Ciao mladen, non funziona ancora. Mi sto chiedendo se potrebbe essere dovuto a queste linee qui... o OrdersTotal o OrderSelect potrebbero causare il problema?
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
Per quanto riguarda
RyanNo. Queste linee sono corrette
No. Queste linee sono corrette
Ciao mladen, perché ho impostato il mio ea per avere solo 1 trade in qualsiasi momento e ho notato che OrdersTotal ha impostato il mio int i count a 0 negativo da 1-1, i>=0; i-- renderà il mio i=-1
quindi mi chiedevo se questo potrebbe essere l'errore.
else if(total > 1) //per chiudere gli ordini in base al tempo... non ancora risolto.
{
if (Hour()==7 && Minute()==30)
{
for (int i=OrdiniTotali()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (!UseCurrSymbol || OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
pBid=MarketInfo(OrderSymbol(),MODE_BID);
OrderClose(OrderTicket(),OrderLots(),pBid,1,Blue);
}
if (OrderType()==OP_SELL)
{
pAsk=MarketInfo(OrderSymbol(),MODE_ASK);
OrderClose(OrderTicket(),OrderLots(),pAsk,1,Rosso);
}
}
}
}//
}
return(0);
}
Ciao mladen, perché ho impostato il mio ea per avere solo 1 trade in qualsiasi momento e ho notato che OrdersTotal ha impostato il mio int i count a 0 negativo da 1-1, i>=0; i-- renderà il mio i=-1
quindi mi chiedevo se questo potesse essere l'errore.
else if(total > 1) //per chiudere gli ordini in base al tempo... non ancora risolto.
{
if (Hour()==7 && Minute()==30)
{
for (int i=OrdiniTotali()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (!UseCurrSymbol || OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
pBid=MarketInfo(OrderSymbol(),MODE_BID);
OrderClose(OrderTicket(),OrderLots(),pBid,1,Blue);
}
if (OrderType()==OP_SELL)
{
pAsk=MarketInfo(OrderSymbol(),MODE_ASK);
OrderClose(OrderTicket(),OrderLots(),pAsk,1,Rosso);
}
}
}
}//
}
return(0);
}Sostituisci questo : f (Hour()==7 && Minute()==30) con la linea che ti ho mandato e prova allora
OrdersTotal() restituirà 1 se c'è un ordine aperto. Quando si usa OrderSelect(), quello 0 (OrdersTotal()-1) selezionerà l'ordine corretto. Se OrdersTotal() restituisce 0, allora non ci sono ordini aperti nel pool di ordini attivi
Per favore sostituisci questo: f (Hour()==7 && Minute()==30) con la linea che ti ho mandato e prova allora OrdersTotal() restituirà 1 se c'è un ordine aperto. Quando si usa OrderSelect(), quello 0 (OrdersTotal()-1) selezionerà l'ordine corretto. Se OrdersTotal() restituisce 0, allora non ci sono ordini aperti nel pool di ordini attivi
Ciao mladen, purtroppo ho appena riprovato di nuovo e ancora non funziona.![](https://c.mql5.com/forextsd/smiles/frown.png)
C'è un altro modo in cui posso chiudere il mio trade in base a un tempo specifico?
Saluti
Ryan
Sostituisci questo: f (Hour()==7 && Minute()==30) con la linea che ti ho mandato e prova allora OrdersTotal() restituirà 1 se c'è un ordine aperto. Quando si usa OrderSelect(), quello 0 (OrdersTotal()-1) selezionerà l'ordine corretto. Se OrdersTotal() restituisce 0, allora non ci sono ordini aperti nel pool di ordini attivi
Ciao mladen, sono riuscito a risolvere il problema. sembra che questo liner stava causando il problema... il codice funziona dopo che l'ho rimosso.
else if(totale > 1)
grazie per la tua assistenza...![](https://c.mql5.com/forextsd/smiles/smile.png)
Saluti
Ryan