Diskussion zum Artikel "Verwendung des MQL5-Wirtschaftskalenders zur Nachrichtenfilterung (Teil 2): Verwaltung von Stopps offener Positionen während Nachrichtenereignissen"
So möchte ich diese Funktionen nutzen:
Ich beabsichtige, den Artikel „Teil 1 – Verhindern der Eröffnung neuer Trades oder des Schließens bestehender Trades während des eingeschränkten Nachrichtenfensters“ auf alle meine EAs anzuwenden, die ich bei Prop-Firmen laufen habe.
Teil 2 und Teil 3 – das Entfernen von SL/TP und das anschließende Ersetzen von SL/TP vor bzw. nach dem eingeschränkten Nachrichtenfenster – möchte ich jedoch in einem separaten EA verwenden. Da dieser Code alle offenen Positionen des Kontos durchläuft, habe ich möglicherweise mehr als ein Chart geöffnet und möchte diesen Vorgang nicht öfter als nötig ausführen. Ich werde die Symbolauswahl manuell auf „USD, GBP, EUR“ festlegen, da dies die einzigen Nachrichten im roten Ordner sind, von denen ich aus Erfahrung weiß, dass ich sie bereits herausfiltern muss (bei dir wird das anders sein).
Daher habe ich eine einzeilige Änderung an der Funktion „RestoreStops()“ vorgenommen.
Die Funktion „SuspendStops()“ musste nicht geändert werden.
So wie es aussieht, muss ich an Teil 3 nichts ändern, da ich lediglich die Ticketnummer, SL und TP benötige.
Vielen Dank, @Solomon Anietie Sunday
Ich werde es live auf dem Demokonto testen!
// I won't need this if statement, in the 2nd EA, as the 2nd EA only modifies trades,
// only need this is statement in the first EA (that opens trades)
if(!CanOpenNewTrade(_Symbol))
return; //+------------------------------------------------------------------+ //| Wiederaufnahme der Sendepausen nach den Nachrichten (bearbeiteter Artikel – siehe Original) | //+------------------------------------------------------------------+ bool RestoreStops(ulong ticket, double sl, double tp) { if (!PositionSelectByTicket(ticket)) return(false); string symbol= PositionGetString(POSITION_SYMBOL); // Die ursprüngliche Variable „_Symbol“ wurde durch „symbol“ ersetzt ENUM_POSITION_TYPE type = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); double price = (type == POSITION_TYPE_BUY) ? SymbolInfoDouble(symbol, SYMBOL_BID) : //z. B. „_Symbol“ heißt nun „symbol“ SymbolInfoDouble(symbol, SYMBOL_ASK); double point = SymbolInfoDouble(symbol, SYMBOL_POINT); double minStopDist = SymbolInfoInteger(symbol, SYMBOL_TRADE_STOPS_LEVEL) * point; // Sicherheitsprüfung: Wenn der Kurs die gespeicherten SL/TP-Werte überschritten hat, passe sie auf ein gültiges Niveau an if(type == POSITION_TYPE_BUY) { if(sl != 0 && price <= sl) sl = price - minStopDist; if(tp != 0 && price >= tp) tp = price + minStopDist; } else // VERKAUFEN { if(sl != 0 && price >= sl) sl = price + minStopDist; if(tp != 0 && price <= tp) tp = price - minStopDist; } // Vollständige Wiederherstellung der Register if(trade.PositionModify(ticket, sl, tp)) { PrintFormat("Restored SL/TP for #%I64u | SL=%.5f, TP=%.5f", ticket, sl, tp); return true; } else { PrintFormat("Failed to restore SL/TP for #%I64u | Error=%d", ticket, GetLastError()); return false; } }
- 2026.02.18
- www.mql5.com
- 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.
Neuer Artikel Verwendung des MQL5-Wirtschaftskalenders zur Nachrichtenfilterung (Teil 2): Verwaltung von Stopps offener Positionen während Nachrichtenereignissen :
Das Ziel von Teil 2 ist klar definiert: Stop-Loss- und Take-Profit-Werte sollen während des Sperrfensters rund um Nachrichten vorübergehend ausgesetzt und nach Ablauf dieses Nachrichtenfensters sicher wiederhergestellt werden.
Dieser Ansatz versucht nicht, die Marktrichtung auf Basis der Nachrichten zu interpretieren. Er verhindert lediglich vorzeitige Stop-outs, die durch außergewöhnliche Marktbedingungen verursacht werden.
Grundsätze der Stop-Wiederherstellung
Die Wiederherstellungslogik ist deterministisch:
Dies gewährleistet:
Der Mechanismus basiert weiterhin auf Regeln.
Autor: Solomon Anietie Sunday