Hallo Trader-Kollegen! Heute möchte ich euch eine spannende Strategie vorstellen, die es euch ermöglicht, nach einem Break Even noch mehr Trades zu generieren. Im Mittelpunkt steht dabei unser kleiner Expert Advisor (EA), der eine praktische Bestellzählfunktion integriert hat.
Die Bestellzählfunktion im Detail
Die Meisterleistung dieses kleinen EAs liegt in der Funktion zur Zählung der offenen Orders:
int OrdersCounter() { int counter=0; //--- for(int i=OrdersTotal()-1; i>=0; i--) if(OrderSelect(i,SELECT_BY_POS)) if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) // Prüfen, ob die Order von diesem EA geöffnet wurde { //--- Überprüfen, ob Break Even erfolgt ist /* Für Käufe gilt: StopLoss muss gleich oder über dem Eröffnungspreis liegen. Diese Implementierung eignet sich nicht für Pending Orders, sondern nur für Käufe und Verkäufe*/ double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice(); if(!XBreakeven) // Wenn nur Break Even und kein Trailing Stop aktiv ist { counter++; // Zähle die Position } } return counter; }
Wir zählen also nur die Orders, die KEINEN StopLoss über oder gleich ihrem Eröffnungspreis für Käufe bzw. unter ihrem Eröffnungspreis für Verkäufe haben. Kurz gesagt, wir zählen alle Orders, bei denen kein Break Even erreicht wurde oder der Trailing Stop nicht den Eröffnungspreis schützt.
double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice(); if(!XBreakeven) // Wenn nur Break Even und kein Trailing Stop aktiv ist
Durch diese Zählung erstellen wir einen Zähler, der den Wert zurückgibt, den wir nutzen, um unsere maximale Position zu begrenzen. In diesem Fall haben wir sie auf 1 Order gleichzeitig festgelegt.
if(OrdersCounter()<MaximumOrders)
Immer wenn ein Break Even eintritt, ignoriert diese Funktion die Zählung. Da wir in diesem Beispiel nur eine Position hatten, wird sie null zurückgeben, und zack – wir öffnen eine weitere Verkaufsorder, und der Prozess geht weiter.
Das wäre auch nicht möglich, wenn ich nicht eine Break Even-Funktion erstellt hätte.
void BreakEvenFunction() { //--- for(int i=OrdersTotal()-1; i>=0; i--) if(OrderSelect(i,SELECT_BY_POS)) if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) { // Für Käufe: Bid über dem Eröffnungspreis + Break Even Pips, umgekehrt für Verkäufe double xHybrid = OrderType()==OP_BUY ? (Bid>OrderOpenPrice()+BreakevenPips*_Point && OrderStopLoss()<OrderOpenPrice()) : (Ask<OrderOpenPrice()-BreakevenPips*_Point && OrderStopLoss()>OrderOpenPrice()); /* Für Käufe gilt: StopLoss muss gleich oder über dem Eröffnungspreis liegen, umgekehrt für Verkäufe */ if(xHybrid) { bool modfy = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrNONE); } } }
Habt ihr Lust, es auszuprobieren?
Verwandte Beiträge
- Handelssignale mit MQL5 Wizard: Bullish und Bearish Harami mit CCI bestätigen
- MQL5 Wizard: Trade Signale auf Basis von Kurs-Crossover mit gleitendem Durchschnitt und ADX Bestätigung
- MQL5 Wizard: Handels-Signale mit 3 schwarzen Krähen / 3 weißen Soldaten + CCI für MetaTrader 5
- MQL5 Wizard: Handelssignale durch 3 Schwarze Krähen/3 Weiße Soldaten + RSI
- MQL5 Wizard: Handelssignale mit 3 schwarzen Krähen/3 weißen Soldaten und Stochastik erstellen