NRTR-Umkehrstrategie
Überblick
Die NRTR-Umkehrstrategie ist eine StockSharp-Portierung des MetaTrader 4-Experten „NRTR_Revers“. Das ursprüngliche System zeichnet eine NRTR-Linie (Noise Reduction Trailing Range) auf, die aus der durchschnittlichen wahren Reichweite (ATR) abgeleitet ist, und kehrt die Positionen um, wenn der Preis diese adaptive Barriere überzeugend durchbricht. Die StockSharp-Version behält das Einzelpositionsverhalten des Expert Advisors bei, spiegelt die ATR-basierte Offset-Berechnung wider und verwaltet Exits über das integrierte Schutzmodul.
Handelslogik
- Abonnieren Sie die von
CandleTypekonfigurierte Hauptkerzenserie und verarbeiten Sie nur fertige Kerzen, wobei Sie die GegenprüfungBarsvon MetaTrader reproduzieren. - Füttern Sie einen
AverageTrueRange-Indikator mit dem PunktPeriod. Der aktuellste ATR-Wert wird von Preiseinheiten in „Punkte“ (Preisschritte) übersetzt, bevor er mitAtrMultiplier / 10multipliziert wird, genau wie der MQL-AusdruckMathRound(k * (iATR / Point) / 10). - Behalten Sie einen rollierenden Cache der letzten Kerzen bei, um den NRTR-Pivot wiederherzustellen. Das niedrigste Tief (für einen Aufwärtstrend) oder das höchste Hoch (für einen Abwärtstrend) über die letzten
PeriodKerzen wird zum Basis-Pivot. - Verschieben Sie den Drehpunkt um den ATR-basierten Offset, um die Schlusslinie zu bilden:
- Aufwärtstrend:
line = lowestLow - offset. - Abwärtstrend:
line = highestHigh + offset.
- Aufwärtstrend:
- Erkennen Sie eine Umkehr, wenn eine der beiden Bedingungen erfüllt ist:
- Schlussdurchbruch: Der letzte Kerzenschluss überschreitet die Linie um mehr als
offsetPunkte. - Bereichserweiterung: Die jüngsten
Period / 2Kerzen reichen um mindestensReverseDistancePointsPunkte über die Linie hinaus. Dies reproduziert den sekundären Umkehrtest aus dem MQL-Code, der weiter zurück in die Geschichte reicht.
- Schlussdurchbruch: Der letzte Kerzenschluss überschreitet die Linie um mehr als
- Wenn sich die Richtung ändert, senden Sie eine Marktorder (
BuyMarketoderSellMarket) mit einem Volumen vonTradeVolume + |Position|. Dadurch wird sowohl das gegenüberliegende Exposure geschlossen als auch die neue Position geöffnet, was dem MetaTrader-Verhalten des sofortigen Schließens und Umkehrens entspricht. - Exits werden an den von
StartProtectiongestarteten Risikomanager delegiert, der die konfigurierten Stop-Loss- und Take-Profit-Abstände von Punkten in Broker-spezifische Preiseinheiten umrechnet.
Parameter
| Name | Typ | Standard | Beschreibung |
|---|---|---|---|
CandleType |
DataType |
15-minütiger Zeitrahmen | Für Berechnungen verwendete Kerzenreihe. |
TakeProfitPoints |
decimal |
4000 |
Take-Profit-Distanz, ausgedrückt in Instrumentenpreisschritten. Zum Deaktivieren auf Null setzen. |
StopLossPoints |
decimal |
4000 |
Stop-Loss-Distanz in Preisschritten. Zum Deaktivieren auf Null setzen. |
TrailingStopPoints |
decimal |
0 |
Reservierter Parameter für externe nachgestellte Module. Wird innerhalb der Strategie nicht verwendet. |
TradeVolume |
decimal |
0.1 |
Basisvolumen (Lots), gespiegelt von der Einstellung MetaTrader. |
Period |
int |
3 |
Anzahl der Kerzen, die zur Berechnung des NRTR-Pivots verwendet werden. |
ReverseDistancePoints |
int |
100 |
Zusätzliche Ausbruchsdistanz in Punkten zur Bestätigung erforderlich. |
AtrMultiplier |
decimal |
3.0 |
Der Multiplikator wird auf ATR angewendet, bevor der Offset erstellt wird. |
Risikomanagement
- Die Strategie ruft
StartProtectionmitUnitTypes.Stepauf, sodass die konfigurierten Punktabstände automatisch in absolute Preisoffsets basierend aufSecurity.PriceStepumgewandelt werden. - Wenn sowohl Stop-Loss als auch Take-Profit Null sind, wird
StartProtection()trotzdem aufgerufen, um die Positionsüberwachung von StockSharp zu aktivieren und die von EA verwendeten Sicherheitsüberprüfungen zu replizieren. TrailingStopPointswird der Vollständigkeit halber offengelegt, aber für zukünftige Erweiterungen übrig gelassen, da der ursprüngliche Experte trotz der Deklaration des Parameters keine abschließende Funktion implementiert hat.
Details zur Implementierung
- Die Strategie basiert ausschließlich auf dem übergeordneten API (
SubscribeCandles().BindEx(...)) mit Indikatorbindungen; Es werden keine manuellen Indikatorschleifen oder verbotenenGetValue-Aufrufe verwendet. - Eine kompakte
CandleSnapshot-Struktur speichert nur Hoch-/Tiefst-/Schlusswerte der letzten Kerzen und vermeidet so vielICandleMessage-Speicher, reproduziert aber dennoch die NRTR-Lookback-Fenster. - Bei der Umrechnung von ATR in Punkte wird die Formel MetaTrader berücksichtigt, indem ATR durch den Instrumentenschritt dividiert wird, bevor der Multiplikator und die Rundung angewendet werden.
- Durch das Trimmen des Verlaufs bleibt der Cache bei
Period * 3Kerzen, um den ursprünglichen Lookback-Anforderungen ohne unkontrolliertes Wachstum zu entsprechen.
Unterschiede zum MetaTrader-Experten
- Das Schließen von Orders wird vereinfacht: Anstatt jeden Trade zu durchlaufen und
OrderCloseaufzurufen, sendet der Port StockSharp eine einzelne Marktorder, die sowohl der bestehenden Position schmeichelt als auch die neue Richtung festlegt. - Magische Zahlen, Slippage und Ticket-spezifische Parameter werden weggelassen, da StockSharp Bestellungen anders verwaltet.
- Diagrammanmerkungen sind optional; Wenn ein Diagrammbereich verfügbar ist, werden die ATR-Serie und eigene Trades zu Debugging-Zwecken aufgezeichnet.
Anwendungstipps
- Richten Sie
TradeVolumemit dem Börsenlosschritt (Security.VolumeStep) aus, bevor Sie den Live-Handel aktivieren. - Stimmen Sie
Period,AtrMultiplierundReverseDistancePointsgemeinsam ab. Kürzere Zeiträume erfordern kleinere Rückwärtsabstände, um ein Überhandeln zu vermeiden. - Stellen Sie die Stopp-/Zielentfernungen entsprechend der Tick-Größe des Instruments ein. Reduzieren Sie bei Instrumenten mit großem
PriceStepdie standardmäßigen 4000-Punkt-Offsets auf realistische Werte.
Indikatoren
AverageTrueRange(Period)berechnet auf Basis der Höchst-/Tiefst-/Schlusskurse.