![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
Questo è anche corretto se "cnt" è impostato a zero, ma allora il valore è di nuovo incomprensibile come nello screenshot 3 (dovrebbe essere un valore di profitto di 4,27)
int cnt=0;
double LastProfit=0;
for(i=0;i<OrdersHistoryTotal();i++)
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue;
if ((op<0 || OrderType()==op) && cnt==0) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); cnt++;} else {cnt=0;}
}
return(LastProfit);
}
Non va bene quando non ho un pensiero logico (
Vedete, nel mercato reale il deposito si scioglierà in 3 giorni con questo tipo di logica.
È brutto quando non si pensa in maniera logica (
Proprio così.
L'ordine pendente è stato cancellato
Proprio così.
L'ordine in sospeso è stato cancellato
OK, allora come si fa a restituire un ticket di ordini chiusi che sono uguali a OrderCloseTime() e calcolare il loro profitto?
Come questo:
OK, allora come si fa a restituire un ticket di ordini chiusi che sono uguali a OrderCloseTime() e calcolare il loro profitto?
Qualcosa del genere:
E se si chiude su una fermata?
ticket=OrderClose(......);
if(ticket>0){//увеличить размер массива на один и записать тикет закрытого ордера}
E se si chiude su una fermata?
ticket=OrderClose(......);
if(ticket>0){//увеличить размер массива на один и записать тикет закрытого ордера}
Bene, quali array, quali biglietti, quali ordini?
Dopo il primo riavvio del terminale, o lo spegnimento durante il fine settimana, perderai semplicemente tutti i dati, e quella sarà la fine di tutte le scritture e i calcoli.
Per esempio, quando stavo scrivendo per me stesso un sistema di conteggio del drawdown o del profitto accumulato, si presentava così: per ogni ordine a mercato durante l'apertura viene creata una variabile globale con il nome del ticket di questo ordine e quando vogliamo ricalcolare il profitto/perdita, controlliamo semplicemente l'elenco degli ordini correnti con la lista delle variabili globali ed eseguiamo il calcolo cancellando le variabili in eccesso e aggiungendo il profitto direttamente al ticket dal nome.
Questo è un carico pesante per il sistema, in un indicatore funziona bene, ma in un EA l'enumerazione di decine di variabili globali può finire con un blocco del terminale.
C'è un orario di apertura e di chiusura, bisogna lavorarci e non c'è difficoltà ad ottenerlo, e con un solo record temporale si possono ottenere tutte le informazioni sullo stato del conto, e non c'è bisogno di una bicicletta.
Quali array, quali biglietti, quali ordini?
Dopo il primo riavvio del terminale, o lo spegnimento di un fine settimana, perderete semplicemente tutti i dati, e questa sarà la fine di tutte le scritture e dei calcoli.
è risolvibile
Non devo spiegartelo.
Questo è un carico pesante per il sistema, in un indicatore funziona bene, ma in un EA l'enumerazione di decine di variabili globali può finire con un blocco del terminale.
Ci sono orari di apertura e di chiusura, questo è ciò di cui avete bisogno per lavorare, e non c'è difficoltà ad ottenerlo, con un unico record temporale potete ottenere tutte le informazioni sullo stato del conto, e non avete bisogno di una bicicletta.