Double vs FLOAT - unklarer MathFloor-Fehler - Seite 5

 
Die Rundung kann fehlerhaft sein, wenn die zu rundende Zahl gerundet ist. In diesem Fall muss vor der Rundung eine Normalisierung auf die erforderliche Genauigkeit vorgenommen werden.
 
Taras Slobodyanik:
Das Runden kann falsch sein, wenn die zu rundende Zahl gerundet ist. In diesem Fall sollten Sie vor dem Runden auf die richtige Genauigkeit normalisieren.

Ich bin sicher, dass eine Normalisierung notwendig ist, wer kann schon sagen, dass ich es nicht getan habe :-)

Und natürlich waren die Daten mit einem Schwanz versehen, so dass Mathfloor in die "falsche Richtung" ging.

 
Vladislav Andruschenko:

Ich bin sicher, dass eine Normalisierung notwendig ist, wer kann schon sagen, dass ich es nicht getan habe :-)

Und natürlich waren die Daten mit einem Schwanz versehen, so dass Mathfloor "in die falsche Richtung" ging.

Ihr Code hat keine Normalisierung vor der Rundung)

Sie ist überall vorhanden, aber am Ende rundet man eine nicht normierte Zahl ab.

 
Taras Slobodyanik:

Sie haben keine Normalisierung vor der Rundung)

Das gibt es überall, aber am Ende rundet man eine nicht normierte Zahl.

Ich habe Hunderte von Varianten des Codes ausprobiert, eine der Varianten habe ich hier eingeworfen, aber wie sich herausstellte, lag das Problem nicht in der Rundung - sondern in der Ausgabe der Daten in Druck und Kommentar.

 
Vladislav Andruschenko:

Es ist verständlich, dass eine Normalisierung notwendig ist.

Die Normalisierung ist eine teure Operation und NormalizeDouble und MathFloor werden für diese Aufgabe überhaupt nicht benötigt.
 
fxsaber:
Normalisieren ist eine teure Operation und für diese Aufgabe werden NormalizeDouble und MathFloor überhaupt nicht benötigt.

benötigt werden, und ich denke, dass eine Empfehlung für MathFloor und MathCeil in das Handbuch aufgenommen werden sollte - "empfehlen Sie die Normalisierung von Werten vor der Durchführung von Rundungen".

ps. Ich bin selbst einmal auf diese Funktion gestoßen.

 
Taras Slobodyanik:

benötigt werden, und ich denke, dass eine Empfehlung für MathFloor und MathCeil in das Handbuch aufgenommen werden sollte - "empfehle Normalisierung der Werte vor dem Runden".

ps. Ich bin selbst einmal auf diese Funktion gestoßen.

Ich bin schon vor langer Zeit darüber gestolpert.

Aber auch die Normalisierung führt nicht zu dem erwarteten Ergebnis.

 
Warum funktioniert es dann ohne Normalisierung und MathFloor?

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Double vs FLOAT - unklarer MathFloor-Fehler

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:
Warum funktioniert es dann ohne Normalisierung und MathFloor?
Erfüllt es die Anforderung, dass der Preis näher am Geldkurs liegen sollte, wenn die Spanne ungerade ist?
Schließlich habe ich MathFloor für genau das verwendet.
 
Vladislav Andruschenko:
Erfüllt es die Anforderung, dass der Preis näher am Angebot liegen muss, wenn die Spanne ungerade ist?
Ja.