Arrotondamento dei numeri in MT4 tramite NormalizeDouble - pagina 15

 
pavlick_:
Alcuni numeri possono essere rappresentati solo come una frazione infinita, come 1/3 nel sistema decimale. Ma 1/3 non è una frazione infinita nel sistema terziario, lì == 0,1. Cioè, diversi sistemi numerici hanno le loro frazioni infinite. Di conseguenza, una frazione non infinita in decimale può essere uno in binario. Per esempio: 0.1, 0.2, 0.3, 0.4, ... non hanno una rappresentazione binaria esatta. Se chiamate NormalizeDouble dieci volte, sarà o 0,19999999999...1 o 0,200000...1. Non so, forse questa è una novità.

Stai dicendo la verità! Per essere chiari, ND è necessario SOLO per il confronto, non per la rappresentazione. Ed è obsoleto da tempo.

 
pavlick_:
Alcuni numeri possono essere rappresentati solo come frazioni infinite, per esempio 1/3 nel sistema decimale. Ma 1/3 non è una frazione infinita nel sistema terziario, lì == 0,1. Cioè, diversi sistemi numerici hanno le loro frazioni infinite. Quindi, una frazione non infinita in decimale può essere uno in binario. Per esempio: 0.1, 0.2, 0.3, 0.4, ... non hanno una rappresentazione binaria esatta. Se chiamate NormalizeDouble dieci volte, sarà o 0,19999999999...1 o 0,200000...1. Non so, forse questa è una novità.

Me lo ricordo, ma in questo caso è 0+0 e non è 0.

 
transcendreamer:

Me lo ricordo, ma in questo caso è 0+0 e non è 0.

In quale caso? Fammi un esempio di quando questo è il caso.
 
fxsaber:

Stai dicendo la verità! Per essere chiari, ND è necessario SOLO per il confronto, non per la rappresentazione. Ed è da tempo obsoleto.

NormalizeDouble è necessario solo per normalizzare il prezzo quando si piazzano ordini pendenti e stop. Non ne ha bisogno per altro.

Questo è chiaramente indicato nella documentazione

I valori di StopLoss e TakeProfit calcolati, così come i prezzi aperti degli ordini pendenti, devono essere normalizzati con la precisione, il cui valore può essere ottenuto da Digits().

 
Sergei Vladimirov:
In quale caso particolare? Fammi un esempio di quando questo accade.

questo succede quando c'era 0 nella variabile e vi si aggiunge 0

(Ho il sospetto che in realtà non sia 0)

 
Slawa:

NormalizeDouble è necessario solo per normalizzare il prezzo quando si piazzano ordini pendenti e stop. Non ne ha bisogno per altro.

Questo è chiaramente indicato nella documentazione

Ma che dire del confronto dei numeri reali...
 
transcendreamer:

questo succede quando c'era 0 nella variabile e vi si aggiunge 0

(Ho il sospetto che in realtà non sia 0)


Esattamente. Gli zeri "reali" nell'addizione e nella sottrazione rimangono zeri. Ecco perché vi ho offerto un esempio.

 
Alexander Bereznyak:
Che ne dici di confrontare i numeri reali...

Un effetto collaterale correlato.

Si è rivelato conveniente. Ma non era originariamente destinato ad essere usato in questo modo.

Ci sono funzioni speciali per stampare il numero reale con la giusta precisione.

Ditemi, perché avete bisogno di arrotondare i numeri reali nei calcoli? Perché in questo caso si perde la precisione dei calcoli!

 
Sergei Vladimirov:

Esattamente. Gli zeri "reali" nell'addizione e nella sottrazione sono ancora zeri. Ecco perché vi ho offerto un esempio.

Stavo cominciando a pensare cheNormalizeDouble(new_lot-sum_lots,Lots_Digits); non produce esattamente 0 e memorizza qualche coda
 
Slawa:

NormalizeDouble è necessario solo per normalizzare il prezzo quando si piazzano ordini pendenti e stop. Non ne ha bisogno per altro.

Questo è chiaramente indicato nella documentazione

Obsolete

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

Implementazioni alternative di funzioni/approcci standard

Renat Fatkhullin, 2016.09.02 00:55

Questo non è il modo per sovraccaricarsi. Stesse firme di funzioni.

Ma l'idea è chiara: la funzione di normalizzazione che tiene conto della granulazione delle zecche.