![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
Das nenne ich eine doppelte Portion Würmer.... (Wortspiel beabsichtigt;)
Es klingt so, als ob von den verschiedenen vorgeschlagenen benutzerdefinierten Funktionen keine einen Konsens erreicht hat. Möchte jemand an dieser Stelle mitteilen (kein Wortspiel beabsichtigt), welche Funktion er als seine tägliche CompareDouble-Funktion verwendet?
Offensichtlich müssen wir eine benutzerdefinierte CompareDouble-Funktion verwenden, wenn wir zuverlässige Systeme wollen.
Das Problem kann ignoriert werden, es sei denn, der EXAKTE Wert ist wichtig.
Wenn ich oberhalb eines (möglicherweise nicht normierten) Auslösepreises eröffnen möchte, verwende ich Bid > Trigger. Wenn der Auslöser aufgrund von Rundungen zufällig bei diesem Preis liegt, ist mir das eigentlich egal.
Wenn ich bei oder um einen (möglicherweise nicht normalisierten) Auslösepreis eröffnen möchte, prüfe ich auf eine Lücke: Bid > trigger && Bid < trigger+3*pips2dbl. Der Markt kann sich innerhalb eines Ticks leicht um einen ganzen Pip bewegen, so dass Bid == Trigger immer falsch ist und MathAbs(bid-trigger) < Point/2 zwar korrekt ist, aber höchstwahrscheinlich nicht funktioniert.
Wenn die Gleichheit wichtig ist, z.B. wenn ich einen SL verschieben möchte, aber zu nahe am Markt bin(Stop Level), dann verwende ich Bid - newSL > StopLelvel - Point/2
Das Problem kann ignoriert werden, es sei denn, der EXAKTE Wert ist wichtig.
Wenn ich über einem (möglicherweise nicht normierten) Auslösepreis eröffnen möchte, verwende ich Bid > Trigger. Wenn der Kurs aufgrund von Rundungen zufällig zum Auslöser wird, ist mir das egal.
Wenn ich bei oder um einen (möglicherweise nicht normalisierten) Auslösepreis eröffnen möchte, prüfe ich auf eine Lücke: Bid > trigger && Bid < trigger+3*pips2dbl. Der Markt kann sich innerhalb eines Ticks leicht um einen ganzen Pip bewegen, so dass Bid == Trigger immer falsch ist und MathAbs(bid-trigger) < Point/2 zwar korrekt ist, aber höchstwahrscheinlich nicht funktioniert.
Wenn die Gleichheit wichtig ist, z.B. wenn ich einen SL verschieben möchte, aber zu nahe am Markt bin (Stop Level), dann verwende ich Bid - newSL > StopLelvel - Point/2
Danke! Nun, das ist, was ich decocted thread nennen würde...
In der Tat, was Sie erwähnt ist sehr nah an meiner Anwendung: Ich stelle fest, ob der neue TakeProfit anders ist (nach Broker- oder MQL4-Standards) als der ursprüngliche TakeProfit, der bereits gesetzt und gesendet wurde. Ich vergleiche zwei Indikatorwerte und zwei TakeProfit-Werte, bevor OrderModify aufgerufen wird.
Dies war mein endgültiger OrderMod-Code, der den Point/2-Filter für den Vergleich von Double Order-Werten verwendet. Hat fehlerfrei funktioniert und die Aufträge jedes Mal geändert. Danke!
newBar funktioniert hervorragend.
MathAbs rockt, ich dachte, es konvertiert nur negative Werte auf der linken Seite von Gleichungen, ich wusste nicht, dass es auch die Differenz in einen positiven Wert konvertieren kann.
Die Genauigkeit von Punkt/2 ist für meine Signalzwecke nicht wichtig. Ich wollte nur Rundungsfehler vermeiden, um eine schwache Kodierung zu vermeiden.
Ich würde es vorziehen, Frequenzfehler genauso gut zu unterdrücken wie Rundungsfehler. Ich möchte also möglichst fehlerfreie, stabile Berechnungen verwenden, im Gegensatz zum genauesten Berechnungscode.
Wenn ich also meine TakeProfit MathAbs (stphold - stp) Vergleiche noch weiter auf >2*pips erhöhe, sollte ich die größte Chance haben, die Rundungsfehler und die Frequenzfehler zu eliminieren ?
Vielen Dank.
newBar funktioniert hervorragend.
Zuvor fand ich Probleme mit IsNewCandle, das ist, warum ich zu einem Volumen-Trigger gewechselt. Wenn die Verarbeitung von Volumen-Ticks langsam sein oder fehlen kann, dann könnten es auch die Kerzen sein. Also waren beide eine schlechte Idee...
Da newBar gut funktioniert, habe ich nun versucht, die IsNewCandle-Fail-Ereignisse mit dem folgenden Code zu identifizieren:
Der Aufruf der Funktion IsNewCandle() befindet sich innerhalb von start(), ÜBER der newBar-Codezeile. (Dieser Drucktest hat nicht funktioniert, stattdessen wurde bei jedem neuen Balken gedruckt.
Meiner Meinung nach ist es eine schlechte Idee, die Prüfung auf einen neuen Balken in eine Funktion zu packen, eine Funktion dient dazu, den Code wiederverwendbar zu machen ... Versuchen Sie, IsNewCandle() zweimal während desselben ersten Ticks eines neuen Balkens aufzurufen und sehen Sie, welche Antworten Sie erhalten ...
Wenn Sie die Diskussion fortsetzen möchten, verschieben Sie sie bitte in einen neuen Thread. Ich räume später auf...
....Da sich Preise nur um ein Vielfaches von Punkt ändern können, ist Punkt/2 genau das....
Wenn Sie Preise vergleichen, gut. Wenn Sie jedoch Doppelwerte vergleichen, z. B. Durchschnittspreise, wird Punkt/2 nicht ausreichen.
Wenn Sie Preise vergleichen, ist das in Ordnung. Wenn Sie jedoch Doppelwerte vergleichen, z. B. Durchschnittspreise, reicht Punkt/2 nicht aus.
Ist Ihnen der Titel dieses Themas aufgefallen?
;)
Wenn Sie Preise vergleichen, ist das in Ordnung. Wenn Sie jedoch Doppelwerte vergleichen, z. B. Durchschnittspreise, reicht Punkt/2 nicht aus.