Double vs FLOAT - errore MathFloor poco chiaro - pagina 5

 
L'arrotondamento può essere errato se il numero da arrotondare è a coda, nel qual caso la normalizzazione deve essere fatta alla precisione richiesta prima di arrotondare
 
Taras Slobodyanik:
L'arrotondamento può essere sbagliato se il numero da arrotondare è a coda, in questo caso si dovrebbe normalizzare alla giusta precisione prima di arrotondare.

Sono sicuro che la normalizzazione è necessaria, chi può dire che non l'abbia fatto :-)

E, naturalmente, i dati erano codificati, quindi Mathfloor stava "andando nella direzione sbagliata".

 
Vladislav Andruschenko:

Sono sicuro che la normalizzazione è necessaria, chi può dire che non l'abbia fatto :-)

E, naturalmente, i dati erano codificati, quindi Mathfloor stava "andando nella direzione sbagliata".

il tuo codice non ha normalizzazione prima dell'arrotondamento)

C'è dappertutto, ma alla fine si arrotonda un numero non normalizzato.

 
Taras Slobodyanik:

non hai nessuna normalizzazione prima dell'arrotondamento)

C'è dappertutto, ma alla fine stai arrotondando un numero non normalizzato.

Ho provato centinaia di varianti del codice, ho gettato una delle varianti qui, ma come si è scoperto, il problema non era nell'arrotondamento - ma nell'output dei dati nella stampa e nel commento.

 
Vladislav Andruschenko:

È comprensibile che la normalizzazione sia necessaria.

La normalizzazione è un'operazione costosa e NormalizeDouble e MathFloor non sono affatto necessari per questo compito.
 
fxsaber:
Normalize è un'operazione costosa e per questo compito NormalizeDouble e MathFloor non sono affatto necessari.

sono necessari, e penso che una raccomandazione per MathFloor e MathCeil dovrebbe essere aggiunta al manuale - "raccomanda di normalizzare i valori prima di eseguire l'arrotondamento".

ps. Anch'io mi sono imbattuto una volta in questa funzione.

 
Taras Slobodyanik:

sono necessari, e penso che una raccomandazione per MathFloor e MathCeil dovrebbe essere aggiunta al manuale - "raccomanda di normalizzare i valori prima di eseguire l'arrotondamento".

ps. Una volta mi sono imbattuto anch'io in questa funzione.

Mi ci sono imbattuto molto tempo fa.

Ma anche la normalizzazione non dà il risultato che ci si aspetta.

 
Allora perché funziona senza normalizzazione e MathFloor?

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

Double vs FLOAT - errore MathFloor poco chiaro

fxsaber, 2017.02.26 08:53

#define ALPHA 0.1

int DoubleToInt( const double Num )
{
  return((int)(Num + ALPHA));
}

void OnStart()
{
  double NewPrice = DoubleToInt((Ask + Bid) / (2 * Point)) * Point;

  Print(NewPrice);
}
 
fxsaber:
Allora perché funziona senza normalizzazione e MathFloor?
Soddisfa il requisito che se lo spread è dispari allora il prezzo dovrebbe essere più vicino all'offerta?
Dopo tutto, ho usato MathFloor proprio per questo.
 
Vladislav Andruschenko:
Soddisfa il requisito che se lo spread è dispari, il prezzo dovrebbe essere più vicino all'offerta?
Sì.
Motivazione: