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

 
VIX XIV:
Buona sera. Come dovrebbe essere il codice che troverà l'ultimo ordine chiuso? Assomiglia a questo: "OrderSelect(OrdersHistoryTotal, SELECT_BY_POS, MODE_HISTORY"?

Questo è l'aspetto approssimativo del tuo blocco:

int a=-1;

for(int is=OrdersHistoryTotal(); is>=0; is--)

{

if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))

{

if(OrderType()==OP_BUY) {a=OrderType(); break;}

if(OrderType()==OP_SELL){a=OrderType(); break;}

}

}

if(a==OP_BUY) Comment("È stato trovato l'ultimo ordine di acquisto chiuso nella lista;)

if(a==OP_SELL) Comment("È stato trovato l'ultimo ordine di vendita chiuso nella lista;)


 

Ho letto molto tempo fa che non c'è garanzia nella disposizione cronologica degli ordini in OrdersHistoryTotal, e bisogna controllare in base alla data di chiusura.

 

@Valerius, non puoi inserirlo come codice? O cosa manca?

 
Сергей Таболин:

@Valerius, non puoi inserirlo come codice? O cosa manca?

Potreste rendere umanamente possibile l'inserimento di codice come codice nell'editor di MT?

Nessuno dei vostri pulsanti funziona come mi serve.

 
Valerius:

Potresti rendere umanamente possibile l'inserimento del codice come codice nell'editor MT?

Nessuno dei tuoi pulsanti funziona come voglio io.

C'è un modo complicato. Copia e incolla tutto quello che vuoi da qualsiasi codice. E incollate il vostro codice lì dentro. Meno l'evidenziazione non funziona in questo modo))))


if(OrderSelect(is,SELECT_BY_POS,MODE_TRADES))  Это чужой код и его можно править))))
 
Valerius:

Per la prima domanda, dovete fare una funzione come questa:


for(int is=OrdersTotal()-1; is>=0; is--)
{
if(OrderSelect(is,SELECT_BY_POS,MODE_TRADES))
{//Chiudi gli ordini che sono stati aperti il venerdì della settimana che non è quella corrente. In questo caso, non chiudiamo gli ordini il venerdì della settimana corrente.
if(OrderMagicNumber()==Magic && TimeDayOfWeek(TimeCurrent())==5 && TimeDayOfWeek(OrderOpenTime())==5 && TimeDayOfYear(OrderOpenTime())<TimeDayOfYear(TimeCurrent())
{
if (OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_BID),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE);
if (OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_ASK),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE);
if(!result) {error=GetLastError(); Print("LastError = ",error, ",Symbol()); }
else {error=0;}
else
{Print("NoMagic ",OrderMagicNumber();} // per Debug
else

{Print("Errore durante la selezione dell'ordine", GetLastError();}


Per la seconda domanda, ci dovrebbe essere la seguente voce:

OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(MarketInfo(nameSym,MODE_ASK)), 3, clrNONE);

Buona fortuna.

Grazie! Ha funzionato come previsto sulla prima domanda

Sul secondo - numero errato di parametri. Corretto - OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);

Solo che ora non ho capito bene la modifica della mia prima variante (l'ho copiata da qualche parte)...

 
Ciao
Qualcuno può spiegare come funziona il trailing take profi? Ci sono alcune informazioni su Trailing Stop nella guida di MT5, ma non ci sono informazioni su Trailing Profit. Quando imposto "Stop Loss trailing level (in punti)" nel mio Expert Advisor, per esempio, a 100, capisco che il trailing profit sarà attivato quando il prezzo passa 100 punti nella direzione richiesta. Ma cosa significa "Take Profit trailing level (in punti)" = 10?
 
altec3:
Ciao!
Qualcuno può spiegare il principio del trailing take profi? Non riesco a trovare alcuna informazione su Trailing Stop nella MT5 Reference. Quando imposto "Stop Loss trailing level (in punti)" nel mio Expert Advisor, per esempio, a 100, capisco che il trailing profit sarà attivato quando il prezzo passa 100 punti nella direzione richiesta. Ma cosa significa "Take Profit trailing level (in punti)" = 10?

Il TakeProfit è calcolato in pip e il Trailing TakeProfit è calcolato nella valuta del deposito. Trailing TakeProfit è il profitto nella valuta del deposito da uno o più ordini, e mette gli stop degli ordini nella quantità specificata nelle impostazioni, cioè ad una distanza calcolata.

Per esempio, il Trailing Take Profit in $100 è specificato nelle impostazioni. Una volta che il prezzo raggiunge il profitto di 100$ e va oltre, il programma calcola la distanza di 100$ e piazza tutti gli stoploss degli ordini nel punto calcolato, se lo permette. Non appena il prezzo torna agli stop, tutti gli ordini saranno chiusi. In linea di principio questo è lo stesso del Trailing Stop, solo che è calcolato in valuta depo e segue il profitto. Forse ho fatto un errore da qualche parte, ma il principio è questo. Spero di essermi spiegato.

 
Come posso usare python per richiedere tutte le barre dal terminale di un determinato timeframe?
 
Ho capito bene che in mt5, invece dell'orario di chiusura, bisogna guardare POSITION_TIME_UPDATE?
Motivazione: