Spezifikation
Ich suche einen erfahrenen MQL5-Entwickler, idealerweise deutschsprachig, für die Entwicklung eines Expert Advisors (EA) für den MetaTrader 5.
Lastenheft – GoldRush EA Entwicklung
1. Projektbezeichnung
Kurzbeschreibung
Ziel ist ein Expert Advisor für MT5, der automatisiert tägliche Gold-Trades ausführt (Buy 09:00, Sell 19:00) mit flexibler Zeitsteuerung, CSV-Ausgabe und visuellem Monitoring im Chart. Besonderes Augenmerk liegt auf exakter Protokollierung und Backtest-Analyse über mehrere Jahre zur Wochentagsbewertung. Alle Sessions (Tag/Nacht/Wochenende) sind einzeln aktivierbar und optimierbar.
Ich bin deutscher Muttersprachler und bevorzuge daher die Zusammenarbeit mit einem deutschsprachigen Entwickler, da mir viele Begriffe der englischen Fachsprache im Bereich MQL5/Trading nicht vollständig geläufig sind.
- Night-Sessions (21:45–09:00) sollen grundsätzlich implementiert, aber über Input-Parameter individuell deaktivierbar sein.
- Erweiterte Debug-Ausgaben im Journal: Wo wird die hingeschrieben die Datei festlegen
- Einstieg (Buy) täglich um 09:00 Uhr (Tag-Session), wenn aktiviert: Uhrzeit so einstellen das ich sie verändern kann
- Ausstieg (Sell) derselben Position am selben Tag um 19:00 Uhr: Uhrzeit so einstellen das ich sie verändern kann
- Sessions steuerbar über Parameter (EnableMondayDay, EnableTuesdayDay, ...): Jeden Tag muss ich gesondert aktivieren und deaktivieren können
2. Zielsetzung
Ziel ist die Entwicklung eines voll funktionsfähigen Expert Advisors für den MT5, der:
- Tag- und Nacht-Sessions können getrennt aktiviert und individuell zeitlich konfiguriert werden (z. B. Montag 09:00–19:00 und Montag Nacht 21:45–08:45)
- alle Transaktionen und Gewinne/Verluste in einer CSV-Datei dokumentiert
- zusätzlich unabhängig vom Trading regelmäßig den Goldpreis in einer CSV-Datei protokolliert
- eine visuelle Anzeige des Status und PnL im Chart ermöglicht
- Die CSV-Dateien enthalten zusätzlich auch den Stand des Kontos (Balance) und das laufende Kapital (Equity) bei jedem Trade.
· Der EA schreibt zwei getrennte CSV-Dateien:
(1) GOLD_log_full.csv – enthält ausschließlich durchgeführte Trades inklusive Zeit, Preis, Gewinn/Verlust, Kontostand etc.
(2) GOLD_price_log.csv – enthält alle 15 Minuten die Kursentwicklung (Ask/Bid), unabhängig davon, ob ein Trade stattfindet.
3. Anforderungen – Logging
3.1 Trading-Logik
Für jede Tages-Session (z. B. Montag Day) gilt:
Ein Trade darf nur dann eröffnet werden, wenn folgende Bedingungen erfüllt sind:
• Die Session ist aktiviert ( EnableMondayDay = true)
• Die aktuelle Uhrzeit entspricht dem definierten Einstieg ( EntryHourMonday : EntryMinuteMonday)
Ein Trade wird nur geschlossen, wenn:
• Eine Position offen ist
• Und die aktuelle Uhrzeit dem definierten Ausstieg entspricht ( ExitHourMonday : ExitMinuteMonday)
Wenn EnableMondayDay = false, wird an diesem Tag kein Handel durchgeführt, auch wenn Uhrzeiten konfiguriert sind.
Diese Logik gilt entsprechend auch für:
• Alle anderen Wochentage ( EnableTuesdayDay, EnableWednesdayDay, ...)
• Alle Nacht-Sessions ( EnableMondayNight, EnableTuesdayNight, ...)
Nur eine Position gleichzeitig wird gehalten. Doppelte oder parallele Orders sind nicht zulässig.
„Die nachfolgenden Tabellen definieren für jede Session den Aktivierungsstatus und die individuell einstellbare Handelszeit. Der EA darf nur handeln, wenn die jeweilige Session aktiviert ist.“
Siehe Anlage Tabelle: Tag-Handel (09:00–19:00)
Siehe Anlage Tabelle: Nacht-Handel (21:45–09:00)
3.2 Logging – CSV-Datei (GOLD_log_full.csv)
- Jeder Trade-Eintrag enthält:
· Trade-ID oder Session-Kennung für Zuordnung (optional)
· Datum/Uhrzeit
· Aktion: BUY oder SELL
· Preis
· Volumen
· Gewinn/Verlust (EUR)
· Session-Namen (z. B. Day_Monday)
· Kontostand (Balance)
· Kapital (Equity)
· CSV-Dateien werden nicht überschrieben, sondern fortlaufend ergänzt (Append-Modus)
· Excel-Schnittstelle: Export-kompatible CSV-Struktur zur automatisierten Auswertung
· „Die Datei GOLD_log_full.csv wird im Common-Folder (FILE_COMMON) gespeichert und enthält alle abgeschlossenen Trades.“
3.21 CSV-Tagessummary:
Zusätzlich zur Log-Datei soll eine zweite CSV-Datei (summary_by_day.csv) erzeugt werden, die alle Trades gruppiert nach Wochentag auswertet.
Die Datei enthält:
- Anzahl der Trades pro Wochentag
- Gesamtgewinn/-verlust
- Trefferquote
- Optional: Maximaler Drawdown pro Tag
3.22 Monatliche Filter für Saisonalität
Der Expert Advisor soll es ermöglichen, Trades auf Monatsbasis zu aktivieren oder deaktivieren, und zwar getrennt für Tages- und Nacht-Sessions. Das dient der Berücksichtigung von saisonalen Mustern im Goldmarkt (z. B. durch externe Tools wie Seasonax oder manuelle Backtests).
Für jeden Monat soll konfigurierbar sein:
Siehe Anlage Tabelle: Monate ausblenden Kein Handel
Umsetzung:
- Zwei Boolean-Arrays im Code: EnableMonthDay[12] und EnableMonthNight[12]
- Im OnTick() wird geprüft, ob der aktuelle Monat für die entsprechende Session erlaubt ist
- Trades außerhalb der erlaubten Monate werden nicht eröffnet
3.3 Preisaufzeichnung – CSV-Datei (gold_price_log.csv)
- Alle 15 Minuten wird der aktuelle Ask/Bid-Preis geloggt
- Auch wenn kein Trade stattfindet soll der Preis geloggt werden
- „Diese Datei dient zur Analyse der Marktstruktur und Volatilität – unabhängig vom aktiven Handel.“
- Format:
Zeit,Ask,Bid
2025.04.12 09:00,2327.45,2326.90
2025.04.12 09:15,2328.30,2327.75
3.4 Visuelle Darstellung im Chart
- Anzeige des aktuellen Gesamtgewinns als Label (oben links)
- Gewinn/Verlust einzelner Trades als Text im Chart (farblich kodiert)
- Optional: Einstieg/Ausstieg durch Pfeile
- Tradeverlauf durch Verbindungslinien (ObjArrow) sollen ausschließlich denTrade-Zeitraum darstellen. Diese Linien sollen nur vom Einstieg bis zum tatsächlichen Exit des Trades reichen. Überlappende oder unvollständige Linien (z. B. über mehrere Tage hinweg) sollen vermieden werden.
3.5 Fehlerbehandlung / Debugging
- Log-Einträge bei Fehlschlägen (z. B. SELL_FAIL)
- Erweiterte Debug-Ausgaben im Journal
- Die Debug-Ausgaben sollen optional durch eine boolesche Variable ( EnableDebugLog) aktiviert/deaktiviert werden können, um das Journal nicht unnötig zu füllen.
- CSV-Dateien sollen nicht überschrieben, sondern ergänzt werden
4. Technische Rahmenbedingungen
- Programmiersprache: MQL5
- Plattform: MetaTrader 5
- Broker: ActivTrades, Symbol: "GOLD" oder "XAUUSD"
- Das gehandelte Symbol (z. B. GOLD, SILBER, DAX) soll über den Parameter TradeSymbolfrei wählbar sein.
- Kompatibilität mit dem Strategietester
- Speicherung der Log-Dateien im Common-Folder (FILE_COMMON)
5. Optionale Erweiterungen
- Optimierbare Inputs: Uhrzeiten, Lots, Session-Aktivierung im Strategietester als Inputs steuerbar
- Visueller Vergleich im Tester: Möglichkeit, Performance nach Wochentagen (Mon–Fr) zu vergleichen
6. Optimierbare Parameter (Inputs)
Damit die oben beschriebenen Sessions im Strategietester individuell geprüft werden können, sollen alle Tagesaktivierungen und Uhrzeit-Einstellungen als input-Parameter im EA deklariert werden. Dies betrifft insbesondere: · EnableMondayDay bis EnableFridayDay · EntryHourMonday bis EntryHourFriday · ExitHourMonday bis ExitHourFriday · sowie Lots als Handelsvolumen · „Lots: Handelsvolumen pro Trade. Beispiel: 0.01 entspricht einem Mikro-Lot.“ |
|
|
7. Equity-Schutz (optional aktivierbar)
Der EA soll bei Erreichen eines definierten Verlusts (z. B. -200 € oder -10 %) automatisch alle offenen Positionen schließen und den Handel stoppen. Die Schwellenwerte sind als Parameter definierbar ( EquityStopLoss_EUR, EquityDrawdown_Perc). Ziel ist der Schutz des Kapitals und die effiziente Beendigung fehlerhafter Strategien im Backtest oder Livebetrieb.
7. Bekannte Probleme & Aufgaben
- MT5-Kontostand sinkt trotz positiver Trades (Fehlverhalten im Strategietester?)
- Log-Datei wurde teilweise nicht vollständig geschrieben
- Linie zur Darstellung von Trade-Verläufen wird über mehrere Tage hinweg gezeichnet → Analyse läuft
- Finaler Fix zum sauberen Schließen jeder Position wird priorisiert
Lieber Entwickler,
Ziel ist ein robuster, flexibel konfigurierbarer EA, der klar dokumentiert ist und sich optimal für Backtests und strategische Auswertungen eignet.
Ich habe hiermit das erste Mal ein lasten Heft geschrieben und hoffe das alles gut erklärt ist. Wenn etwas doppelt oder unlogisch ist lass mich das bitte wissen dann berichtige ich das.
Gruss Ludolf