Controllare - cosa ho fatto di sbagliato? - pagina 2

 
Natalya Smirnova #:

Dato che sto scrivendo per le opzioni binarie, ho fatto le cose un po' diversamente:


Questo sarebbe probabilmente corretto?

Ecco il problema
Ci sono 2 linee nel terminale per 1 ordine


E per l'ordine che è stato piazzato dall'Expert Advisor, Profit == 0

 
Natalya Smirnova #:

Penso che questo sia il problema
Ci sono 2 linee nel terminale per 1 ordine


E sull'ordine che è stato piazzato dall'Expert Advisor, Profit == 0

dove hai trovato un prezzo sotto lo zero - come fai a mostrare uno screenshot?

Non si vede in questo screenshot

 
Alexey Viktorov #:

Ti è già stato dato un consiglio su tutto l'algoritmo, non voglio interferire e non ho nemmeno guardato il tuo codice e lo stesso consiglio... Ma questo

ha attirato la mia attenzione. Quindi la mia domanda è: non è più facile e più leggibile usare l'operatore switch

Penso che sia più facile da leggere e capire. Forse funziona anche un po' più velocemente.
Forse invece della funzione usa solo l'array volume[n]?
Anche se, se stai pagando per ogni linea di codice, è meglio lasciarlo così :))
 
Nikolai Semko #:
Forse invece di una funzione basta usare un array volume[n]?
Anche se se si paga per ogni linea di codice, è meglio tenerlo così :))

Forse sì... sono d'accordo.

 
Renat Akhtyamov #:

Dove hai trovato un prezzo inferiore a zero, mostrami uno screenshot?

Non c'è niente del genere in questo screenshot.


Sto cercando di ottenere OrderProfit() - dà 0

ecco una conferma trovata profitto -0.01 come esce da quella linea aggiuntiva

 
Alexey Viktorov #:

Forse sì... sono d'accordo.

Non vengo pagato, è per me stesso e per l'autosviluppo. Dopo il lavoro, è interessante fare una ricerca del graal
 

Non capisco il prezzo negativo, non c'è ancora.

contare il profitto totale in questo modo (estratto)

Quello che ti serve è evidenziato

   for(i=0;i<OrdersHistoryTotal();i++)

   {

      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))

      {

         if(OrderType()==ORDER_TYPE_BALANCE && OrderCloseTime()>startDate)Withdrawal=Withdrawal+OrderProfit()+OrderCommission()+OrderSwap();

         if((OrderType()==ORDER_TYPE_BUY || OrderType()==ORDER_TYPE_SELL))

         {

            if(OrderCloseTime()>iTime(Symbol(),PERIOD_D1,0))hystCurrDay=hystCurrDay+OrderProfit()+OrderCommission()+OrderSwap();

            if(OrderCloseTime()<iTime(Symbol(),PERIOD_D1,0) && OrderCloseTime()>iTime(Symbol(),PERIOD_D1,1))hystPrevDay=hystPrevDay+OrderProfit()+OrderCommission()+OrderSwap();

         }

      }

   }



 
Natalya Smirnova #:
Non vengo pagato, è per me stesso e per l'autosviluppo. Dopo il lavoro, è interessante fare una ricerca del graal

Non fate caso a me. Siamo solo io e Nikolay che abbiamo un piccolo incontro...

L'essenza del tuo problema: poiché OrderProfit() nel brokeraggio forex non dà alcun valore reale, devi definire un ordine chiuso positivamente/negativamente come la differenza tra il prezzo di chiusura e il prezzo aperto dell'ordine. Vi è già stato detto di questo

Forum sul trading, sistemi di trading automatico e test di strategia

Controllare cosa ho fatto di sbagliato?

Renat Akhtyamov, 2021.12.21 09:27

non capire la logica che c'è dietro

come mai?

bool profit = false;
         if(OrderClosePrice() > 0)
            profit = true;

         bool loss = false;
         if(OrderClosePrice() < 0)
            loss = true;

come il prezzo di chiusura dell' ordine può essere inferiore a zero?

l'ordine BUY sarà in posizione positiva se il prezzo di chiusura è superiore a quello di apertura

ecco la condizione di un buy plus (escluse le commissioni e lo swap):

OrderClosePrice() > OrderOpenPrice()
Se è il contrario, è un meno

 
Natalya Smirnova #:
Non vengo pagato così tanto per me stesso e per il mio sviluppo personale. Dopo il lavoro, è divertente andare alla ricerca del Graal.

Sì, Natalia - era solo un meme della serie "Quando vieni pagato per una linea di codice".

Questo è il tipo di umorismo che hanno i programmatori.


Non hai bisogno di una funzione nel tuo caso.

double SelectVolume(int n)

Hai solo bisogno di formare le variabili Volume1 ... Le variabili Volume10 dovrebbero essere inizialmente formate come un array volume[10]
e poi fare riferimento ai suoi elementi volume[n] per indice n.
Non preoccupatevi - quasi ogni programmatore ci è passato.
La cosa principale è che ti piaccia davvero la programmazione. Lo sento.
Allora andrai lontano.

 
Sono d'accordo. La programmazione si attacca davvero ed è molto a lungo termine!!!
Non tutti finiscono con un hail....