Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 474

 
Alexey Viktorov:
Das ist noch nicht alles... https://www.mql5.com/ru/forum/66827
Seltsamer netter Mann... Oh, nun...
 
Wie erkenne ich den tatsächlichen Wert einer Variablen vom Typ double? Der Punkt ist, dass manchmal Tausendstel beim Drucken herausgeworfen werden - die Variable selbst wird aus einem Textstring gebildet, aber sie durchläuft eine Rundungsprozedur.
 
-Aleks-:
Wie erkenne ich den tatsächlichen Wert einer Variablen vom Typ double? Das Problem ist, dass beim Drucken manchmal Tausende von Ziffern ausgegeben werden - die Variable selbst wird aus einer Textzeichenfolge gebildet, aber sie durchläuft eine Rundungsprozedur.
Wozu brauchen Sie es?
 
Alexey Kozitsyn:
Ahem. Wozu brauchen Sie es?
Um einen Fehler in den Berechnungen zu entdecken :)
 
-Aleks-:
Um einen Fehler in der Berechnung zu entdecken :)
Möchten Sie mehrere Werte des Typs double vergleichen?
 
Alexey Kozitsyn:
Möchten Sie mehrere Werte vom Typ double vergleichen?
Nicht wirklich... es wird davon ausgegangen, dass Zahlen nicht immer einen ganzzahligen Wert von 4=3,99999999999999999 haben und nach mathematischen Operationen nach dem Runden eine Ungenauigkeit entsteht.
 

Können Sie bitte E-Mail-Nachrichten vom Metatrader 4-Terminal so versenden, dass ein Screenshot des aktuellen Charts gemacht und in die Mitte der Nachricht gestellt wird. Beispiel:

Es gab ein Kaufsignal für EurUsd

<скриншот09122015_eurusd.png>

Weitere Informationen zur Eröffnung.

Sagen Sie mir, wie ich das umsetzen kann? Vielleicht gibt es ein Beispiel oder etwas Ähnliches, das nachgebaut werden kann. Danke!
 
-Aleks-:
Nicht ganz... Es wird davon ausgegangen, dass Zahlen nicht immer einen ganzzahligen Wert von 4=3,999999999999999 haben, und nach dem Rechnen ergibt sich nach dem Runden eine Ungenauigkeit.

Auch wenn Ungenauigkeiten auftreten, verwenden Sie NormalizeDouble(). Stellen Sie die gewünschte Genauigkeit für Ihre Berechnungen ein. Dafür ist diese Funktion gedacht.

Das Beispiel dort scheint Ihren Fall zu beschreiben:

Sie sollten sich darüber im Klaren sein, dass die normalisierte Zahl bei der Ausgabe in das Journal mit Print() mehr Dezimalstellen enthalten kann, als Sie erwarten. Zum Beispiel,

DoubleToString(a,8)=76.67100000

Print(76.671)=76.67100000000001

 
Alexey Kozitsyn:

Auch wenn Ungenauigkeiten auftreten, verwenden Sie NormalizeDouble(). Stellen Sie die gewünschte Genauigkeit für Ihre Berechnungen ein. Dafür ist diese Funktion gedacht.

Das Beispiel dort scheint Ihren Fall zu beschreiben:

Ja - beschrieben, ja - ich benutze es - die Frage ist nur, wie man nicht durch Print und allgemein String, um Daten für die Analyse zu bekommen :)
 
-Aleks-:
Ja - es ist beschrieben, ja - ich benutze es - die Frage ist, wie nicht durch Print und String im Allgemeinen, um Daten für die Analyse zu erhalten :)

Mit der gleichen NormalizeDouble(). Sie erhalten eine Zahl vom Typ double. Normalisiert. Print() gibt sie einfach so aus.

Hier steht, wie man den Vergleich richtig durchführt: https://www.mql5.com/ru/docs/basis/types/double

Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
  • www.mql5.com
Основы языка / Типы данных / Вещественные типы (double, float) - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Grund der Beschwerde: