Event Window Manager
- Utilitys
- Version: 1.0
- Aktivierungen: 10
Event Window Manager liest den Wirtschaftskalender, der schon in deinem Terminal steckt, und öffnet ein Schutzfenster um wichtige Termine. Im Fenster kann er dich warnen, neue Trades sperren, Pending-Orders löschen und später wiederherstellen sowie Positionen schließen oder auf Break-even setzen. Deine anderen EAs können seinen Zustand über globale Variablen abfragen.
Er braucht keine DLL, keinen WebRequest und keine Webseite. Der Kalender kommt über die Verbindung zum Broker. Eine Instanz auf einem Chart deckt das ganze Konto ab, auch manuelle Trades und Trades anderer EAs.
Ich habe ihn geschrieben, weil ich einen Schalter für alle meine EAs wollte statt eines eigenen Nachrichtenfilters in jedem. Eine typische Einstellung: 15 Minuten vor und nach einem wichtigen Termin, neue Trades gesperrt, Pending-Orders gelöscht und nach dem Fenster wieder gesetzt.
Drei Probleme, die er löst
1. Trades, die direkt in die Nachrichten-Spitze laufen. Im aktiven Modus werden im Fenster eröffnete Positionen geschlossen und im Fenster platzierte Pending-Orders gelöscht.
2. Pending-Orders, die bei der Veröffentlichung auslösen. Sie werden bei Fensterbeginn gelöscht und können danach wieder gesetzt werden. Eine wiederhergestellte Order wird vorher geprüft. Passt der Kurs nicht mehr, wird sie verworfen und du bekommst einen Alarm.
3. Ein Nachrichtenfilter in jedem EA oder gar keiner. Deine eigenen EAs lesen NEWSFILTER_BLOCK und die Variablen je Währung, ein Werkzeug bedient alle.
Funktionsweise
1. Alle paar Minuten lädt der EA die Termine der nächsten Stunden aus dem Terminal-Kalender.
2. Er behält die Termine, die zu deinem Filter passen: Wichtigkeit, Währungen, Schlüsselwörter, Ignorier-Wörter und deine eigene Sperrliste.
3. Jeder Termin bekommt ein Fenster mit Minuten davor und danach, getrennt für hohe, mittlere und niedrige Wichtigkeit (Standard 15/15, 10/10, 5/5).
4. Solange ein Fenster für eine betroffene Währung offen ist, lautet der Status BLOCKED und die gewählten Aktionen laufen.
5. Wenn das Fenster endet, können gelöschte Pending-Orders neu gesetzt werden.
Welche Währungen zählen
- Automatisch: die Währungen aller offenen Positionen und Pending-Orders (Basis- und Gewinnwährung jedes Symbols) plus das Chart-Symbol. Eine Position in EURJPY betreffen Termine von EUR und JPY.
- Liste: nur die Währungen, die du einträgst.
- Alle: jede Währung.
Ein Magic-Filter schützt alles oder nur eine Strategie.
Terminfilter
- Wichtigkeit: hoch, mittel, niedrig, einzeln schaltbar.
- Schlüsselwörter wie NFP, CPI, FOMC, GDP. Modus: aus, zusätzlich (ein Schlüsselwort-Termin zählt auch unter deiner Wichtigkeitsstufe) oder nur Schlüsselwörter.
- Ignorier-Wörter: passende Termine werden übersprungen.
- Eigene Sperrliste: feste Zeiten in Serverzeit für Dinge, die nicht im Kalender stehen, Format YYYY.MM.DD HH:MM CUR [Minuten]. ALL sperrt jedes Symbol.
- Feiertage und Termine ohne genaue Uhrzeit werden übersprungen.
Aktionen im Fenster (Modus Active)
- Neue Trades sperren: Im Fenster eröffnete Positionen werden geschlossen, im Fenster platzierte Pending-Orders gelöscht. Das gilt auch für Positionen, die eine Pending-Order im Fenster auslöst.
- Pending-Orders: bei Fensterbeginn löschen, am Ende optional wiederherstellen.
- Offene Positionen bei Fensterbeginn: in Ruhe lassen, alle schließen, Gewinner auf Break-even, Gewinner behalten und Verlierer schließen, oder Gewinner auf Break-even und Verlierer schließen. Gewinner und Verlierer werden mit Gewinn plus Swap gemessen.
- Bereich: nur betroffene Symbole oder alle Symbole.
- Modus Warn only: keine Handelsaktion. Alarme, Panel und globale Variablen laufen weiter.
Stop-Level und Freeze-Level werden beim Break-even beachtet. Je Symbol wird der passende Füllmodus versucht. Anfragen, die aus kurzem Grund scheitern (Requote, Preis geändert, Timeout), werden wiederholt. Jede abgelehnte Anfrage steht mit ihrem Rückgabecode im Experts-Log.
Für deine eigenen EAs
Globale Variablen, terminalweit:
- NEWSFILTER_BLOCK: 1, solange ein Fenster für eine betroffene Währung offen ist, sonst 0.
- NEWSFILTER_BLOCK_USD, NEWSFILTER_BLOCK_EUR usw.: je Währung, für jede Währung mit einem Termin im geladenen Bereich.
- NEWSFILTER_NEXT: Serverzeit vom Ende des offenen Fensters oder vom Beginn des nächsten.
- NEWSFILTER_SECONDS: Sekunden bis zum nächsten Fenster (0 im Fenster, -1 wenn keines).
- NEWSFILTER_ALIVE: Herzschlag in lokaler Zeit. Ist er älter als 10 Sekunden, läuft der Filter nicht.
Beispiel für deinen EA:
bool NewsBlocked(string sym)
{
if(!GlobalVariableCheck("NEWSFILTER_ALIVE") ||
TimeLocal()-(datetime)GlobalVariableGet("NEWSFILTER_ALIVE") > 10) return false;
string b=SymbolInfoString(sym,SYMBOL_CURRENCY_BASE);
string p=SymbolInfoString(sym,SYMBOL_CURRENCY_PROFIT);
return GlobalVariableGet("NEWSFILTER_BLOCK_"+b)>0 ||
GlobalVariableGet("NEWSFILTER_BLOCK_"+p)>0;
}
// in OnTick: if(NewsBlocked(_Symbol)) return;
Gib in der ersten Zeile true statt false zurück, wenn dein EA stillstehen soll, solange der Filter nicht läuft. Wird der EA entfernt, gehen alle Werte auf 0 zurück.
Panel
Dunkles Panel mit Status-Badge (FREE, SOON, BLOCKED), Countdown bis zum Ende des offenen oder bis zum nächsten Fenster, Liste der kommenden Termine (Farbe der Wichtigkeit, Währung, Name, Serverzeit und deine lokale Zeit), aktive Aktionen, Kalenderstatus, Wert von NEWSFILTER_BLOCK und eine Taste für die manuelle Sperre. SOON heißt: Ein Fenster beginnt innerhalb von 30 Minuten. Ein Klick auf die Kopfzeile klappt das Panel ein. Deutsch oder Englisch, Skalierung 0,6 bis 1,8.
Die Terminnamen kommen aus dem Kalender deines Brokers und können deshalb in einer anderen Sprache erscheinen als das Panel.
Alarme
Ein Alarm vor jedem Termin (Minuten einstellbar, einmal je Termin) und eine Meldung für jede Aktion: Fenster offen, Trade geschlossen, Order gelöscht, Order wiederhergestellt, Break-even gesetzt, Fenster vorbei. Alarmfenster, Ton und Push sind einzeln schaltbar.
Schnellstart
1. EA an einen Chart hängen und Algo-Handel erlauben.
2. Die ersten Tage den Modus Warn only lassen und das Panel beobachten. Die Terminzeiten einmal mit deinem Broker vergleichen.
3. Auf Active protection umstellen und die Aktionen wählen.
4. Optional die Funktion NewsBlocked in deine eigenen EAs einbauen.
Häufige Fragen
Eröffnet er Trades?
Nein.
Wie genau ist er?
So genau wie der Kalender, den dein Broker liefert. Terminzeiten, Wichtigkeit und Vollständigkeit können sich zwischen Brokern unterscheiden. Ein Nachrichtenfilter kann Slippage, Kurslücken oder eine unterbrochene Verbindung nicht verhindern.
Läuft er im Strategietester?
Nein, dort gibt es den Kalender nicht. Das Panel zeigt "Tester: calendar not available". Für die automatische Market-Prüfung eröffnet und schließt er im Tester einen Demo-Trade mit Mindestgröße. Dieser Code läuft nie auf einem Demo- oder Live-Chart.
Was passiert mit gelöschten Pending-Orders, wenn ich das Terminal im Fenster neu starte?
Sie liegen nur im Speicher und werden nicht neu gesetzt. Das gilt auch, wenn du den EA im Fenster entfernst.
Was, wenn ich den EA mitten im Fenster neu starte?
Bestehende Positionen gelten als älter als das Fenster, die Aktion bei Fensterbeginn läuft für sie noch einmal.
Handelsbedingungen
Jedes Symbol und jeder Zeitrahmen, Hedging- und Netting-Konten, nur ein Chart. Der Kalender braucht ein verbundenes Terminal. Schließen und Löschen braucht einen offenen Markt. Solange ein Fenster offen ist, wiederholt der EA jede Sekunde.
Wichtig
Der Handel birgt ein hohes Verlustrisiko. Das Werkzeug verringert das Risiko rund um Termine, verspricht aber kein Ergebnis.
Eingabeparameter
Die Namen der Eingaben sind im Programm englisch. Gruppen: Event filter (hoch an, mittel und niedrig aus, Währungsmodus, Währungsliste, Schlüsselwörter, Ignorier-Wörter, eigene Sperrliste, 48 Stunden voraus, Aktualisierung alle 5 Minuten), Window (15/15, 10/10, 5/5 Minuten), Protection (Modus, Bereich, Magic-Filter, Sperren, Löschen, Wiederherstellen, Aktion für offene Positionen, Break-even-Versatz), Alerts (30 Minuten vorher, Fenster, Ton, Push), Panel (Sprache, Position, Skalierung, 8 Termine in der Liste, eingeklappt starten).

