1. Enum-Typen (enumJnsSignal, enumOrderType)
- enumJnsSignal Diese Aufzählung definiert den Typ des im EA verwendeten Signals. Es gibt zwei Signaloptionen:
- `eTypeCrossMA`: Verwendet das Signal von Cross 2 MA(die Kreuzung von zwei gleitenden Durchschnitten).
- eTypeTrend": Folgt dem Trend mit Hilfe von Gleitenden Durchschnitten und Stochastik.
- enumOrderType Diese Aufzählung definiert die Art des Auftrags:
- `eBuy`: Ein Kaufauftrag .
- eSell": Ein Verkaufsauftrag .
- eNone": Kein Auftrag ausgeführt.
2. Eingabe-Parameter
- inMagicNumber Eine eindeutige magische Zahl, die zur Unterscheidung von Aufträgen dieses EA verwendet wird.
- inLotSize Die anfängliche Losgröße für jeden Auftrag.
- inMultiply Der Multiplikationsfaktor, der in der Losgrößenstrategie verwendet wird.
- inJarakLayer Der Pip-Abstand zwischen den Handelspositionen in der Grid/Layer-Strategie.
- inMAPeriodFast & inMAPeriodSlow Die Perioden für schnelle und langsame gleitende Durchschnitte.
- inSTOKPeriod, inSTODPeriod, inSTOSlowing Parameter für den Stochastischen Oszillator.
- inTakeProfit & inStopLoss Die Einstellungen für Take Profit und Stop Loss.
3. Struktur dataTrades
- In dieser Struktur werden Daten zu offenen Handelspositionen gespeichert, wie die Gesamtzahl der Positionen (`ttlPos`), der Durchschnittspreis der Positionen (`hargaTA`, `hargaTB`) und das Gesamtvolumen (`ttlLot`).
4. OnInit() Funktion
- Diese Funktion übernimmt die Initialisierung des EA, einschließlich der Validierung der Eingabeparameter (z. B. Sicherstellung, dass die schnelle MA-Periode kleiner ist als die langsame MA-Periode) und der Erstellung von Handles für die MA- und Stochastik-Indikatoren.
5. OnTick() Funktion
- Die Hauptfunktion wird jedes Mal ausgeführt, wenn sich der Preis bewegt (Tick).
- Sie ruft die Funktion auf, um mit GetSignal() nach einem neuen Signal zu suchen, und wenn ein Signal gefunden wird, wird manageTrading() verwendet, um Trades auszuführen.
- Es ruft auch setTPSL() auf, um sicherzustellen, dass Take Profit und Stop Loss immer aktualisiert werden.
6. isNewCandle() Funktion
- Diese Funktion erkennt, ob sich eine neue Kerze gebildet hat. Dies ist wichtig, da der EA nur bei neuen Kerzenformationen auf Signale prüft.
7. GetSignal() Funktion
- Diese Funktion ermittelt, ob ein gültiges Handelssignal auf der Grundlage der ausgewählten Strategie existiert:
- Bei eTypeCrossMA wird das Signal durch die Kreuzung der schnellen und langsamen gleitenden Durchschnitte bestimmt.
- Für eTypeTrend verwendet das Signal die Bestätigung von MA und Stochastic.
8. manageTrading() Funktion
- Diese Funktion verwaltet die Ausführung von Trades.
- Wenn ein gültiges Signal erkannt wird, eröffnet der EA eine Position mit der Lotgröße, die mit der Funktion getLotSize() bestimmt wird.
- Eine Grid/Layer-Strategie wird ebenfalls angewendet, um zusätzliche Positionen basierend auf dem Preisabstand (`inJarakLayer`) zu öffnen.
9. updateDataTrades() Funktion
- Diese Funktion aktualisiert die Daten in Bezug auf laufende Handelspositionen, wie z.B. die Berechnung des Durchschnittspreises und des Gesamtvolumens der offenen Positionen.
10. openTrade() Funktion
- Diese Funktion eröffnet eine neue Handelsposition basierend auf dem generierten Signal und der berechneten Losgröße. Sie verwendet OrderSend(), um die Order auszuführen.
11. setTPSL() Funktion
- Diese Funktion setzt oder aktualisiert den Take Profit und Stop Loss für jede offene Position.
12. modifTPSL() Funktion
- Diese Funktion ändert den Take Profit und den Stop Loss bestehender Positionen, wenn die Werte von den zuvor festgelegten abweichen.
13. validateLot() Funktion
- Diese Funktion stellt sicher, dass die verwendete Lotgröße innerhalb des zulässigen Mindest- und Höchstbereichs liegt und mit dem minimalen Lotschritt (`gLotStep`) übereinstimmt.
14. getLotSize() Funktion
- Diese Funktion berechnet die zu verwendende Losgröße auf der Grundlage der anfänglichen Losgröße und der Anzahl der bereits eröffneten Positionen, wobei der Multiplikatorfaktor (`inMultiply`) berücksichtigt wird.
Dieser Code wurde entwickelt, um Markttrends zu erfassen und Handelspositionen automatisch zu verwalten, indem technische Signale von gleitenden Durchschnitten und Stochastik verwendet werden.