EA Validierung - Seite 2

 
Carl Schreiber #:
"Kauf einen Ask-Stop" damit meinst Du einen Buy-Stop über dem Ask?

Man kauft zum Ask und verkauft zum Bid, daher müssen die jew. pending Aufträge jew, über oder unter diesen Preisen liegen - mit dem Mindestabstand von FREEZE_LEVEL!

Mit einem Kauf meinte ich eine Market-Buy-Order und mit einem Ask-Stop meinte ich einen Stoploss. Wie ich auf den Begriff Ask-Stop gekommen bin, weiß ich auch nicht. Market-Buy-Orders werden zu Ask-Preisen und Market-Sell-Orders zu Bid-Preisen getätigt, das war mir schon klar. Manchmal passiert das leider, dass man das richtige meint, aber das falsche schreibt/sagt.

Jetzt habe ich aber noch eine Frage. Überall habe ich bisher gelesen, dass der FREEZE_LEVEL Wert dafür da ist, um offene Positionen oder Pending-Orders einzufrieren, wenn der Marktpreis diesen zu nahe ist, sodass man diese nicht mehr ändern oder canceln kann. Meintest Du, dass man beim Setzen des StopLoss und TakeProfit nicht nur das STOPS_LEVEL, sondern auch das FREEZE_LEVEL berücksichtigen sollte? Oder meintest Du, dass man eine offene Position nur dann schließen kann, wenn sowohl TakeProfit als auch StopLoss mehr als FREEZE_LEVEL Punkte vom jeweiligen aktuellen Ask- bzw. Bid-Preis entfernt sind? Letzteres wäre bei meinem Code sowieso der Fall, da ich bei der Validierung nicht zwischen Long- und Short-Positionen unterscheide (Wenn bspw. der StopLoss einer LongPosition weit genug vom Bid-Preis entfernt ist, dann ist er auch weit genug vom Ask-Preis entfernt):

return (MathMin(MathAbs(ask - sl), MathAbs(bid - sl)) > freezeLevel && MathMin(MathAbs(ask - tp), MathAbs(bid - tp)) > freezeLevel);
 
Benjamin Fotteler #:
Carl Schreiber #:

Mit einem Kauf meinte ich eine Market-Buy-Order und mit einem Ask-Stop meinte ich einen Stoploss. Wie ich auf den Begriff Ask-Stop gekommen bin, weiß ich auch nicht. Market-Buy-Orders werden zu Ask-Preisen und Market-Sell-Orders zu Bid-Preisen getätigt, das war mir schon klar. Manchmal passiert das leider, dass man das richtige meint, aber das falsche schreibt/sagt.

Jetzt habe ich aber noch eine Frage. Überall habe ich bisher gelesen, dass der FREEZE_LEVEL Wert dafür da ist, um offene Positionen oder Pending-Orders einzufrieren, wenn der Marktpreis diesen zu nahe ist, sodass man diese nicht mehr ändern oder canceln kann. Meintest Du, dass man beim Setzen des StopLoss und TakeProfit nicht nur das STOPS_LEVEL, sondern auch das FREEZE_LEVEL berücksichtigen sollte? Oder meintest Du, dass man eine offene Position nur dann schließen kann, wenn sowohl TakeProfit als auch StopLoss mehr als FREEZE_LEVEL Punkte vom jeweiligen aktuellen Ask- bzw. Bid-Preis entfernt sind? Letzteres wäre bei meinem Code sowieso der Fall, da ich bei der Validierung nicht zwischen Long- und Short-Positionen unterscheide (Wenn bspw. der StopLoss einer LongPosition weit genug vom Bid-Preis entfernt ist, dann ist er auch weit genug vom Ask-Preis entfernt):

Also, gekauft wird zum Ask und verkauft und damit auch das Schießen einer Kaufposition (Stop-Loss oder Take-Profit) zum Bid und umgekehrt!

FREEZE_LEVEL ist ein Mindestabstand jew. zu Bid und Ask siehe das Bild in meinem Post: https://www.mql5.com/de/forum/429584#comment_41145624.

In dem Bild ist doch ganz klar dargestellt, welche Prüfungen eine Auftrag bestehen muss.

Bei vielen Brokern ist der FREEZE_LEVEL aber bei Null - trotzdem kann man sich dessen nicht sicher sein.

PS: Dein Code würde ich so nie machen! MathAbs lässt verschwinden, wenn sl und tp auf der falschen Seite liegen - und dann beginnt man lange zu suchen!

EA Validierung
EA Validierung
  • 2022.07.28
  • www.mql5.com
Hallo zusammen, ich bin gerade dabei meinen ersten EA fertigzustellen bzw. validieren zu lassen...
 

Ja, das Bild ist eigentlich eindeutig. Es war nur der Begriff "OpenPrice", der mich hat nachfragen lassen, da ich es von anderswoher gewöhnt bin, diesen Wert "LimitPrice" zu nennen.

Das P.S. verstehe ich nicht. Was verschwindet wo?

Habe ich eine offene Long-Position, so ist der SL niederiger und der TP höher. Damit ist der Abstand (Betrag der Differenz) von SL zu Bid immer kleiner als der Abstand von SL zu Ask und der Abstand von TP zu Ask immer kleiner als TP zu Bid. Also wäre das Minimum der beiden SL-Abstände gleich dem Abstand von SL und Bid. MathMin(MathAbs(ask - sl), MathAbs(bid - sl)) = MathAbs(bid - sl). Und falls dieser Abstand größer als freezeLevel ist, dann ist mein Rückgabewert false. Für TP gilt analoges von der anderen Seite her.

Habe ich eine offene Short-Position, so ist der SL höher und der TP niedriger. Damit ist der Abstand von SL zu Ask immer kleiner als der Abstand von SL zu Bid und der Abstand von TP zu Bid immer kleiner als TP zu Ask. Also wäre das Minimum der beiden SL-Abstände gleich dem Abstand von SL und Ask. MathMin(MathAbs(ask - sl), MathAbs(bid - sl)) = MathAbs(ask - sl). Und falls dieser Abstand größer als freezeLevel ist, dann ist mein Rückgabewert false. Für TP gilt hier wieder analoges von der anderen Seite her.

 
Benjamin Fotteler #:

Ja, das Bild ist eigentlich eindeutig. Es war nur der Begriff "OpenPrice", der mich hat nachfragen lassen, da ich es von anderswoher gewöhnt bin, diesen Wert "LimitPrice" zu nennen.

Das P.S. verstehe ich nicht. Was verschwindet wo?

Habe ich eine offene Long-Position, so ist der SL niederiger und der TP höher. Damit ist der Abstand (Betrag der Differenz) von SL zu Bid immer kleiner als der Abstand von SL zu Ask und der Abstand von TP zu Ask immer kleiner als TP zu Bid. Also wäre das Minimum der beiden SL-Abstände gleich dem Abstand von SL und Bid. MathMin(MathAbs(ask - sl), MathAbs(bid - sl)) = MathAbs(bid - sl). Und falls dieser Abstand größer als freezeLevel ist, dann ist mein Rückgabewert false. Für TP gilt analoges von der anderen Seite her.

Habe ich eine offene Short-Position, so ist der SL höher und der TP niedriger. Damit ist der Abstand von SL zu Ask immer kleiner als der Abstand von SL zu Bid und der Abstand von TP zu Bid immer kleiner als TP zu Ask. Also wäre das Minimum der beiden SL-Abstände gleich dem Abstand von SL und Ask. MathMin(MathAbs(ask - sl), MathAbs(bid - sl)) = MathAbs(ask - sl). Und falls dieser Abstand größer als freezeLevel ist, dann ist mein Rückgabewert false. Für TP gilt hier wieder analoges von der anderen Seite her.

  1. Limit-Preis ist kein Eröffnungspreis siehe meine beiden Bilder.
  2. Wenn Du aber aus Versehen ein Sl über dem Eröffnungspreis einer Kaufposition eingibst?
    Du kriegst dann nur den Fehler falsche Preise - und dann beginnt die Suche.
Grund der Beschwerde: