GapHunter EA - Gap Trading Expert Advisor für MT5
Übersicht
GapHunter EA ist ein automatisiertes Handelssystem für MetaTrader 5, das sich auf den Handel mit Kurslücken bei Markteröffnung spezialisiert hat. Der EA vergleicht den D1-Schlusskurs des Vortages mit dem Eröffnungskurs der aktuellen Sitzung, und wenn eine Lücke ausreichender Größe erkannt wird, geht er sofort einen Handel in Richtung der Lückenfüllung ein (d.h. in der Erwartung, dass der Kurs auf das vorherige Schlussniveau zurückkehrt).
Gap-Fills sind ein gut dokumentiertes Marktphänomen: Statistischen Untersuchungen zufolge, die sich auf 797 Wochen (2010-2025) erstrecken, werden Wochenend-Gaps bei den wichtigsten Devisenpaaren in etwa 65-80 % der Fälle geschlossen, häufig innerhalb der ersten Stunden der Handelssitzung.
Schlüsselprinzip: Der EA wartet NICHT darauf, dass ein Balken geschlossen wird, um eine Lücke zu erkennen. Die Erkennung erfolgt beim allerersten Tick mit einem akzeptablen Spread nach Eröffnung der Sitzung - dies gewährleistet den schnellstmöglichen Einstieg.
Hauptmerkmale
- Sofortige Gap-Erkennung - vergleicht prevDayClose mit dem aktuellen Bid/Ask beim ersten Tick, kein Bar-Close erforderlich
- Session-aware - liest Broker-Handels-Sessions direkt aus der MT5-Symbol-Spezifikation über SymbolInfoSessionTrade, keine manuellen Zeiteinstellungen erforderlich
- Virtual Breakeven (VBE) - verschiebt SL bis zum Breakeven nur im Speicher und vermeidet so die Beschränkungen der Broker-Stop-Ebene bei kleinen Abständen
- Partial Close - schließt einen Teil der Position bei einem konfigurierbaren Prozentsatz des Weges zum TP und sichert den Gewinn, während der Handel offen bleibt
- 4 Take Profit-Modi - Gap Fill, Fixpunkte, ATR-basiert, Auto S/R Level
- 3 Stop-Loss-Modi - keine, feste Punkte, ATR-basiert
- Filter für den Wochentag - Handel an allen Tagen, nur Montag (Gaps am Wochenende) oder Montag auslassen
- Reinvestitionsmodus - skaliert automatisch die Losgröße, wenn die freie Marge wächst
- Automatisches Lot nach Risikoprozent - berechnet das Lot basierend auf dem SL-Abstand und dem Risikoprozentsatz des Saldos
- Margin-Prüfung - prüft immer die verfügbare freie Margin vor der Eröffnung, bricht den Handel mit einer Protokollmeldung ab, wenn sie nicht ausreicht
- Universelle Erkennung des Füllmodus - wählt automatisch FOK, IOC oder RETURN auf der Grundlage der Brokerspezifikation
- Absturzsichere Wiederherstellung des Zustands - alle Zustände werden im Speicher gespeichert; nach einem Neustart (Verbindungsverlust, TF-Änderung, Neukompilierung) erholt sich der EA von den Terminaldaten ohne Dateien
- Erzwungenes Schließen nach Zeitplan - schließt die Position zu einer konfigurierbaren Serverzeit (z.B. Ende des Handelstages)
- 1-Trade-per-Session-Disziplin - Gap wird genau einmal pro Session geprüft; keine Re-Entries
Eingabe-Parameter
Info einstellen
| Parameter | Voreinstellung | Beschreibung |
| EinstellungInfo | "" | Freitextbezeichnung für diesen Parametersatz. Nur informativ - hat keinen Einfluss auf die Handelslogik. Nützlich zur Identifizierung von Konfigurationen in Screenshots oder Berichten. |
Lücken-Einstellungen
| Parameter | Standard | Beschreibung |
| MinGapPoints | 100 | Mindestgröße des Gaps in Punkten, um einen Handel auszulösen. Gaps, die kleiner als dieser Wert sind, werden als Marktrauschen ignoriert. |
| MaxSpreadPoints | 20 | Maximal zulässiger Spread in Punkten zum Zeitpunkt des Einstiegs. Wenn der Spread größer ist, wartet der EA auf den nächsten Tick. Dies ist der einzige "Pausen"-Mechanismus - keine Timer-basierte Verzögerung. |
| GapWindowMinutes | 120 | Wie viele Minuten nach Eröffnung der Sitzung der EA noch einen Einstieg in Betracht zieht. Bleibt der Spread länger als dieses Fenster weit, wird die Sitzung übersprungen. |
| DayFilter | DAY_ALL | DAY_ALL - Handel mit Gaps an jedem Tag. DAY_MONDAY_ONLY - handelt nur Montags-Gaps (die über das Wochenende gebildet wurden; statistisch gesehen die höchste Füllrate). DAY_SKIP_MONDAY - Handel mit Gaps innerhalb der Woche, Überspringen des Montags. |
Gewinnmitnahme / Stop Loss
| Parameter | Voreinstellung | Beschreibung |
| TPModus | TP_GAP_FILL | TP_GAP_FILL - TP-Order platziert auf prevDayClose-Niveau + manuelle Tick-by-Tick-Prüfung als Backup. TP_FIXED_POINTS - fester Abstand in Punkten. TP_ATR_RR - ATR × ATR_TP_Multiplikator. TP_AUTO_LEVEL - nächstgelegenes Swing-Hoch/Tief auf AtrTimeframe; fällt auf Gap-Fill zurück, wenn kein Level gefunden wird. |
| SLModus | SL_ATR | SL_NONE - kein Stop-Loss (mit VBE zum Schutz verwenden). SL_FIXED_POINTS - fester Abstand. SL_ATR - ATR × ATR_SL_Multiplikator . |
| TP_Punkte | 150 | TP-Abstand in Punkten. Wird nur verwendet, wenn TPMode = TP_FIXED_POINTS . |
| SL_Punkte | 75 | SL-Abstand in Punkten. Wird nur verwendet, wenn SLMode = SL_FIXED_POINTS . |
| AtrTimeframe | PERIOD_D1 | Für die ATR-Berechnung und die automatische S/R-Level-Suche verwendeter Zeitrahmen. |
| ATR_Periode | 14 | Zeitraum des ATR-Indikators. |
| ATR_TP_Multiplikator | 2.0 | ATR wird mit diesem Wert multipliziert, um den TP-Abstand zu erhalten. |
| ATR_SL_Multiplikator | 1.0 | ATR wird mit diesem Wert multipliziert, um den SL-Abstand zu erhalten. |
| AutoLevel_LookbackBars | 100 | Anzahl der Bars, die bei der Suche nach dem nächstgelegenen Swing High/Low für Auto TP zurückgeblickt werden. |
| AutoLevel_MinDistPts | 20 | Mindestabstand in Punkten vom aktuellen Kurs zum gefundenen S/R-Level. Niveaus, die näher als dieser Wert liegen, werden ignoriert. |
Teilweiser Abschluss
| Parameter | Voreinstellung | Beschreibung |
| UsePartialClose | true | Teilweises Schließen aktivieren oder deaktivieren. |
| PC_TriggerPct | 50.0 | Wenn der Kurs diesen Prozentsatz der Strecke vom Entry zum TP zurückgelegt hat, wird ein Partial Close ausgelöst. Beispiel: Einstieg bei 1.1000, TP bei 1.1100 → Auslösung bei 50% = 1.1050. |
| PC_VolumenPkt | 50.0 | Prozentsatz des Volumens der aktuellen Position, um beim Trigger-Level zu schließen. Beispiel: 0,02 Lot Position, 50% → Schließen 0,01, Halten 0,01. Der Rest wird mit VBE und TP fortgesetzt. Wird genau einmal pro Handel ausgelöst. |
Virtueller Breakeven
| Parameter | Standardwert | Beschreibung |
| UseVirtualBE | wahr | Aktivieren oder deaktivieren Sie den virtuellen Break-Even. |
| VBE_ActivationPct | 50.0 | Prozentualer Anteil des Weges vom Entry bis zum TP, bei dem der VBE-Level gesetzt wird. Kann gleich PC_TriggerPct sein - partieller Close wird zuerst ausgelöst, dann wird VBE für den Rest aktiviert. |
| VBE_Ausgleichspunkte | 5.0 | Punkte, die zum Einstiegskurs addiert (BUY) oder von ihm subtrahiert (SELL) werden, um Spread- und Provisionskosten zu decken. Setzen Sie dies auf: Spread in Punkten + (Kommission pro Lot × 2) umgerechnet in Punkte. Beispiel: 2 pt Spread + 1,5 pt Provision pro Weg = 5 Punkte. |
So funktioniert die VBE:
- Es wird kein physischer SL bewegt. Der EA speichert das Breakeven-Level im Speicher.
- KAUFEN: VBE level = open_price (Ask) + VBE_CompensationPoints × point - überwacht Bid
- SELL: VBE level = open_price (Bid) - VBE_CompensationPoints × point - überwacht Ask
- Wenn der Preis auf das VBE-Level zurückkehrt, schließt der EA die Position manuell über eine Market Order.
- Nach jedem Neustart des EA (Verbindungsverlust, TF-Änderung, Neukompilierung) wird der VBE neu aktiviert: Der EA wartet, bis der Preis den Schwellenwert wieder erreicht hat, bevor er aktiviert wird. Dies ist sicherer, als den aktuellen Kontext zu erraten.
Geld-Management
| Parameter | Standard | Beschreibung |
| LosGröße | 0.01 | Feste Losgröße. Wird verwendet, wenn UseAutoLot = false . Dient auch als Basislos für die Reinvestitionsskalierung. |
| UseAutoLot | falsch | Automatische Berechnung des Lots auf der Grundlage von Risikoprozent und SL-Abstand. Erfordert SLMode ≠ SL_NONE . |
| RisikoProzentsatz | 1.0 | Risiko pro Handel als Prozentsatz des Kontostandes. Wird nur verwendet, wenn UseAutoLot = true . |
| UseReinvest | falsch | Aktiviert den Reinvestitionsmodus. Multipliziert das Lot mit floor(FreeMargin / StartDeposit) . |
| StartEinlage | 1000.0 | Referenzbetrag der freien Marge. Wenn sich die freie Marge verdoppelt, verdoppelt sich das Lot. Der Multiplikator ist immer ≥ 1 - das Lot fällt beim Drawdown nie unter die Basis. Kompatibel mit den Modi fixed und auto lot. |
Sitzung schließen
| Parameter | Standard | Beschreibung |
| ForceCloseHour | 22 | Serverzeit Stunde für erzwungenes Schließen der Position. Zum Deaktivieren auf 0 setzen (zusammen mit Minute). |
| ForceCloseMinute | 0 | Serverzeit Minute für das erzwungene Schließen der Position. |
System
| Parameter | Voreinstellung | Beschreibung |
| MagischeZahl | 77701 | Eindeutiger Bezeichner für die Positionen dieses EAs. Verwenden Sie unterschiedliche Werte, wenn mehrere Instanzen laufen. Auch im Bestellkommentar enthalten: "GapHunter v2.5 #77701" . |
| AusrutscherPunkte | 10 | Maximale Preisabweichung (Slippage), die bei der Ausführung einer Market Order zulässig ist. Wenn der Broker innerhalb dieser Spanne nicht ausfüllen kann, wird die Order abgelehnt. Für den Gap-Handel zu Sitzungsbeginn (größere Spreads, geringere Liquidität) wird für die wichtigsten Paare ein Wert von 15-30 Punkten empfohlen. |
Wie es funktioniert - Schritt für Schritt
- Session opens - SymbolInfoSessionTrade erkennt die neue Broker-Session für das aktuelle Symbol und den aktuellen Tag.
- Tagesfilter - wenn DayFilter den heutigen Tag ausschließt, wird die Sitzung sofort übersprungen.
- Spread-Check - beim ersten Tick mit Spread ≤ MaxSpreadPoints fährt der EA fort. Keine Timer-Wartezeit.
- Gap-Erkennung - prevDayClose = D1 Close[1] wird mit dem aktuellen Bid (für Gap Up) oder Ask (für Gap Down) verglichen. Wenn die Lücke ≥ MinGapPoints ist, wird sofort ein Handel eröffnet. Wenn kein Gap vorhanden ist, wird die Sitzung als beendet markiert, kein Wiedereinstieg.
- Handelsmanagement - der EA überwacht die offene Position jeden Tick:
- Partial Close feuert bei PC_TriggerPct % des Pfades
- VBE wird bei VBE_ActivationPct % aktiviert und geschlossen, wenn der Preis auf das BE-Niveau zurückfällt
- Gap Fill (TP_GAP_FILL): manuelles Schließen, wenn Bid/Ask prevDayClose erreicht
- Force Close - bei ForceCloseHour:ForceCloseMinute werden alle eigenen Positionen geschlossen
- Neue Sitzung - der Status wird bei der nächsten Öffnung der Sitzung automatisch zurückgesetzt
Beispiele für die Verwendung
Beispiel 1 - Konservativ (Montags-Gaps, Gap Fill TP, ATR SL, VBE-Schutz)
DayFilter = DAY_MONDAY_ONLY MinGapPoints = 150 MaxSpreadPoints = 15 TPMode = TP_GAP_FILL SLMode = SL_ATR ATR_Period = 14 ATR_SL_Multiplier = 1.0 UseVirtualBE = true VBE_ActivationPct = 50 VBE_CompensationPoints = 5 UsePartialClose = true PC_TriggerPct = 50 PC_VolumePct = 50 LotSize = 0.01 ForceCloseHour = 22
Am besten geeignet für: EURUSD, GBPUSD, USDCHF am Montagmorgen.
Beispiel 2 - Ausgewogen (alle Tage, ATR TP und SL, Teilschluss)
DayFilter = DAY_ALL MinGapPoints = 100 TPMode = TP_ATR_RR ATR_TP_Multiplier = 2.0 SLMode = SL_ATR ATR_SL_Multiplier = 1.0 UsePartialClose = true PC_TriggerPct = 50 PC_VolumePct = 50 UseVirtualBE = true VBE_ActivationPct = 60 UseAutoLot = true RiskPercent = 1.
0
Beispiel 3 - Reinvestitionsmodus (wachsendes Konto)
LotSize = 0.01 UseReinvest = true StartDeposit = 500.0 // Freie Marge $500 -> Lot 0.01, $1000 -> Lot 0.02, $1500 -> Lot 0.03, etc.
Wichtige Hinweise
- Der EA ist darauf ausgelegt, eine Instanz pro Chartsymbol auszuführen. Verwenden Sie separate Charts für jedes Instrument.
- Hängen Sie den EA an einen beliebigen Zeitrahmen an - er verwendet nicht den Zeitrahmen des Charts für die Gap-Erkennung (immer D1).
- Nach jedem Neustart (Verbindungsverlust, Neukompilierung, TF-Änderung) stellt der EA automatisch seinen Zustand aus den offenen Positionen im Terminal wieder her. Es werden keine Dateien geschrieben.
- Das Orderkommentarformat ist "GapHunter v2.5 #<MagicNumber>", wodurch Positionen in der Historie und in Berichten identifizierbar sind.
- Überprüfen Sie für den Gap-Handel immer die Session-Open-Zeiten des Brokers in der Symbol-Spezifikation. Der EA liest diese automatisch.
Empfohlene Symbole (Forex)
| Vorrangig | Symbole | Grund |
| ⭐⭐⭐⭐⭐ | EURUSD, GBPUSD, USDCHF | Höchste Gap-Füllungsrate (~75-80%), enge Spreads |
| ⭐⭐⭐⭐ | USDJPY, AUDUSD | Gute Auffüllungsrate, moderate Volatilität |
| ⭐⭐⭐ | USDCAD, NZDUSD, EURJPY | Akzeptable Auffüllungsrate, größere Lücken |
| ⭐⭐ | GBPJPY, XAUUSD | Große Lücken, aber weniger vorhersehbares Füllen |