Double vs FLOAT - erreur MathFloor peu claire - page 5

 
L'arrondi peut être incorrect si le nombre à arrondir est étêté, auquel cas la normalisation doit être effectuée à la précision requise avant l'arrondi.
 
Taras Slobodyanik:
L'arrondi peut être erroné si le nombre à arrondir est à queue, dans ce cas vous devez normaliser à la bonne précision avant d'arrondir.

Je suis sûr que la normalisation est nécessaire, qui peut dire que je ne l'ai pas fait :-)

Et, bien sûr, les données étaient tronquées, donc Mathfloor "allait dans le mauvais sens".

 
Vladislav Andruschenko:

Je suis sûr que la normalisation est nécessaire, qui peut dire que je ne l'ai pas fait :-)

Et, bien sûr, les données étaient tronquées, donc Mathfloor "allait dans le mauvais sens".

votre code n'a pas de normalisation avant l'arrondi)

Il y en a partout, mais à la fin vous arrondissez un nombre non normalisé.

 
Taras Slobodyanik:

vous n'avez pas de normalisation avant l'arrondi)

Il y en a partout, mais à la fin, vous arrondissez un nombre non normalisé.

J'ai essayé des centaines de variantes du code, j'ai jeté une des variantes ici, mais il s'est avéré que le problème n'était pas dans l'arrondi - mais dans la sortie des données dans l'impression et le commentaire.

 
Vladislav Andruschenko:

Il est compréhensible que la normalisation soit nécessaire.

La normalisation est une opération coûteuse et NormalizeDouble et MathFloor ne sont pas du tout nécessaires pour cette tâche.
 
fxsaber:
La normalisation est une opération coûteuse et pour cette tâche, NormalizeDouble et MathFloor ne sont pas du tout nécessaires.

sont nécessaires, et je pense qu'une recommandation pour MathFloor et MathCeil devrait être ajoutée au manuel - "recommander de normaliser les valeurs avant d'effectuer les arrondis".

ps. Je suis moi-même tombé sur cette fonctionnalité une fois.

 
Taras Slobodyanik:

sont nécessaires, et je pense qu'une recommandation pour MathFloor et MathCeil devrait être ajoutée au manuel - "recommander de normaliser les valeurs avant d'effectuer les arrondis".

ps. J'ai moi-même rencontré cette fonctionnalité une fois.

Je suis tombé dessus il y a longtemps.

Mais même la normalisation ne donne pas le résultat escompté.

 
Alors pourquoi cela fonctionne-t-il sans normalisation et sans MathFloor ?

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Double vs FLOAT - erreur MathFloor peu claire

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:
Alors pourquoi cela fonctionne-t-il sans normalisation et sans MathFloor ?
Cela répond-il à l'exigence selon laquelle si l'écart est impair, le prix doit être plus proche de l'offre ?
Après tout, j'ai utilisé MathFloor exactement pour ça.
 
Vladislav Andruschenko:
Répond-il à l'exigence selon laquelle si l'écart est impair, le prix doit être plus proche de l'offre ?
Oui.