MARE5.1 Shift Crossover-Strategie
Überblick
Die MARE5.1-Strategie ist eine C#-Portierung des MetaTrader 4 Expert Advisors MARE5_1.mq4. Der ursprüngliche Roboter handelte mit M1-Daten und stützte sich auf ein Paar einfacher gleitender Durchschnitte, die bei drei verschiedenen historischen Offsets ausgewertet wurden, um Regimeänderungen zu erkennen. Diese StockSharp-Implementierung reproduziert das Verhalten mit konfigurierbaren Parametern, fügt Schutzaufträge im MetaTrader-Stil hinzu und stellt einen detaillierten Handelsfensterfilter bereit.
Handelslogik
- Marktdaten
- Ein einzelnes Kerzenabonnement, definiert durch
CandleType(Standard: 1 Minute), speist die Berechnungen. - Jede Kerze wird erst nach dem Schließen verarbeitet, um die Verwendung halbgeformter Balken zu vermeiden.
- Ein einzelnes Kerzenabonnement, definiert durch
- Indikatoren
- Zwei
SimpleMovingAverage-Instanzen repräsentieren die schnelle (FastPeriod) und die langsame (SlowPeriod) Komponente. - Beide Durchschnittswerte werden um
MovingAverageShiftnach vorne verschoben, genau wie das Argumentma_shiftin der Funktion MQLiMA. - Zusätzliche verzögerte Kopien jedes Durchschnitts werden mit Verschiebungen von
MovingAverageShift + 2undMovingAverageShift + 5erhalten, um die ursprünglicheniMA(..., shift=2/5)-Aufrufe widerzuspiegeln.
- Zwei
- Signalerkennung
- Die Differenz zwischen den Durchschnittswerten muss mindestens eine Preisstufe (
Pointin MetaTrader ausgedrückt) überschreiten. Wenn das Instrument NullPriceStephat, ist jede positive Differenz ausreichend. - Setup verkaufen:
- Die vorherige Kerze muss bärisch sein (
Close < Open). - Der aktuell verschobene langsame Durchschnitt ist größer als der schnelle Durchschnitt.
- Zwei und fünf Kerzen zurück lag der schnelle Durchschnitt immer noch über dem langsamen Durchschnitt, was einen Momentumwechsel signalisierte.
- Die vorherige Kerze muss bärisch sein (
- Setup kaufen:
- Die vorherige Kerze muss bullisch sein (
Close > Open). - Der aktuell verschobene schnelle Durchschnitt ist größer als der langsame Durchschnitt.
- Zwei und fünf Kerzen später war der langsame Durchschnitt immer noch führend, was einen Übergang von bärischen zu zinsbullischen Bedingungen bestätigte.
- Die vorherige Kerze muss bullisch sein (
- Es kann jeweils nur eine Position offen sein, wodurch die
OrdersTotal() < 1-Bewachung der EA repliziert wird.
- Die Differenz zwischen den Durchschnittswerten muss mindestens eine Preisstufe (
- Zeitfilter
- Der Handel ist nur zulässig, wenn die Schlussstunde der ausgewerteten Kerze in das
[TimeOpenHour, TimeCloseHour]-Intervall fällt. - Wenn die Endstunde kürzer als die Startstunde ist, wird das Fenster als über Nacht behandelt (z. B.
22bis5).
- Der Handel ist nur zulässig, wenn die Schlussstunde der ausgewerteten Kerze in das
Risikomanagement
StartProtectionist mit einer Stop-Loss- und Take-Profit-Distanz konfiguriert, die mithilfe des InstrumentsPriceStepaus MetaTrader Punkten in absolute Preisversätze umgewandelt wird.- Es ist kein Trailing Stop implementiert, da der ursprüngliche Code
TrailingStopdeklariert, ihn aber nie verwendet hat. - Bestellungen werden mit dem durch
TradeVolumedefinierten Volumen aufgegeben. Bei der Strategie handelt es sich nicht um eine Pyramiden- oder Scale-out-Positionierung.
Parameter
| Name | Beschreibung | Standard | Notizen |
|---|---|---|---|
TradeVolume |
Losgröße für Markteintritte. | 7.8 |
Gerundet gemäß den Austauschregeln durch den StockSharp-Konnektor. |
FastPeriod |
Periode des schnellen einfachen gleitenden Durchschnitts. | 13 |
Steuert, wie schnell die Strategie auf Preisänderungen reagiert. |
SlowPeriod |
Periode des langsamen einfachen gleitenden Durchschnitts. | 55 |
Bietet die längerfristige Trendreferenz. |
MovingAverageShift |
Auf beide gleitenden Durchschnitte angewendete Vorwärtsverschiebung. | 2 |
Entspricht dem Parameter ma_shift der Funktion MQL iMA. |
StopLossPoints |
Schutzstoppabstand in MetaTrader Punkten. | 80 |
Umgerechnet in einen absoluten Offset durch das Instrument PriceStep. |
TakeProfitPoints |
Gewinnzielentfernung in MetaTrader Punkten. | 110 |
Auf 0 setzen, um den Take-Profit zu deaktivieren. |
TimeOpenHour |
Beginn des zulässigen Handelsfensters (Stunde, 0–23). | 8 |
Bewertet anhand der Kerzenschlusszeit. |
TimeCloseHour |
Ende des zulässigen Handelsfensters (Stunde, 0–23). | 14 |
Kann bis Mitternacht niedriger als TimeOpenHour sein. |
CandleType |
Für das Kerzenabonnement verwendeter Zeitrahmen. | 1 minute |
Jeder andere TimeFrame()-Wert kann angegeben werden. |
Implementierungshinweise
- Der Indikator
Shiftwird intern verwendet, um die genauen historischen Offsets der MQL-Implementierung zu reproduzieren, ohne direkt auf Indikatorpuffer zuzugreifen. IsDifferenceSatisfiedkapselt den Punkt-Schwellenwert-Vergleich und sorgt dafür, dass die Strategie mit Instrumenten mit unterschiedlichen Tick-Größen kompatibel bleibt.- Bei der Prüfung des Handelsfensters werden Kerzenschlusszeiten verwendet. Dies ist die beste Annäherung an
Hour()von MetaTrader, wenn nur fertige Kerzen verarbeitet werden. - Alle Kommentare sind auf Englisch verfasst und der Code basiert ausschließlich auf dem High-Level API (
SubscribeCandles().Bind(...)), wie in den Projektrichtlinien gefordert.
Unterschiede im Vergleich zur MQL-Version
- Signale werden bei geschlossenen Kerzen ausgewertet, wodurch ein mögliches Neuzeichnen vermieden wird, das bei Intra-Bar-Ticks in MetaTrader auftreten könnte.
- Stop-Loss- und Take-Profit-Orders werden von
StartProtectionabgewickelt, anstatt manuell an jedenOrderSend-Aufruf angehängt zu werden. - Die nicht verwendete
TrailingStop-Eingabe wurde absichtlich weggelassen, um zu vermeiden, dass ein nicht funktionierender Parameter offengelegt wird. - Der Zeitfilter unterstützt konstruktionsbedingt Sitzungen über Nacht, während der ursprüngliche EA implizit von
TimeOpen <= TimeCloseausging.