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
Ein guter Fang. Vom Standpunkt des Handels aus gesehen brauchen Sie jedoch entweder 1,70060 oder 1,70061, beide sind korrekt. Vielleicht sollten Sie also die beste Lösung für Ihre Handelsoperationen wählen, anstatt sich auf ein mathematisches Rundungsschema zu verlassen.
In diesem Szenario, wenn Ihre Schrittweite == 0,00001 ist, sollten Sie nur 1,70061 als Ergebnis erhalten, und ein Wert von 1,70060 ist nahe dran, aber falsch.
In diesem Szenario, wenn Ihre Schrittweite == 0,00001 ist, sollten Sie nur 1,70061 als Ergebnis erhalten, und ein Wert von 1,70060 ist nahe dran, aber falsch.
Sorry, aber ich verstehe Ihre Argumentation nicht. Was ist "Schrittweite"?
Entschuldigung, aber ich verstehe Ihre Argumentation nicht. Was ist "Schrittweite"?
Schrittweite ist der Wert des Schritts, auf den Sie runden. z.B. lot_step = 0.01 (2 Ziffern), oder tick_size = 0.00005...
In diesem Beispiel arbeiten wir mit einem 5-stelligen Symbol mit einer Tick-Size == 0,00001
Schrittgröße ist der Wert des Schritts, auf den gerundet wird. z.B. lot_step = 0.01 (2 Ziffern), oder tick_size = 0.00005...
In diesem Beispiel arbeiten wir mit einem 5-stelligen Symbol mit einer Tick-Größe == 0,00001
Bitte verstehen Sie, dass ein "Handelsstandpunkt" hier nicht relevant ist. Dies ist ein rein mathematisches Problem, für das @amrali eine Lösung gefunden hat.
Es gibt keinen Grund, hier über den "Handelsstandpunkt" zu diskutieren, da dies nicht zum Thema dieses Threads passt und letztendlich zu einer weiteren hitzigen Debatte führen wird, die damit endet, dass wieder jemand gesperrt wird. Versuchen Sie also bitte, das zu vermeiden!
Bitte haben Sie Verständnis dafür, dass ein "Handelsstandpunkt" hier nicht relevant ist. Dies ist ein rein mathematisches Problem, für das @amrali eine Lösung gefunden hat.
Es gibt keinen Grund, hier über den "Handelsstandpunkt" zu diskutieren, da dies nicht zum Thema dieses Threads gehört und letztlich zu einer weiteren hitzigen Debatte führen wird, die damit endet, dass wieder jemand gesperrt wird. Versuchen Sie also bitte, das zu vermeiden!
Ich versuche nur zu verstehen, was @nicholishen gesagt hat. Es gibt keinen Grund für eine hitzige Debatte oder ähnliches. Dies ist ein Forum über den Handel, nicht wahr?
Bitte erklären Sie mir, warum aus einem errechneten Kurs von 1,700605 ein realer Kurs von 1,70060 "falsch" ist ? Wenn ich etwas übersehe, würde ich es gerne verstehen.
Ich versuche nur zu verstehen, was @nicholishen gesagt hat. Es gibt keinen Grund für eine hitzige Debatte oder ähnliches. Dies ist ein Forum über den Handel, nicht wahr?
Bitte erklären Sie mir, warum aus einem berechneten Kurs von 1,700605 ein realer Kurs von 1,70060 "falsch" ist ? Wenn ich etwas übersehe, würde ich es gerne verstehen.
Wie Fernando sagte, "ist dies ein rein mathematisches Problem", und im mathematischen Sinne ist das erwartete Ergebnis, dass die 5 auf die nächste Ziffer auf- statt abgerundet wird. Die MathRound-Funktion liefert inkonsistente Ergebnisse, und wenn Sie Inkonsistenzen vermeiden wollen, würde ich empfehlen, stattdessen ND zu verwenden, wie von @amrali klugerweise vorgeschlagen. Um wieder zum Thema zurückzukommen: Die CDouble-Bibliothek verwendet die MathRound-Funktion nicht mehr, um konsistentere Ergebnisse zu erzielen.
Ich versuche nur zu verstehen, was @nicholishen gesagt hat. Es gibt keinen Grund für eine hitzige Debatte oder ähnliches. Dies ist ein Forum über den Handel, nicht wahr?
Bitte erklären Sie mir, warum aus einem berechneten Kurs von 1,700605 ein realer Kurs von 1,70060 "falsch" ist ? Wenn ich etwas übersehe, würde ich es gerne verstehen.
Hallo Alain Verleyen, Sie haben Recht mit Ihrem Punkt. Bei einer einzelnen Berechnung macht das vielleicht keinen großen Unterschied. Wenn Sie jedoch mehrere Berechnungen durchführen, bei denen in jedem Schritt gerundet werden muss, wird der endgültige Fehler vergrößert. Nehmen wir eine Martingale-Strategie, bei der jede berechnete Losgröße von der vorherigen abgeleitet wird (die als gerundeter Wert an den Handelsserver gesendet wurde). Das Problem, das wir hier betrachten, heißt "Fehlerfortpflanzung". Daher halte ich es für sicherer, NormalizeDouble() zu verwenden, um die Zwischenfehler so gering wie möglich zu halten.
Zweitens gibt es hier auch einen eher technischen Punkt. Wenn Sie die Funktion MathRound(Zahl * Potenz) / Potenz mit Randzahlenverwenden, erhalten Sie manchmal den oberen gerundeten Wert und manchmal den unteren gerundeten Wert, je nach Eingabe. Wie Sie in Ihrem Kommentar erwähnt haben, ist diese Inkonsistenz bei der Rundung aus Handelssicht möglicherweise nicht von Bedeutung, solange Sie einen endgültigen gerundeten Wert erhalten (entweder nach oben oder nach unten), so dass sich der Handelsserver nicht beschweren wird. Wie Mark Watkin jedoch feststellte , kann eine solche Inkonsistenz bei der Rundung zu schwer zu erkennenden Fehlern im Client-Code führen, der die "CDouble"-Bibliothek verwendet.
Übrigens, wenn Sie eine andere Variante der obigen Funktion wie MathRound(number / point) * point mit Randzahlenverwenden , erhalten Sie eine gerundete Zahl (entweder auf- oder abgerundet), oder interessanterweise erhalten Sie keine exakte gerundete Zahl! (das Ergebnis weicht um 1 Epsilon vom erwarteten Wert ab, aber für Handelsfunktionen ist das in Ordnung)
Das folgende Skript hilft, diese Probleme zu verdeutlichen:
Daher wäre es besser, MathRound(number) durch NormalizeDouble(number, 0) zu ersetzen , um inkonsistente Ergebnisse zu vermeiden, wenn eine arithmetische (Mittelwert-)Rundung angezeigt wird.
Die andere gute Alternative für das Runden in der Mitte: MathRound() verwenden + Halb-Epsilon-Korrektur anwenden.
(Dies wurde in der FunktionMathRoundCorrect() implementiert , wie bereits erwähnt).
Laut diesem Wikipedia-Artikel gibt es viele andere Rundungsmodi, die unterschiedlichen Zwecken dienen. Es steht Ihnen frei, den für Ihre Anforderungen geeigneten Modus zu wählen. Mit freundlichen Grüßen.
https://en.wikipedia.org/wiki/Rounding