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?
연관 포스트
- So integrierst du hochkarätige Wirtschaftsdaten in deinen EA für MetaTrader 4
- RRS Impulse – Dein Trading-Partner für MetaTrader 4
- Kijun Sen Kreuzung: Automatisches Schließen von Orders im MetaTrader 4
- Währungsstärke: Der perfekte Expert Advisor für MetaTrader 4
- Der perfekte Expert Advisor für präzises Trading: Orders zu festgelegten Zeiten öffnen und schließen