Ciao,
sto convertendo uno script MQL4 in MQL5 in cui utilizzavo la funzione OrderProfit() per ottenere il profitto (positivo o negativo) di una operazione chiusa, dopo averla correttamente selezionata.
In MQL5 questa funzione non è disponibile purtroppo; facendo ricerche in rete, ho visto che si potrebbe usare una funziona del genere:
Dove DEAL_ENTRY_OUT dovrebbe essere proprio la proprietà dell'ordine che indica il profitto.
Tuttavia, non riesco ad utilizzarla in quanto ricevo questo errore (la chiamata si trova all'interno di una funzione):
Sto cercando di utilizzare questa propietà all'interno di una funzione di questo tipo:
Qualcuno sa dirmi come mai o cosa sto sbagliando?
Grazie in anticipo
Christian
- www.mql5.com
Prima devi recuperare lo storico con HistorySelect() dopo ciclando lo storico recuperi le informazioni di tuo interesse dei deal con HistoryDealGetString(), HistoryDealGetInteger() e HistoryDealGetDouble(). Guarda qui: https://www.mql5.com/it/docs/trading/historyselect c'è anche uno script d'esempio che recupera tutte le informazioni.
Ah grande @Michele Catanzaro!
Alla fine ho composto così il pezzo del mio script che calcola il profitto delle operazioni chiuse in un determinato periodo di tempo (sotto)
Sicuramente si può semplificare ulteriormente, forse non serve rifare il controllo sulla date dentro al ciclo for visto che la history è già stata selezionata sopra e quindi l'ordine è per forza incluso in quel periodo.
Forse dovrò aggiungere solo il controllo per capire se l'ordine effettivamente è stato chiuso o se è ancora aperto...
HistorySelect(dateFrom, dateTo); // Estraggo il numero di ordini chiusi nell'history ordersNumber = HistoryDealsTotal(); // Ciclo tutti gli ordini chiusi nell'history for(i = 0; i < ordersNumber; i++) { if(HistoryDealGetTicket(i) == 0) { // Controllo se la selezione è andata a buon fine Print("Access to history failed with error (",GetLastError(),")"); break; } else if((datetime)HistoryOrderGetInteger(i, ORDER_TIME_DONE) >= dateFrom && (datetime)HistoryOrderGetInteger(i, ORDER_TIME_DONE) <= dateTo) { // se l'ordine chiudo è compreso fra le due date // Aumento il numero di ordini chiusi trovati e sommo il profitto totalProfit += HistoryDealGetDouble(i,DEAL_PROFIT);; dailyOrdersNumber += 1; } }
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Ciao,
sto convertendo uno script MQL4 in MQL5 in cui utilizzavo la funzione OrderProfit() per ottenere il profitto (positivo o negativo) di una operazione chiusa, dopo averla correttamente selezionata.
In MQL5 questa funzione non è disponibile purtroppo; facendo ricerche in rete, ho visto che si potrebbe usare una funziona del genere:
Dove DEAL_ENTRY_OUT dovrebbe essere proprio la proprietà dell'ordine che indica il profitto.
Tuttavia, non riesco ad utilizzarla in quanto ricevo questo errore (la chiamata si trova all'interno di una funzione):
Sto cercando di utilizzare questa propietà all'interno di una funzione di questo tipo:
Qualcuno sa dirmi come mai o cosa sto sbagliando?
Grazie in anticipo
Christian