Fehler, Irrtümer, Fragen - Seite 2939
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Alle Preise werden mit fünf Dezimalstellen angezeigt, und einer in der gleichen Liste nimmt es aus irgendeinem Grund so: Warum? Handelt es sich um einen Fehler oder sollte meine Ausgabe so bearbeitet werden, dass sie ein einheitliches Aussehen hat? Nun, sagen wir, ich werde es mit PrintFormat oder fprint kämmen, aber im Prinzip ist es keine falsche Darstellung der Zahl?
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Wanzen, Wanzen, Fragen
Nikolai Semko, 2020.01.05 21:41
Ich habe immer diese Frage.
Ständig reden alle über den IEEE-Standard 754, aber die Menschen oft, wenn sie auf Wikipedia gehen - sei es wegen der Komplexität, oder wegen der Faulheit verlassen, ohne die Bedeutung des Standards zu verstehen.
Ich werde ein wenig Zeit darauf verwenden, diese Norm so kurz wie möglich und in einfachen Worten zu erläutern, um auf diesen Beitrag weiter hinzuweisen.
Der Typ double bestehtalso aus 8 Bytes = 64 Bits.(Float 4 Bytes = 32 Bits)
Und die Zahlendarstellung vondouble und float besteht aus 3 Komponenten:Vorzeichen, Exponent und Mantisse
DOPPEL:
FLOAT:
Natürlich gibt es in diesem Format keine dezimale Darstellung von Zahlen, sondern nur eine binäre.
Ein wenig Verständnis für die binäre Darstellung von Zahlen und ihre Beziehung zu Dezimalzahlen:
2 4= 100002 = 1610
2 3= 10002 = 810
2 2= 1002 = 4
2 1=102= 2
2 0=12=110
2 -1= 0.12 =(1/2)10= 0.510
2 -2= 0.012 = (1/4)10= 0.2510
2 -3= 0.0012 = (1/8)10= 0.12510
2 -4= 0.00012 = (1/16)10= 0.062510
2 -5= 0.000012 = (1/32)10= 0.0312510
2 -6= 0.0000012 = (1/64)10= 0.01562510
2 -7= 0.00000012 = (1/128)10= 0.007812510
2 -8= 0.000000012 = (1/256)10= 0.0039062510
2 -9= 0.0000000012 = (1/512)10= 0.00195312510
2 - 10= 0.00000000012 = (1/1024)10= 0.000976562510
2 - 11= 0.000000000012 = (1/2048)10= 0.0004882812510
2 - 12= 0.0000000000012 = (1/4096)10= 0.00024414062510
2 - 13= 0.00000000000012 = (1/8192)10= 0.000122070312510
Schauen wir uns Beispiele für das Doppelte an:
Beispiel #1
Wir haben eine Dezimalzahl: 891677.4025191
Diese Zahl kann in binärer Form dargestellt werden:
1101100110110001110101.0110011100001011010101111111111000101000001111111010001110
(wer will kann das überprüfen)))
Wir extrahieren die Mantisse der gegebenen Zahl, indem wir das Komma 19 Stellen nach links verschieben (in diesem Fall), so dass es nach der ersten Einheit kommt.
1.1011001101100011101011001110000101101111101111000101000001111101110001110* 2 19
Aber wir haben eine Mantisse von nur 52 Bit. Wir nehmen also die ersten 52 signifikanten Bits
Мантисса = 1011001101100011101011001110000101101111101111000101
Exponent = (19+1023)10 = 100000100102(da der Exponent eine vorzeichenbehaftete Zahl ist und der Exponent negativ sein kann (z.B. wenn wir 0,0000042132 haben), müssen wir 1023 zu 10 addieren(01111111111112), 011111111112 ist Null, alles darüber hinaus ist positiv, weniger ist negativ. Mit anderen Worten: Um den umgekehrten Wert des Exponenten zu erhalten, müssen wir 1023 von dem 11-Bit-Wert des Exponenten abziehen.
Insgesamt sieht unsere Nummer 891677.4025191 indoppelterSchreibweise wie folgt aus:
0100000100101011001101100011101011001110000101101111101111000101
Da es sich aber um eine binäre Darstellung handelt, müssen wir sie genau in Dezimalzahlen umwandeln:
das wäre891677.40251909999996425211429595947265625
Beispiel #2
Wir haben eine Dezimalzahl: -0.00000145258556224114
Diese Zahl kann in binärer Form dargestellt werden:
-0.000000000000000000011000010111101100111010110111010011010101001111001110
Wählen Sie die Mantisse dieser Zahl, indem Sie das Komma einfach um 20 Stellen nach rechts verschieben, so dass es nach der ersten Einheit steht.
1.1000010111101100111010110111010011010101001111001110 * 2 -20
Мантисса = 1000010111101100111010110111010011010101001111001110
Exponent = (-20+1023)10=011111010112
Minuszeichen, also ist das erste Bit 1.
Unsere Gesamtzahl -0,00000145258556224114 wird in der doppelten Ausführung wie folgt aussehen:
1011111010111000010111101100111010110111010011010101001111001110
genau in Dezimalzahlen umrechnen:
это будет -0.00000145258556224113991124017968015191826225418481044471263885498046875
In Ihrem Fall tritt das Problem mit der Zahl 0,01 auf, da sie im Double-Typ in der Form dargestellt wird:
0 01111111000 0100011110101110000101000111101011100001010001111011
was, umgerechnet in das Dezimalsystem, 0,0100000000000000000000208166817117216858513294309377670288085937510 entspricht
Bei der Vertretung
310 = 1.5*2 = 1.12*2 1
510 = 2.5*2 = 10.12*2 1
610 = 1.5*4 = 1.12*2 2
710 = 3.5*2 = 11.12*2 1
kein Problem.
Warum ist die doppelte Zahl 0,01 wirklich größer als 0,01?
Hier ist der Grund dafür:
0 01111111000 0100011110110101110100001010111101011101001010001111011 - 0.0100000000000000000000000020816681711721685132943093776702880859375 Fehler = 0.000 000 000 000 000 000 000 208166817...
0 01111111000 01000111101101011100001010001111010 - 0.009999999999999999984747344334114097569175064563751220703125 Fehler = - 0.000 000 000 000 000 001 5265566...
Um diesen chemischen Prozess zu verstehen, können Sie mit diesen Rechnern herumspielen:
https://babbage.cs.qc.cuny.edu/IEEE-754.old/Decimal.html
https://baseconvert.com/ieee-754-floating-point
https://baseconvert.com/ieee-754-floating-point
https://baseconvert.com/ieee-754-floating-point
Vielen Dank für die Informationen. Nun, im Grunde genommen hätten MQs aber unterkorrigiert werden müssen oder wurde die Entscheidung dem Nutzer überlassen?
Hm. Gibt es eine Funktion oder eine andere zusätzliche Funktionalität (Bibliothek, Code) zum Speichern von EA-Parametern?
Die Aufgabe besteht darin, einen Ondeinit-Code einzubauen, der z.B. beim Ausführen des EA auf einem Symbol (Zusatzfunktion ist auch die Periodenanalyse) die eingestellte Einstellungsdatei speichert.
Zum Beispiel - EA-Name-Symbol-Punkt.
Datei mit der Möglichkeit zum Überschreiben - nur die letzten Einstellungen für das Symbol.
So werden z. B. die Standardeinstellungen des Testers für den letzten Lauf gespeichert.
Hallo, ich habe ein Problem auf einem entfernten Computer, ich kann nicht auf die MQL5-Website zugreifen und daher kann ich den Indikator, den ich gekauft habe, nicht herunterladen. Ich kann den Indikator nicht herunterladen, also kann ich ihn nicht verwenden.
sondern ein entfernter Computer auf Zomro?
Vielen Dank, sehr informativ. Nun, im Grunde genommen, sollte MQs haben, aber unter-korrigiert, oder ist die Entscheidung überlassen, um den Benutzer zu beurteilen?
sondern ein entfernter Computer auf Zomro?
Ja
Guten Tag, ich habe das Problem, dass ich von einem entfernten Computer aus nicht auf die MQL5-Website zugreifen kann, so dass ich den Indikator, den ich gekauft habe, nicht herunterladen kann. Ich kann den Indikator nicht herunterladen, also kann ich ihn auch nicht auf der MQL5-Website installieren.
sondern ein entfernter Computer auf Zomro?
Ja
Dieser Anbieter wird wegen groben Fehlverhaltens gesperrt:
Forum zum Thema Handel, automatische Handelssysteme und Testen von Handelsstrategien
Warum ist der Zugang zu www.mql4.com blockiert?
Renat Fatkhullin, 2020.11.17 12:16
***Sie verstehen es also nicht.
Das ist nicht der Punkt. Die Frage ist, wo kann es nützlich sein, insbesondere für Händler, nicht für Programmierer? Solche Zahlen habe ich im Terminal nie gesehen, weder in der Preisskala noch im Auftragserteilungsfenster; dort ist alles überall gleich (irgendwo fünfstellig, irgendwo anders).
Dieser Anbieter wurde wegen groben Fehlverhaltens gesperrt:
Schade, dann müssen wir auf ein anderes Modell umsteigen. Haben Sie einen Vorschlag?