Bitte editiere Deinen EA und poste den Code als Code mit Alt+S oder !
Thomas Aumayr:
opentrade.SellStop(Lots,prices, _Symbol, sls, tps, SchlussZeit, 0,"");
opentrade.SellStop(Lots,prices, _Symbol, sls, tps, SchlussZeit, 0,"");
Hallo,
Bei Problem Nummer 1 überprüfen Sie den letzten geschlossenen Order. Hier ist der Code:
static ENUM_POSITION_TYPE tipe_letzte_position=-1; for(int i=PositionsTotal()-1; i>=0; i--) // Gibt die Anzahl der aktuellen Positionen zurück if(tipe_letzte_position==POSITION_TYPE_BUY) { // Wenn letzte Order Buy war, BuyStop setzen }else if(tipe_letzte_position==POSITION_TYPE_SELL) { // Wenn letzte Order Sell war, SellStop setzzen }
Problem 2:
Erklären Sie bitte den Schwellenwert.
Gruß Igor
Igor Widiger #:
Danke für den Tipp, das werd ich heute gleich mal ausprobieren.Hallo,
Bei Problem Nummer 1 überprüfen Sie den letzten geschlossenen Order. Hier ist der Code:
Problem 2:
Erklären Sie bitte den Schwellenwert.
Gruß Igor
Zum Schwellenwert: Ich möchte versuchen, dass erst dann eine Stop Loss Linie eingefügt wird, wenn der Kurs einen bestimmten Wert vom Einstiegspreis über-bzw. unterschritten hat. Je nach dem ob Long oder Short Order ausgeführt wurde. Ich habe aber gestern noch gesehen, dass die erste for-Schleife mehrere Fehler hat und so, wie sie jetzt ist, gar nicht funktionieren kann.
Das werd ich auch heute versuchen auszubessern.
Thomas Aumayr #:
Danke für den Tipp, das werd ich heute gleich mal ausprobieren.
Danke für den Tipp, das werd ich heute gleich mal ausprobieren.
Zum Schwellenwert: Ich möchte versuchen, dass erst dann eine Stop Loss Linie eingefügt wird, wenn der Kurs einen bestimmten Wert vom Einstiegspreis über-bzw. unterschritten hat. Je nach dem ob Long oder Short Order ausgeführt wurde. Ich habe aber gestern noch gesehen, dass die erste for-Schleife mehrere Fehler hat und so, wie sie jetzt ist, gar nicht funktionieren kann.
Das werd ich auch heute versuchen auszubessern.
Hallo,
jetzt verstehe ich. (Schwellenwert ist der Breakeven).
// Schleife zur Aktivierung der Stop Loss Linie, wenn Schwellenwert überschritten wird for(int i=PositionsTotal()-1; i>=0; i--) // Gibt die Anzahl der offenen Positionen zurück if(m_position.SelectByIndex(i)) { double price_current = m_position.PriceCurrent(); double price_open = m_position.PriceOpen(); double stop_loss = m_position.StopLoss(); double take_profit = m_position.TakeProfit(); //--- if(m_position.Symbol()== _Symbol && m_position.Magic()==MeinRobi) { // Prüft nach Symbol und Magicnummer if(m_position.PositionType()==POSITION_TYPE_BUY) { double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits); // Define Bid if(stop_loss < price_open) { if(Bid > price_open + StopLossSchwellwert * _Point) m_trade.PositionModify(m_position.Ticket(),m_symbol.NormalizePrice(price_open),take_profit); } } else { double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits); // Define Ask if(stop_loss > price_open) { if(Ask < price_open - StopLossSchwellwert*_Point) m_trade.PositionModify(m_position.Ticket(),m_symbol.NormalizePrice(price_open),take_profit); } } } }
Hier ein kleines Beispiel des Breakeven.
Damit Schwellenwert funktioniert, setzen Sie bitte folgendes Code unter
#include <Trade/Trade.mqh>
#include <Trade/SymbolInfo.mqh>
CTrade m_trade;
CSymbolInfo m_symbol;
CPositionInfo m_position;
CHistoryOrderInfo m_history;
Gruß Igor
![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
Hallo, ich versuche nun schon seit knapp 2 Wochen einige Anpassungen an meinem EA vorzunehmen, schaffe es aber leider nicht so, wie ich mir das Vorstelle.
Dachte mir ich frag erst mal hier nach bevor ich einen Freelancer beauftrage. Vielleicht hat ja hier jemand eine Idee bzw. Vorschlag, mit dem ich weiter komme.
Mein EA platziert bei einer neuen Kerze eine Buy_Stop_Order und eine Sell_Stop_Order. Die Anzahl kann ich limitieren, damit nicht bei jeder Kerze neue Order platziert werden. Auch die Anzahl der offenen Positionen hab ich limitiert, sodass erst dann wieder neue Order platziert werden, wenn weniger offene Positionen im Konto sind, als ich eingestellt habe.
Erstes Problem: Wenn nun eine Order ausgeführt und dann geschlossen wird, platziert er wieder eine Buy_Stop_Order und eine Sell_Stop_Order. Eigentlich möchte ich nur diese Order wieder platzieren die nach dem Ausführen geschlossen wurde.
-Die Funktion ganz unten im Code die zur Zählung offener Positionen dienen soll, löst das Problem nicht.
Das zweite Problem habe ich mit der "for" Schleife zur Aktivierung der Stop-Loss Linie. Hier möchte ich erst dann eine Stop Loss aktivieren, wenn ein gewisser Schwellenwert überschritten ist. Das funktioniert eigentlich auch nicht wirklich, es wird zwar irgendwann die Stop Loss Linie auf den Schwellenwert angehoben, jedoch wird diese nicht automatisch nachgezogen, sondern bleibt immer bei diesem Wert stehen. Habe diese unten auskommentiert, da ich noch eine zweite "for" Schleife darunter, für den Trailing-Stop habe. Dieser funktioniert grundsätzlich. Wenn ich beide Schleifen aktiviere, wird aber die Stop-Loss Linie in beide Richtungen verschoben, was natürlich keinen Sinn macht. Außerdem fängt der visuelle Tester an irgeneinem Punkt zu spinnen an und wird extrem langsam.
Die dritte und letzte Anpassung die mir vorschwebt wäre, dass ich die Stop-Loss und Take-Profit Linien bei den Order-Typen als boolsche Variable zum ein-und ausschalten mache. Trades wüden dann immer über die Stop-Loss geschlossen sofern der Schwellenwert erreicht wird.
Mir ist klar dass das auch ein gewaltiges Risiko mitsichbringt, da es sein kann, dass er eine Order ausführt, den Schwellenwert nicht erreicht und ewig in die falsche Richtung laufen kann. In diesem Fall würd ich mir nen fetten Minus-Trade im Konto mitziehen. Testen würd ich das aber trotzdem gerne.
Ich würde mich sehr freuen wenn mir jemand helfen kann.
Hier mein aktueller Code den ich zur Zeit auf BRN und im Zeitraum von 26.12.2022 bis heute teste. (Timeframe = 1 Minute)
Falsch formatierter Code vom Moderator entfernt.