Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 232
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erläuterung der Definition von DBL_EPSILON:
Dies ist eine schlechte Erklärung, denn
Ein anderer Weg, die Bedeutung von DBL_EPSILON zu erklären:
DBL_EPSILON ist einfach die Größe der Lücke zwischen aufeinanderfolgenden Doppelzahlen in [1,2).
https://www.exploringbinary.com/the-spacing-of-binary-floating-point-numbers/
https://en.wikipedia.org/wiki/Machine_epsilon
Um DBL_EPSILON besser zu verstehen, betrachten Sie das Inkrementieren eines Gleitkommazählers:
Wenn der Anfangswert des Zählers 1,0 ist, beträgt die Schrittweite (Epsilon) des Zählers 2,220446049250250313e-16 (DBL_EPSILON) ≈ 2 an der 16.
/* 1.0000000000000002 1.0000000000000004 1.0000000000000007 1.0000000000000009 1.000000000000001 1.0000000000000013 1.0000000000000016 1.0000000000000018 1.000000000000002 1.0000000000000022 */
Beträgt der Anfangswert des Zählers 1024, so beträgt die Schrittweite (Epsilon) des Zählers 2,2737363675443232321e-13 (1024 * DBL_EPSILON) ≈ 2 an der 13.
/* 1024.0000000000002 1024.0000000000005 1024.0000000000007 1024.000000000001 1024.0000000000011 1024.0000000000014 1024.0000000000016 1024.0000000000018 1024.000000000002 1024.0000000000023 */
Wenn der Anfangswert des Zählers 4503599627370496 (2^52) ist, beträgt die Schrittweite des Zählers 1,0 (2^52 * DBL_EPSILON)= 1. In diesem Bereich verhält sich ein Double wie ein Integer-Zähler, es können keine Brüche dargestellt werden.
/* 4503599627370497.0 4503599627370498.0 4503599627370499.0 4503599627370500.0 4503599627370501.0 4503599627370502.0 4503599627370503.0 4503599627370504.0 4503599627370505.0 4503599627370506.0 */
Sie können sehen, dass die kleineren Zahlen kleinere Lücken zwischen sich haben, und die größeren Zahlen haben größere Lücken zwischen sich.
DBL_EPSILON ist also die relative Fehlerrate. Relativ bedeutet in Bezug auf die Größe der Zahl.
bei 1,0 ist der absolute Fehler = 1 * 2,2204460492503131e-016 (DBL_EPSILON).
bei d, der absolute Fehler ≈ d * DBL_EPSILON.
(DBL_EPSILON ist ein Referenzzinssatz bei 1,0, etwa der jährliche Zinssatz der Bank, und er ist gleich 2^-52).
Eine Randbemerkung: Wenn Sie versuchen, 1024.0000000000003 zu drucken, wird stattdessen 1024.0000000000002 gedruckt (Aufrundung auf die nächste darstellbare Zahl), weil 1024.0000000000003 keine darstellbare Zahl ist (nicht existierende fp-Zahl).
Dies wird als Darstellungsfehler bezeichnet:
Die vorherigen/nächsten darstellbaren Zahlen werden durch Bitmanipulation (enum wie zuvor: DoubleAdvance(value, -1)) oder durch Verwendung von DBL_EPSILON erreicht:
DBL_EPSILON wird hauptsächlich verwendet, um Rundungsfehler von fp nach mathematischen Operationen auf Doubles abzuschätzen (oder zu korrigieren) (numerische Analyse):
|wahres Ergebnis - fp-Ergebnis| / wahres Ergebnis <= DBL_EPSILON
Wird der OnTester()-Aufruf im MT5-Tester deaktiviert, wenn es einen genetischen Optimierungsalgorithmus und KEIN benutzerdefiniertes Optimierungskriterium gibt?
Ich glaube nicht. Aber ich würde es gerne... Vorzugsweise ohne Parsing der Konfiguration.
PS. CARAUL!!! Alles ist weg! Bei jedem Durchlauf der Optimierung (sollte/sollte nicht) - wird OnTester() aufgerufen, was die Gesamtzeit der Optimierung stark erhöhen kann!
Hilfe wer kann... )))))
Bei meiner Suche bin ich auf eine interessante undokumentierte Funktion gestoßen
Sie können den Eingabekommentar für ein Dialogfeld ausblenden
Originalbeitrag hier
https://www.mql5.com/ru/forum/1271#comment_9019
Bei meiner Suche bin ich auf eine interessante undokumentierte Funktion gestoßen
Sie können den Eingabekommentar für ein Dialogfeld ausblenden
Originalbeitrag hier
https://www.mql5.com/ru/forum/1271#comment_9019
Im Tester wird die Tabelle History nur in zwei Fällen überschrieben.