Come codificare? - pagina 335

 
mladen:
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 pips

Ciao 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

 
tkuan77:
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

Ryan

Per come è scritto, chiuderà gli ordini solo e soltanto se l'orario del broker è esattamente 07:00:00

 
mladen:
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.

Saluti

Ryan

 
tkuan77:
Ciao mladen, c'è qualche altro modo per aggirare questo, dato che non sembra funzionare qui.

Saluti

Ryan

Prova a usare

If (TimeCurrent()>= StringToTime("07:00:00"))

invece

 
mladen:
Prova ad usare

Se (TimeCurrent()>= StringToTime("07:00:00"))

invece

Ciao 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

 
tkuan77:
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

Ryan

No. Queste linee sono corrette

 
mladen:
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);

}

 
tkuan77:
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

 
mladen:
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.

C'è un altro modo in cui posso chiudere il mio trade in base a un tempo specifico?

Saluti

Ryan

 
mladen:
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...

Saluti

Ryan

Motivazione: