English 日本語
preview
Larry Connors‘ Strategien RSI2 Mean-Reversion im Day-Trading

Larry Connors‘ Strategien RSI2 Mean-Reversion im Day-Trading

MetaTrader 5Beispiele |
114 0
Zhuo Kai Chen
Zhuo Kai Chen

Einführung

Larry Connors ist ein renommierter Händler und Autor, der vor allem für seine Arbeit im Bereich des quantitativen Handels und für Strategien wie den 2-Perioden-RSI (RSI2) bekannt ist, der dabei hilft, kurzfristig überkaufte und überverkaufte Marktbedingungen zu erkennen. In diesem Artikel werden wir zunächst die Motivation für unsere Forschung erläutern, dann drei von Connors' berühmtesten Strategien in MQL5 nachbilden und sie auf den Intraday-Handel mit dem S&P 500 Index CFD anwenden. Anschließend werden wir die Ergebnisse der einzelnen Strategien analysieren und das Konzept des Aufbaus von Modellsystemen im Handel vorstellen. Schließlich werden wir Vorschläge für künftige Verbesserungen dieser Strategien unterbreiten.


Motivationen

Larry Connors hat im Laufe seiner Karriere zahlreiche quantitative Einzelhandelsstrategien entwickelt und seine Forschungen auf seiner Website dokumentiert. Die meisten seiner Strategien werden auf dem US-Aktienmarkt mit täglichen Zeitrahmen getestet und gehandelt, wobei umfangreiche Backtests ihre Rentabilität beweisen. Allerdings haben nur wenige Händler seine Ideen an niedrigere Zeitrahmen für den Intraday-Handel angepasst. 

Dieser Artikel untersucht diesen Ansatz, indem er drei der berühmtesten Strategien von Connors in MQL5 kodiert und sie auf dem US500 CFD mit einem 30-minütigen Zeitrahmen testet. Ziel ist es, festzustellen, ob seine Konzepte der Mean-Reversion (Rückkehr zur Mitte) beim Hochfrequenzhandel von Nutzen sein können, wo das Rauschen zunimmt, die Handelsmöglichkeiten und die Stichprobengröße jedoch steigen.  Wir haben den CFD des Index US500 ausgewählt, um die Volatilität des US-Aktienmarktes widerzuspiegeln, da Connors seine Strategien ursprünglich für Aktien entwickelt hat. Der 30-Minuten-Zeitrahmen bietet ein ausgewogenes Verhältnis zwischen der Reduzierung von übermäßigem Rauschen und ausreichender Handelsaktivität. Der Backtest wird das vergangene Jahr abdecken, um die Aktualität der Daten zu gewährleisten.  

Die Berechnung des RSI erfolgt wie folgt:

RSI-Berechnung

Der RSI misst die Anzahl der Aufwärts- und Abwärtsbalken in einem bestimmten Zeitraum und verwendet eine Glättungsmethode, z. B. einen gleitenden Durchschnitt, um die relative Stärke der Marktbewegung anzuzeigen. Ein kürzerer Zeitraum macht den RSI empfindlicher, aber auch anfälliger für Störungen. Connors nutzt diese hohe Sensitivität, indem er einen 2-Perioden-RSI verwendet, um kurzfristige überverkaufte oder überkaufte Bedingungen zu identifizieren, die als Signale für die Handelsgeschäfte der Mean-Reversion dienen, die mit dem Gesamttrend übereinstimmen.  

Im Vergleich zu traditionellen Strategien der Rückkehr zur Mitte (Mean-Reversion) wie Bollinger Bands unterscheidet sich dieser Ansatz in mehreren wesentlichen Punkten:

  • Der RSI2 ist einfacher und schneller und reagiert schneller auf kurzfristige Umschwünge als die mehrstufige Berechnung der Bollinger-Bänder.
  • Der RSI2 bietet klare überkaufte (über 90) und überverkaufte (unter 10) Niveaus, im Gegensatz zu den weniger präzisen Bandberührungssignalen der Bollinger Bänder.
  • Der RSI2 ignoriert die Preisspanne und den Trendkontext, während die Bollinger Bänder Trend- und Volatilitätsverschiebungen visuell erfassen.

Insgesamt konzentriert sich dieser Ansatz eher auf die Erfassung von plötzlichen Rücksetzern als auf extreme Kursabweichungen.


Strategie eins - Connors RSI2 Classic

Die Connors RSI2 Classic Strategy arbeitet nach dem Prinzip der Mean Reversion, d.h. sie nutzt vorübergehende Rücksetzer innerhalb etablierter Trends aus. Die Intuition ist, dass selbst Vermögenswerte mit starken Trends kurzfristige Einbrüche aufgrund von Gewinnmitnahmen oder Marktstörungen erleben. Wir wollen einen 2-Perioden-RSI verwenden, um extreme überverkaufte/überkaufte Bedingungen (unter 5/über 95) über nur zwei 30-Minuten-Balken zu identifizieren und potenzielle Abprallgelegenheiten zu signalisieren. Wir verwenden einen gleitenden Durchschnitt, um uns am breiteren Trend zu orientieren und die Wahrscheinlichkeit zu erhöhen, dass es sich bei Pullbacks um vorübergehende Entwicklungen und nicht um Trendumkehrungen handelt.  

Genau diese Strategie wird in Short-Term Trading Strategies That Work (2008) ausführlich beschrieben und wurde von Connors und seinem Forschungspartner Cesar Alvarez damals in rigorosen Backtests überprüft. Wir möchten sehen, ob der Vorteil auch Jahre später noch Bestand hat. 

Signalregeln:

  • Kaufen: wenn RSI2 < 5, letzter Schlusskurs > 200-Perioden-Durchschnitt und keine aktuellen Positionen.
  • Verkaufen: wenn RSI2 > 95, letzter Schlusskurs < 200-Perioden-Durchschnitt und keine aktuellen Positionen.
  • Kauf beenden: wenn letzter Schlusskurs > 5-Perioden-Durchschnitt, oder letzter Schlusskurs < 200-Perioden-Durchschnitt.
  • Verkauf beenden: wenn letzter Schlusskurs < 5-Perioden-Durchschnitt, oder letzter Schlusskurs > 200-Perioden-Durchschnitt.
  • Der Stopp-Loss-Abstand beträgt 0,15 % vom aktuellen Kurs.

Der MQL5-Code:

//US500 M30
#include <Trade/Trade.mqh>
CTrade trade;

input int Magic = 0;
input double lot = 0.1;

int barsTotal = 0;
int handleMa;
int handleMaFast;
int handleRsi;
const int Max = 5;
const int Min = 95;
const int MaPeriods = 200;
const int MaPeriodsFast = 5;
const double slp = 0.0015;

int OnInit()
  {
   trade.SetExpertMagicNumber(Magic);
   handleMa =iMA(_Symbol,PERIOD_CURRENT,MaPeriods,0,MODE_SMA,PRICE_CLOSE);
   handleMaFast = iMA(_Symbol,PERIOD_CURRENT,MaPeriodsFast,0,MODE_SMA,PRICE_CLOSE);
   handleRsi = iRSI(_Symbol,PERIOD_CURRENT,2,PRICE_CLOSE);
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
  }  

void OnTick()
  {
  int bars = iBars(_Symbol,PERIOD_CURRENT);
  
  if (barsTotal!= bars){
     barsTotal = bars;
     bool NotInPosition = true;
     double ma[];
     double ma_fast[];
     double rsi[];
     CopyBuffer(handleMa,BASE_LINE,1,1,ma);
     CopyBuffer(handleMaFast,BASE_LINE,1,1,ma_fast);
     CopyBuffer(handleRsi,0,1,1,rsi);
     double lastClose = iClose(_Symbol, PERIOD_CURRENT, 1);
     for(int i = PositionsTotal()-1; i>=0; i--){
         ulong pos = PositionGetTicket(i);
         string symboll = PositionGetSymbol(i);
         if(PositionGetInteger(POSITION_MAGIC) == Magic&&symboll== _Symbol){
            NotInPosition = false;
            if((PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY&&(lastClose>ma_fast[0]||lastClose<ma[0]))
            ||(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL&&(lastClose<ma_fast[0]||lastClose>ma[0])))trade.PositionClose(pos);  
            }}
     if(rsi[0]<Max&&NotInPosition&&lastClose>ma[0])executeBuy();
     if(rsi[0]>Min&&NotInPosition&&lastClose<ma[0])executeSell();
    }
 }

void executeSell() {      
       double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
       bid = NormalizeDouble(bid,_Digits);
       double sl = bid*(1+slp);
       sl = NormalizeDouble(sl, _Digits);
       trade.Sell(lot,_Symbol,bid,sl);    
}
    
void executeBuy() {
       double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
       ask = NormalizeDouble(ask,_Digits);
       double sl = ask*(1-slp);
       sl = NormalizeDouble(sl, _Digits);
       trade.Buy(lot,_Symbol,ask,sl);
}

Ein typischer Handel würde folgendermaßen aussehen:

RSI2 V1 Demo

Hier sind die Backtest-Ergebnisse für US500 (M30) vom 1. Januar 2024 bis zum 1. März 2025.

RSI2 V1-Einstellungen

Parameter

RSI2 V1

RSI2 V1 Ergebnis

Die Handelshäufigkeit ist im Vergleich zu anderen Daytrading-Strategien recht hoch: durchschnittlich 1-2 Handelsgeschäfte pro Tag bei 252 Handelstagen pro Jahr. Dies ist wahrscheinlich darauf zurückzuführen, dass der RSI2 sehr reaktiv ist und selbst bei extremen Einstiegskriterien häufig Signale ausgibt. Der durchschnittliche Gewinn entspricht in etwa dem durchschnittlichen Verlust, was für eine Mean-Reversion-Strategie, bei der die Gewinnquote in der Regel über 50 % liegt, solide ist. Obwohl die Handelsregeln vollständig symmetrisch sind, gibt es eine Diskrepanz zwischen den Gewinnquoten von Kauf und Verkauf: Verkäufe hatten eine höhere Gewinnquote bei weniger Handelsgeschäften in einem Aufwärtsmarkt von 2024, was darauf hindeutet, dass Rücksetzer in einem Aufwärtstrend mit dieser Strategie schwieriger zu erreichen sind.


Strategie zwei - RSI2 Pullback 

Die RSI2-Pullback-Strategie verbessert den Handel nach einem Mean-Reversion, indem sie mehrere aufeinanderfolgende extreme RSI-Werte erfordert. Der Gedanke dahinter ist, dass ein Vermögenswert, der sich in einem langfristigen Trend befindet und einen starken Einbruch auf mehreren Balken erfährt, für einen Rücksetzer bereit ist. Wird der RSI2 mit einem etwas höheren Schwellenwert als die traditionelle Version verwendet und mit drei aufeinanderfolgenden RSI-Werten über oder unter diesem Schwellenwert kombiniert, wird das Signal stärker, was auf eine Kapitulation hindeutet und die Chancen für eine schnelle Umkehr erhöht.

Diese Strategie baut auf dem Rahmenwerk von Larry Connors auf, aber ich habe sie optimiert, indem ich das Erfordernis von mehreren aufeinanderfolgenden, extremen RSI-Werten hinzugefügt und eine ungewöhnliche Ausstiegsregel eingeführt habe. Wir steigen aus der Position aus, sobald das Hoch oder Tief der vorherigen Kerze überschritten wurde. Diese Ausstiegsidee beruht auf der Beobachtung, dass kurzfristige Umkehrungen oft einen Umkehrbalken aufweisen, der den Höchst- oder Tiefststand der vorherigen Kerze übersteigt, sodass wir schnell aussteigen und einen kleinen Gewinn einstreichen können.

Signalregeln:

  • Kaufen: wenn die letzten drei RSI2-Werte < 10, der letzte Schlusskurs > 200-Perioden-Durchschnitt und keine aktuellen Positionen.
  • Verkaufen: wenn die letzten drei RSI2-Werte > 90, der letzte Schlusskurs < 200-Perioden-Durchschnitt und keine aktuellen Positionen.
  • Beenden eines Kaufes: wenn letzter Schlusskurs > vorletztes Kerzenhoch oder letzter Schlusskurs < 200-Perioden-Durchschnitt.
  • Beenden eines Verkauf: wenn letzter Schlusskurs < vorletztes Kerzentief, oder letzter Schlusskurs > 200-Perioden-Durchschnitt.
  • Der Stopp-Loss-Abstand beträgt 0,15 % vom aktuellen Kurs.

Der MQL5-Code:

//US500 M30
#include <Trade/Trade.mqh>
CTrade trade;

input int Magic = 0;
input double lot = 0.1;

int barsTotal = 0;
int handleMa;
int handleRsi;
const int Max = 10;
const int Min = 90;
const int MaPeriods = 200;
const double slp = 0.0015;

int OnInit()
  {
   trade.SetExpertMagicNumber(Magic);
   handleMa =iMA(_Symbol,PERIOD_CURRENT,MaPeriods,0,MODE_SMA,PRICE_CLOSE);
   handleRsi = iRSI(_Symbol,PERIOD_CURRENT,2,PRICE_CLOSE);
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
  }
  
void OnTick()
  {
  int bars = iBars(_Symbol,PERIOD_CURRENT);
  
  if (barsTotal!= bars){
     barsTotal = bars;
     bool NotInPosition = true;
     double ma[];
     double rsi[];
     CopyBuffer(handleMa,BASE_LINE,1,1,ma);
     CopyBuffer(handleRsi,0,1,3,rsi);
     double lastClose = iClose(_Symbol, PERIOD_CURRENT, 1);
     double lastlastHigh = iHigh(_Symbol,PERIOD_CURRENT,2);
     double lastlastLow = iLow(_Symbol,PERIOD_CURRENT,2);
     for(int i = PositionsTotal()-1; i>=0; i--){
         ulong pos = PositionGetTicket(i);
         string symboll = PositionGetSymbol(i);
         if(PositionGetInteger(POSITION_MAGIC) == Magic&&symboll== _Symbol){
            NotInPosition = false;
            if((PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY&&(lastClose>lastlastHigh||lastClose<ma[0]))
            ||(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL&&(lastClose<lastlastLow||lastClose>ma[0])))trade.PositionClose(pos);  
            }}
     if(rsi[0]<Max&&rsi[1]<Max&&rsi[2]<Max&&NotInPosition&&lastClose>ma[0])executeBuy();
     if(rsi[0]>Min&&rsi[1]>Min&&rsi[2]>Min&&NotInPosition&&lastClose<ma[0])executeSell();
    }
 }

void executeSell() {      
       double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
       bid = NormalizeDouble(bid,_Digits);
       double sl = bid*(1+slp);
       sl = NormalizeDouble(sl, _Digits);
       trade.Sell(lot,_Symbol,bid,sl);    
}
    
void executeBuy() {
       double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
       ask = NormalizeDouble(ask,_Digits);
       double sl = ask*(1-slp);
       sl = NormalizeDouble(sl, _Digits);
       trade.Buy(lot,_Symbol,ask,sl);
}

Ein typischer Handel würde folgendermaßen aussehen:

RSI2 V2 Demo

Hier sind die Backtest-Ergebnisse für US500 (M30) vom 1. Januar 2024 bis zum 1. März 2025.

RSI2 V2 Einstellungen

Parameter

RSI2 V2 Kapitalkurve

RSI2 V2 Ergebnis

Diese Strategie wird seltener gehandelt als die vorherige, vor allem, weil der Einstieg jetzt drei aufeinanderfolgende extreme RSI-Werte erfordert. Die Gewinnquote bei einem Verkauf ist nicht gerade beeindruckend. Wie wir bereits bei der letzten Strategie festgestellt haben, können wir die große Volatilität des Aufwärtstrends im Jahr 2024 nicht vollständig ausnutzen, da wir nur kleine Rückschläge (normalerweise 2-3 Kerzen) skalieren. Dies könnte sich ausgleichen, wenn wir mehr Tests über mehrere Jahre durchführen, um Daten zu unterschiedlichen Marktbedingungen zu sammeln.


Strategie drei - RSI2 Überkauft/Überverkauft

Die Strategie RSI2 Überkauft/Überverkauft bietet mehr Flexibilität, da sich das Ausstiegsniveau je nach Trend des Vermögenswerts anpasst. Auch er geht davon aus, dass extreme RSI2-Werte bedeuten, dass eine Aktie zu weit und zu schnell gestiegen ist und eine Umkehr bevorsteht, sodass Händler Dips (überverkauft) oder kurze Rally (überkauft) kaufen können. Im Gegensatz zu den beiden vorangegangenen Strategien hat diese einen dynamischeren Ausstieg, der auf einem einstellbaren RSI-Schwellenwert basiert. Der Haken an der Sache ist, dass es wegen der dicken Enden riskanter sein könnte, da der RSI selbst bei einer 2-Perioden-Einstellung geglättet ist und der Preisentwicklung hinterherhinkt. Wenn sich der Handel also schnell gegen uns wendet, rettet nur der Stop-Loss die Position.

Außerdem wird der gleitende 200-Perioden-Durchschnitt in der Regel für langfristige Trends auf steigenden Aktienmärkten verwendet. Aus diesem Grund hat Larry die beiden vorangegangenen Strategien als „Long-only“ konzipiert. Da es sich hier um Daytrading-CFDs handelt, habe ich alle Strategien so angepasst, dass sie sowohl Käufe als auch Verkäufe handelt. Allerdings wurde diese Strategie von Larry erwähnt, um beide Seiten des Marktes handeln zu können, einschließlich Verkäufe von Aktien. Für die Trendfilterung wird ein gleitender 50-Perioden-Durchschnitt anstelle eines 200-Perioden-Durchschnitts verwendet, was eine bessere Reaktion auf Trendänderungen ermöglicht, da Verkäufe oft an schnelle Veränderungen und nicht an langfristige Börsentrends gebunden sind.

Diese Strategie geht auf die Forschungen von Larry Connors zurück und wird in seinen Schriften und Seminaren als flexibler Weg zur Nutzung des Indikators hervorgehoben, der je nach Markt sowohl für Kauf- und Verkaufsgeschäfte geeignet ist.

Signalregeln:

  • Kaufen: wenn RSI2 < 5, letzter Schlusskurs > 50-Perioden-Durchschnitt und keine aktuellen Positionen.
  • Verkaufen: wenn RSI2 > 95, letzter Schlusskurs < 50-Perioden-Durchschnitt und keine aktuellen Positionen.
  • Beenden eines Kaufs: wenn RSI2 > 70.
  • Beenden eines Verkaufs: wenn RSI2 < 30.
  • Der Stop-Loss-Abstand beträgt 1 % vom aktuellen Kurs.

Der MQL5-Code:

//US500 M30
#include <Trade/Trade.mqh>
CTrade trade;

input int Magic = 0;
input double lot = 0.1;

const int Max = 5;
const int Min = 95;
const int MaPeriods = 50;
const double slp = 0.01;

int barsTotal = 0;
int handleMa;
int handleRsi;

int OnInit()
  {
   trade.SetExpertMagicNumber(Magic);
   handleMa =iMA(_Symbol,PERIOD_CURRENT,MaPeriods,0,MODE_SMA,PRICE_CLOSE);
   handleRsi = iRSI(_Symbol,PERIOD_CURRENT,2,PRICE_CLOSE);
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
  }
  
void OnTick()
  {
  int bars = iBars(_Symbol,PERIOD_CURRENT);
  
  if (barsTotal!= bars){
     barsTotal = bars;
     bool NotInPosition = true;
     double ma[];
     double rsi[];
     CopyBuffer(handleMa,BASE_LINE,1,1,ma);
     CopyBuffer(handleRsi,0,1,1,rsi);
     double lastClose = iClose(_Symbol, PERIOD_CURRENT, 1);
     for(int i = PositionsTotal()-1; i>=0; i--){
         ulong pos = PositionGetTicket(i);
         string symboll = PositionGetSymbol(i);
         if(PositionGetInteger(POSITION_MAGIC) == Magic&&symboll== _Symbol){
            NotInPosition = false;
            if((PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY&&rsi[0]>70)
            ||(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL&&rsi[0]<30))trade.PositionClose(pos);  
            }}
     if(rsi[0]<Max&&NotInPosition&&lastClose>ma[0])executeBuy();
     if(rsi[0]>Min&&NotInPosition&&lastClose<ma[0])executeSell();
    }
 }

void executeSell() {      
       double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
       bid = NormalizeDouble(bid,_Digits);
       double sl = bid*(1+slp);
       sl = NormalizeDouble(sl, _Digits);
       trade.Sell(lot,_Symbol,bid,sl);    
}
    
void executeBuy() {
       double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
       ask = NormalizeDouble(ask,_Digits);
       double sl = ask*(1-slp);
       sl = NormalizeDouble(sl, _Digits);
       trade.Buy(lot,_Symbol,ask,sl);
}

Ein typischer Handel würde folgendermaßen aussehen:

RSI2 V3-Demo

Hier sind die Backtest-Ergebnisse für US500 (M30) vom 1. Januar 2024 bis zum 1. März 2025.

RSI2 V3 Einstellungen

Parameter

RSI2 V3 Kapitalkurve

RSI2 V3 Ergebnis

Im Vergleich zu den beiden vorangegangenen Strategien weist diese Strategie eine höhere Gewinnrate, aber auch einen größeren Equity Floating Drawdown auf, wie an den grünen Linien auf der Kapitalkurve zu erkennen ist. Dies steht im Zusammenhang mit dem bereits erwähnten dicken Enden und der Notwendigkeit, den Stop-Loss weiter als üblich zu setzen. Das Risiko der dicken Enden beschreibt die größere Wahrscheinlichkeit von Extremereignissen in einer Verteilung, die bei einer Strategie zur Umkehrung des Mittelwerts, die eine Rückkehr der Kurse zu ihrem historischen Durchschnitt erwartet, zu erheblichen Verlusten führen kann. Bei diesen Strategien können unerwartete starke Kursschwankungen, die bei Verteilungen mit dicken Enden häufiger auftreten, die erwartete Umkehrung verhindern und zu erhöhten Risiken oder Verlusten im Vergleich zu dem führen, was eine Normalverteilung vorhersagen würde. Während diese Strategie einen höheren Gewinnfaktor aufweist, muss der Drawdown in Angriff genommen werden, um sie zu einer praktischen, handelbaren Strategie zu machen.

Verteilung der dicken Enden


Überlegungen

Wenn wir auf die drei Strategien zurückblicken, die wir behandelt haben, sind sie in Bezug auf Code und Signalregeln ziemlich ähnlich. Das liegt vor allem daran, dass sie alle aus dem Modellsystem „RSI2 Mean-Reversion“ stammen. Wenn Sie erst einmal ein solides Modellsystem haben, ist es ziemlich einfach, ein paar Regeln zu ändern, um verschiedene Strategien zu entwickeln. Unterscheiden wir einmal, was ein Modellsystem im Vergleich zu einer einzelnen Strategie im CTA-Handel ist.

Eine einzelne Strategie ist an einen bestimmten Zeitrahmen und ein bestimmtes Asset gebunden, mit detaillierten Signalregeln, die nicht einfach ausgetauscht werden können. Ein Modellsystem ist jedoch eher ein breiter Ausgangspunkt für die Suche nach Ihrem Vorteil auf der Grundlage historisch bewährter Konzepte wie Umkehr zur Mitte, Trendfolge, Momentum oder Ausbruch. Von dort aus kombiniert ein spezifisches Modellsystem Schlüsselsignalquellen mit diesem großen Konzept, wie RSI2 Mean-Reversion für diesen Artikel. Modellsysteme sind flexibler in Bezug auf Zeitrahmen, Vermögenswerte und Signalregeln, sodass es einfacher ist, mehrere Strategien zu entwickeln und ein diversifiziertes Portfolio effizient aufzubauen.

Um ein Modellsystem zu erstellen und daraus Strategien zu entwickeln, ist es eine gute Idee, dies zu tun:

  • Berechne alle Signale oder Preisabstände auf stationäre Weise durch eine Normalisierung oder verwende Prozentsätze des Preises, um sie über verschiedene Vermögenswerte und Zeitrahmen hinweg besser skalierbar zu machen.
  • Vermeide die feste Kodierung von Zeitrahmen und Symbol in Ihrem Code. Verwend _Symbol und PERIOD_CURRENT für automatische Anpassungen bei Backtests unter verschiedenen Bedingungen.
  • Teile eine Strategie in klare Ein- und Ausstiegsregeln auf, liste diese auf und erwäge alternative Regeln, die dennoch die gleiche Motivation für den Vorteil bieten.
  • Kapsel wiederverwendbaren Code in Funktionen, um ihn aufgeräumt und effizient zu halten, und erleichtere so die spätere Anpassung von Signalregeln.

Nachdem wir nun das Konzept der Verwendung des Denkens in Modellen statt in bestimmten Strategien verstanden haben, sind hier einige Vorschläge für zukünftige Verbesserungen bei der Verwendung des RSI2-Mittelwertumkehrmodells, um eine besser handelbare Strategie zu erstellen.

  • Teste die Strategien mit verschiedenen Zeitrahmen und anderen Handelsinstrumenten als US500 M30, um herauszufinden, ob es bessere Bedingungen gibt als die, die wir derzeit verwenden. Achten Sie darauf, dass Sie alle Entdeckungen in der Stichprobe machen, um eine Verzerrung durch Vorausschau zu vermeiden.
  • Ändere die Momentum- und Trendindikatoren, z. B. durch den Ersatz des RSI durch den ROC oder den VIX oder die gleitenden Durchschnitte durch einen Kalman-Filter.
  • Kombiniere die Einstiegs- und Ausstiegsregeln mit anderen Mean-Reversion-Strategien, wie z. B. der Verwendung von Bollinger-Bändern für den Einstieg, aber halte die Ausstiegsregel aus diesem Artikel ein.

Dies sind Schlüsseltechniken, auf die sich erfahrene CTA-Quant Researcher verlassen, um Strategien effektiver zu entwickeln. Bei der Entwicklung neuer strategischer Ideen ging es nie darum, etwas völlig Unerhörtes zu erfinden. Vielmehr geht es darum, bestehende, bewährte Modelle zu optimieren oder zu kombinieren, die zwar vorhanden sind, aber für sich genommen nicht rentabel genug sind. Dieser Teil der Arbeit ist so abstrakt, dass er nicht von Maschinen übernommen werden kann, aber auch so strukturiert, dass Menschen immer noch methodisch und nach einem bestimmten Verfahren Daten sammeln.


Schlussfolgerung

In diesem Artikel haben wir zunächst erklärt, warum wir uns dafür entschieden haben, Intraday-Strategien auf der Grundlage des RSI2-Konzepts der Mittelwertumkehr zu entwickeln. Als Nächstes haben wir uns drei bekannte Strategien von Larry Connors angesehen, die Gründe für ihre Signalregeln erläutert, die genauen Ein- und Ausstiegsbedingungen dargelegt und sie auf dem MetaTrader 5 einem Backtest unterzogen. Danach stellten wir die Idee vor, Strategien auf der Grundlage von Modellsystemen zu entwickeln, boten praktische Tipps für die Anwendung dieses Ansatzes und schlugen Wege vor, wie man in Zukunft profitablere RSI2-Mittelwertumkehrstrategien entwickeln kann. Alles in allem gibt dieser Artikel einen klaren Rahmen für Händler vor: Nehmen Sie eine beliebte, öffentlich verfügbare Online-Strategie, optimieren Sie sie ein wenig und testen Sie sie auf MQL5, um das Konzept weiter zu verfeinern. Händler können diesen Prozess leicht übernehmen und die Effizienz ihrer Strategieentwicklung steigern.

Datei-Tabelle

Datei Name Dateiverwendung
RSI2_V1.mq5 Der EA der ersten Strategie
RSI2_V2.mq5 Der EA der zweiten Strategie
RSI2_V3.mq5 Der EA der dritten Strategie

Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/17636

Beigefügte Dateien |
RSI2.zip (3.1 KB)
Meistern der Log-Einträge (Teil 6): Speichern von Protokollen in der Datenbank Meistern der Log-Einträge (Teil 6): Speichern von Protokollen in der Datenbank
Dieser Artikel befasst sich mit der Verwendung von Datenbanken zur strukturierten und skalierbaren Speicherung von Protokollen. Es behandelt grundlegende Konzepte, wesentliche Operationen, Konfiguration und Implementierung eines Datenbank-Handlers in MQL5. Schließlich werden die Ergebnisse validiert und die Vorteile dieses Ansatzes für die Optimierung und effiziente Überwachung hervorgehoben.
Automatisieren von Handelsstrategien in MQL5 (Teil 13): Aufbau eines Kopf-Schulter-Handelsalgorithmus Automatisieren von Handelsstrategien in MQL5 (Teil 13): Aufbau eines Kopf-Schulter-Handelsalgorithmus
In diesem Artikel automatisieren wir das Muster aus Kopf und Schultern in MQL5. Wir analysieren seine Architektur, implementieren einen EA, um ihn zu erkennen und zu handeln, und führen einen Backtest der Ergebnisse durch. Der Prozess offenbart einen praktischen Handelsalgorithmus, der noch verfeinert werden kann.
Erstellen eines Handelsadministrator-Panels in MQL5 (Teil IX): Code Organisation (V): Die Klasse AnalyticsPanel Erstellen eines Handelsadministrator-Panels in MQL5 (Teil IX): Code Organisation (V): Die Klasse AnalyticsPanel
In dieser Diskussion wird untersucht, wie man Echtzeit-Marktdaten und Handelskontoinformationen abruft, verschiedene Berechnungen durchführt und die Ergebnisse in einem nutzerdefinierten Panel anzeigt. Um dies zu erreichen, werden wir die Entwicklung der Klasse AnalyticsPanel vertiefen, die all diese Funktionen, einschließlich der Panel-Erstellung, kapselt. Dieser Aufwand ist Teil unserer kontinuierlichen Erweiterung des New Admin Panel EA, mit der wir fortschrittliche Funktionalitäten unter Verwendung modularer Designprinzipien und Best Practices für die Codeorganisation einführen.
Entwicklung eines Toolkit zur Analyse von Preisaktionen (Teil 19): ZigZag Analyzer Entwicklung eines Toolkit zur Analyse von Preisaktionen (Teil 19): ZigZag Analyzer
Jeder, der Preisaktionen handelt, verwendet Trendlinien manuell, um Trends zu bestätigen und potenzielle Wende- oder Fortsetzungsniveaus zu erkennen. In dieser Serie über die Entwicklung eines Preisaktionsanalyse-Toolkits stellen wir ein Tool vor, das sich auf das Zeichnen von schrägen Trendlinien zur einfachen Marktanalyse konzentriert. Dieses Tool vereinfacht den Prozess für Händler, indem es die wichtigsten Trends und Niveaus, die für eine wirksame Bewertung der Preisaktionen unerlässlich sind, klar umreißt.