Leggere il profitto totale degli ordini chiusi

Sezione dedicata a metatrader (ed altre piattaforme) ed al suo linguaggio di programmazione per il trading automatico
romjp
Messaggi: 46
Iscritto il: 10/05/2017, 10:45

Leggere il profitto totale degli ordini chiusi

Messaggio da romjp » 14/05/2019, 14:42

Buongiorno, come da titolo mi servirebbe importare nel mio EA il profitto totale delle posizioni chiuse. Ho provato con il seguente modo ma non funziona:

Codice: Seleziona tutto

   for(int ST=OrdersHistoryTotal(); ST>=0; ST--)
      {
       if(OrderSelect(ST, SELECT_BY_POS,MODE_HISTORY)==true)
         {
          profitto_giornaliero=profitto_giornaliero+OrderProfit();
          break;
         }
      } 

Per intenderci, il valore che voglio importare è il totale in grassetto:
Screenshot_2019-05-14-14-24-06.png
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.

Avatar utente
ultra
Messaggi: 43
Iscritto il: 31/12/2017, 14:09

Re: Leggere il profitto totale degli ordini chiusi

Messaggio da ultra » 15/05/2019, 16:23

Hai provato ad usare la funzione AccountBalance() ?

romjp
Messaggi: 46
Iscritto il: 10/05/2017, 10:45

Re: Leggere il profitto totale degli ordini chiusi

Messaggio da romjp » 16/05/2019, 23:15

ultra ha scritto:
15/05/2019, 16:23
Hai provato ad usare la funzione AccountBalance() ?
Ma dici all'interno dell'if di orderSelect? Usato normalmente compare il saldo.

Avatar utente
Dainesi
Messaggi: 401
Iscritto il: 12/05/2014, 12:10
Località: Castellanza (VA)

Re: Leggere il profitto totale degli ordini chiusi

Messaggio da Dainesi » 19/05/2019, 21:10

Il portafoglio storico (così come quello corrente) è contenuto in un array con base 0 e quindi il suo indice maggiore è OrdersHistoryTotal -1 e non semplicemente OrdersHistoryTotal.

Inoltre l'esito non è dato solo da OrderProfit ma da tutte le componenti che apportano un costo/ricavo e quindi devi aggiungere anche OrderSwap, OrderCommission e OrderTax (ove applicabile).

Infine, perché vedo quel "break" ?? :blink: Con quel token esci dal ciclo e salti gli ordini successivi ed è sbagliato.

Avatar utente
Dainesi
Messaggi: 401
Iscritto il: 12/05/2014, 12:10
Località: Castellanza (VA)

Re: Leggere il profitto totale degli ordini chiusi

Messaggio da Dainesi » 19/05/2019, 21:12

ultra ha scritto:
15/05/2019, 16:23
Hai provato ad usare la funzione AccountBalance() ?
AccountBalance() ritorna semplicemente il saldo di bilancio e non il saldo delle operazioni chiuse meno il saldo iniziale.

Avatar utente
ultra
Messaggi: 43
Iscritto il: 31/12/2017, 14:09

Re: Leggere il profitto totale degli ordini chiusi

Messaggio da ultra » 21/05/2019, 19:31

Si, certamente che la funzione AccountBalance() fornisce il saldo, ma con alcune istruzioni aggiuntive si può ottenere il risultato richiesto.
Allego il file le cui istruzioni vanno aggiunte nel proprio EA , una prima parte va inserita nell'INIT, il resto deve essere richiamato come funzione personalizzata TotalProfits(). Il totale delle operazioni effettuate è: GuadagnoEA la singola operazione chiusa è: MiaOperazione
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.

Avatar utente
Dainesi
Messaggi: 401
Iscritto il: 12/05/2014, 12:10
Località: Castellanza (VA)

Re: Leggere il profitto totale degli ordini chiusi

Messaggio da Dainesi » 22/05/2019, 9:18

Il metodo indicato nel file allegato potrebbe rappresentare un alternativa ma ha delle debolezze che lo rendono "fragile" ad un operatività reale.
Mi spiego meglio: ultra propone di memorizzare in una variabile pubblica il valore del saldo ad inizio giornata e ciclicamente confrontare se questo valore è differente dal saldo attuale. Questo metodo ha dalla sua la semplicità ma per contro cade a pezzi se, per qualche ragione, la piattaforma o lo stesso Expert Advisor dovesse ripartire (ovvero dovesse avvenire una OnInit per uno degli eventi che la invoca) poiché il valore di quella variabile verrebbe resettato. :cry
E comunque, senza scrivere una linea di codice è sufficiente andare sullo storico operazioni e con il tasto destro selezionare "Periodo personalizzato..." e da qui scegliere "Oggi": avremo il saldo delle operazioni di giornata!

Se si vuole invece scrivere del codice "robusto" non ci si può esimere dall'analisi completa del portafoglio ordini storici per estrarre le operazioni sensibili al nostro controllo (magari suddividendo i rendimenti per MagicNumber, per Simbolo o altro).
ultra ha scritto:
21/05/2019, 19:31
Si, certamente che la funzione AccountBalance() fornisce il saldo, ma con alcune istruzioni aggiuntive si può ottenere il risultato richiesto.
Allego il file le cui istruzioni vanno aggiunte nel proprio EA , una prima parte va inserita nell'INIT, il resto deve essere richiamato come funzione personalizzata TotalProfits(). Il totale delle operazioni effettuate è: GuadagnoEA la singola operazione chiusa è: MiaOperazione

romjp
Messaggi: 46
Iscritto il: 10/05/2017, 10:45

Re: Leggere il profitto totale degli ordini chiusi

Messaggio da romjp » 22/05/2019, 19:45

Vi ringrazio per i chiarimenti.

Chi c’è in linea

Visitano il forum: CC [Bot] e 0 ospiti