Als Programmierer stelle ich mir bei solchen Fragen immer selbst die Frage: Was soll der EA machen?
Was meinst du mit Trades? Eine pending Order (bspw. gesetzte und nicht gefüllte Limit-Order) oder eine offene Position?
Falls du pending Orders meinst: Hast Du irgendein kompliziertes Grid-System, welches Du handhaben willst? Könnte man das nicht sinnvoller mit der OCO-Funktion lösen?
Hallo zusammen,
gibt es schon einen existierenden EA, der alle Sell-Trades schließen kann, wenn ein definierter Geldbetrag oder ein definierter Gewinn in Prozent erreicht ist? Und der auch das gleiche mit den Buy-Trades machen kann?
Es gibt zwar schon einen "Closing by Profit-EA", aber der schliesst dann alle Trades und ist nicht unterteilt in Sell-oder Buy-Trades.
Hallo,
sowas findet man eigentlich nicht.
Und meistens wird ein Auftrag bei Freelance erteilt.
Nur Ihre Frage bezieht auf einen kleinen EA und daher eine kleine Hilfe von mir.
In Einstellungen von EA Orders setzen auf false stellen, wenn Sie nur Ihre Positionen managen möchten!
Hier kommt der Code: Kompilieren müssen Sie selbst.
//+------------------------------------------------------------------+ //| ProfitClose.mq5 | //| Copyright 2023, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2023, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #include <Trade/Trade.mqh> #include <Trade/SymbolInfo.mqh> CTrade m_trade; CSymbolInfo m_symbol; CPositionInfo m_position; CHistoryOrderInfo m_history; //+------------------------------------------------------------------+ //| Kleine Einstellungen | //+------------------------------------------------------------------+ input bool OrdersSetzen = true; // Orders setzen? (true/false)) input double ProfitClose = 1; // Profit Close (Money) datetime totalCandles; // Definieren wir Candles //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { totalCandles = iBars(_Symbol,PERIOD_CURRENT); // Wählen wir Period des Bares return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- // Damit man sieht, welcher Positionen im Plus sind .-) Comment("\nProfit Buy: "+DoubleToString(ProfitBuy(),2)+"\nProfit Sell: "+DoubleToString(ProfitSell(),2)); double ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK); // Rufen wir durch SymbolInfo ASK Preis ab double bid = SymbolInfoDouble(_Symbol,SYMBOL_BID); // Rufen wir durch SymbolInfo BID Preis ab ask = NormalizeDouble(ask,_Digits); // Normalisieren wir ASK Preis bid = NormalizeDouble(bid,_Digits); // Normalisieren wir BIS Preis int bars = iBars(_Symbol,PERIOD_CURRENT); // Bars in aktuellen Timeframe // Damit nicht jeden Tick Positionen eröffnet werden // Wurde es auf in aktuell eröffneten Timeframes passieren // Beispiel in H1 nur ein mal in eine Stunde if(totalCandles != bars && OrdersSetzen == true) { totalCandles = bars; m_trade.Sell(0.01,_Symbol,bid,0,0,""); m_trade.Buy(0.01,_Symbol,ask,0,0,""); } // Prüft nach Gewinn Buy Order if(ProfitBuy() >= ProfitClose) { ClosePositionBuy(); // Funktion Close Buy } // Prüft nach Gewinn Sell Order if(ProfitSell() >= ProfitClose) { ClosePositionSell(); // Funktion Close Sell } }// OnTickEnde // Close Position Buy void ClosePositionBuy() { int total_orders = 0; for(int i = PositionsTotal()-1; i >= 0; i--) { if(m_position.SelectByIndex(i)) if(m_position.Symbol()== _Symbol) { total_orders++; } } for(int i=PositionsTotal()-1; i>=0; i--) if(m_position.SelectByIndex(i)) if(m_position.Symbol()== _Symbol) { // Prüft nach Symbol if(m_position.PositionType()==POSITION_TYPE_BUY) { m_trade.PositionClose(m_position.Ticket()); } } } // Close Position Sell void ClosePositionSell() { int total_orders = 0; for(int i = PositionsTotal()-1; i >= 0; i--) { if(m_position.SelectByIndex(i)) if(m_position.Symbol()== _Symbol) { total_orders++; } } for(int i=PositionsTotal()-1; i>=0; i--) if(m_position.SelectByIndex(i)) if(m_position.Symbol()== _Symbol) { // Prüft nach Symbol if(m_position.PositionType()==POSITION_TYPE_SELL) { m_trade.PositionClose(m_position.Ticket()); } } } //+------------------------------------------------------------------+ // Profit Buy Funktion double ProfitBuy() { double pft=0; for(int i=PositionsTotal()-1; i>=0; i--) { ulong ticket=PositionGetTicket(i); if(ticket>0) { if(PositionGetString(POSITION_SYMBOL)==_Symbol) { if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) { pft+=PositionGetDouble(POSITION_PROFIT); } } } } return(pft); } //+------------------------------------------------------------------+ // Profit SellFunktion double ProfitSell() { double pft=0; for(int i=PositionsTotal()-1; i>=0; i--) { ulong ticket=PositionGetTicket(i); if(ticket>0) { if(PositionGetString(POSITION_SYMBOL)==_Symbol) { if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL) { pft+=PositionGetDouble(POSITION_PROFIT); } } } } return(pft); } //+------------------------------------------------------------------+
Habe ausprobiert und es funz.
Dieses EA ist Profitabel aber in realen Account nicht ausprobieren, weil Martingale ist eine gefährliche Sache!
Tipp: In W1 (Wochenchart) zu testen.
Gruß Igor
Hallo,
sowas findet man eigentlich nicht.
Und meistens wird ein Auftrag bei Freelance erteilt.
Nur Ihre Frage bezieht auf einen kleinen EA und daher eine kleine Hilfe von mir.
In Einstellungen von EA Orders setzen auf false stellen, wenn Sie nur Ihre Positionen managen möchten!
Hier kommt der Code: Kompilieren müssen Sie selbst.
Habe ausprobiert und es funz.
Dieses EA ist Profitabel aber in realen Account nicht ausprobieren, weil Martingale ist eine gefährliche Sache!
Tipp: In W1 (Wochenchart) zu testen.
Gruß Igor
Hallo Igor,
vielen Dank für Ihre Hilfe. Ich bekomme leider beim Kompilieren Fehlermeldungen (siehe Sreenshot) angezeigt, daher bitte ich Sie, mir Ihren Code direkt als EA anzufügen, das wäre sehr hilfreich.
Hallo Igor,
vielen Dank für Ihre Hilfe. Ich bekomme leider beim Kompilieren Fehlermeldungen (siehe Sreenshot) angezeigt, daher bitte ich Sie, mir Ihren Code direkt als EA anzufügen, das wäre sehr hilfreich.
Ich möchte noch fragen, ob der EA für MT4 ist? Denn ich benutze aktuell nur den MT4.

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo zusammen,
gibt es schon einen existierenden EA, der alle Sell-Trades schließen kann, wenn ein definierter Geldbetrag oder ein definierter Gewinn in Prozent erreicht ist? Und der auch das gleiche mit den Buy-Trades machen kann?
Es gibt zwar schon einen "Closing by Profit-EA", aber der schliesst dann alle Trades und ist nicht unterteilt in Sell-oder Buy-Trades.