English 日本語
preview
Entwicklung einer Handelsstrategie: Die Triple-Sinus-Mittelwertumkehrmethode

Entwicklung einer Handelsstrategie: Die Triple-Sinus-Mittelwertumkehrmethode

MetaTrader 5Handel |
14 2
Daniel Opoku
Daniel Opoku

Einführung

Traditionelle technische Indikatoren wie der Moving Average Convergence Divergence (MACD), der Money Flow Index (MFI), der Stochastik-Oszillator und der Awesome Oscillator (AO) bilden seit langem die Grundlage für Händler und Analysten, die Einstiegs- und Ausstiegspunkte am Markt identifizieren wollen. Jeder dieser Indikatoren ist zwar unterschiedlich aufgebaut, basiert aber auf unterschiedlichen mathematischen Formeln, die Preisdaten in aussagekräftige grafische Darstellungen umwandeln und Händlern helfen, Marktverhalten und -dynamik zu interpretieren.

In diesem Artikel untersuchen wir die Entwicklung einer neuartigen Handelsstrategie, die über diese herkömmlichen Instrumente hinausgeht. Wir stellen eine Strategie der Rückkehr zum Mittelwert vor, deren Einstiegskriterien auf einem eigens entwickelten Indikator beruhen: dem Triple Sine Oscillator (TSO). Um dies zu erreichen, verwenden wir eine spezielle trigonometrische Funktion, den Sinus-Kubik, um einen Oszillator zu entwickeln, der skalierte Preisdaten als primären Input verwendet. Ziel ist es, die zyklische Natur trigonometrischer Funktionen zu nutzen, um potenzielle Mittelwertumkehrpunkte in den Kursbewegungen zu identifizieren.


Mathematische Grundlage: Die kubische Funktion des Sinus

Das Herzstück des Triple Sine Indikators ist die kubische Funktion des Sinus, mathematisch ausgedrückt als:

Sinus-Kubik

Diese Funktion ist eine Transformation höherer Ordnung der Sinus-Grundwelle und behält ihr oszillatorisches Verhalten bei, hat aber eine stärkere Krümmung um die Nulllinie. Wie die Standard-Sinusfunktion oszilliert sie zwischen -1 und +1, jedoch mit sanfteren Übergängen in der Nähe der Spitzen und schärferen Wendepunkten um den Nullpunkt herum. Diese Eigenschaften machen ihn ideal für die Entwicklung eines Signals für die Rückkehr zum Mittelwert, da er subtile Verschiebungen im Momentum erfasst und ein Kandidat für die Konstruktion eines überkauften/überverkauften Handelssignals ist.

Die kubische Funktion des Sinus dient somit als leistungsfähiger Mechanismus zur Glättung von Preisschwankungen bei gleichzeitiger Sensibilität für Richtungsänderungen. Bei Anwendung auf skalierte Preiseingaben ergibt sich ein Indikator, der überkaufte und überverkaufte Regionen hervorhebt – Bedingungen, die für Strategien der Rückkehr zum Mittelwert wesentlich sind.

Visualisierung des Sinuswellen-Zyklus

An dieser Stelle ist es wichtig, sich die Natur der kubischen Sinusfunktion zu vergegenwärtigen, um ein klareres Verständnis ihres Verhaltens zu erlangen und zu verstehen, wie sie in unserem Handelsrahmen angewendet werden kann. Zu diesem Zweck wird die Funktion im Bereich von -2π bis 2π aufgetragen. 

SCplot

Abbildung 1: Sinus-Kubik-Plot

Abbildung 1 zeigt die Struktur der kubischen Sinusfunktion. Die resultierende Wellenform zeigt die zyklische und symmetrische Struktur der kubischen Sinusfunktion. Innerhalb dieses Intervalls durchläuft die Funktion einen vollständigen Schwingungszyklus mit zwei Spitzen und zwei Tälern. Jede Hälfte des Zyklus weist ein positives und ein negatives Extrem auf, d. h. die negativen Eingänge (-2π bis 0) erzeugen abwechselnd +1 und -1, und das gleiche Muster gilt für die positiven Eingänge (0 bis 2π). 

Diese periodische Symmetrie unterstreicht das Gleichgewicht zwischen Aufwärts- und Abwärtsbewegungen, eine Eigenschaft, die für die Analyse der Rückkehr zum Mittelwert wesentlich ist. Durch die Beobachtung, wie die Funktion sanft zwischen diesen Spitzen und Tälern übergeht, können Händler die Wendepunkte als potenzielle Zonen der Preiserschöpfung oder -umkehr interpretieren, was eine Grundlage für die Konstruktion zuverlässiger Ein- und Ausstiegsregeln in der Triple Sine Mean Reversion-Strategie darstellt. 

Untersuchung der MQL5-Code-Struktur für das Zeichnen des kubischen Sinus

Vor der Entwicklung des Triple-Sinus-Oszillator-Indikators ist es wichtig, die grundlegende MQL5-Skriptstruktur zu verstehen, die für die Darstellung der kubischen Sinusfunktion verwendet wird. Dieser Prozess bietet einen Einblick, wie grafische Darstellungen in der MetaTrader 5-Umgebung erstellt und angezeigt werden.

Importieren der Grafikbibliothek

Das Skript beginnt mit dem Import der Grafikbibliothek, die die notwendigen Werkzeuge für das visuelle Rendering bereitstellt:

#include <Graphics/Graphic.mqh>

string g_name = "SineCubePlot";

Hier ist die Datei Graphic.mqh enthalten, die den Zugriff auf grafische Funktionen und Klassen ermöglicht, die für das Zeichnen erforderlich sind. Die Variable g_name ist als „SineCubePlot“ definiert und dient als Name des grafischen Fensters, in dem die Grafik des kubischen Sinus angezeigt wird.

Erstellen des Grafikobjekts und des Fensters

Der nächste Schritt besteht darin, eine Instanz der Klasse CGraphic zu erstellen und das Plot-Fenster zu initialisieren:

   // Create graphic object
   CGraphic graphic;
   
   // Create graphic window
   if(!graphic.Create(0, g_name, 0, 30, 30, 1000, 600))
   {
      Print("Error creating graphic!");
      return;
   }

In diesem Abschnitt wird ein grafisches Objekt namens graphic deklariert. Die Methode Create() wird dann aufgerufen, um ein grafisches Fenster mit bestimmten Parametern wie Position und Größe (30, 30, 1000, 600) zu initialisieren. Wenn die Erstellung des Fensters fehlschlägt, wird eine Fehlermeldung – „Error creating graphic!“ – ausgegeben, und das Programm wird ordnungsgemäß beendet.

Einrichten der Charteigenschaften für das Diagramm des kubischen Sinus

Es ist wichtig, das Aussehen und das Layout des Charts zu definieren. Die Funktion SetupChart() übernimmt diese Aufgabe, indem sie die Hintergrundfarbe, die Achsenbegrenzungen, die Beschriftungen, die Schriftgrößen und die Rastereigenschaften konfiguriert, um sicherzustellen, dass die endgültige Darstellung klar und optisch ansprechend ist.

//+------------------------------------------------------------------+
//| Set up the chart properties                                      |
//+------------------------------------------------------------------+
void SetupChart(CGraphic &graphic)
{
   // Set background color
   graphic.BackgroundColor(clrWhite);
         
   // Configure X axis
   graphic.XAxis().Min(-2*M_PI);
   graphic.XAxis().Max(2*M_PI);
   graphic.XAxis().Name("x");
   
   // Configure Y axis
   graphic.YAxis().Min(-1.2);
   graphic.YAxis().Max(1.2);
   graphic.YAxis().Name("sin(x)³");
   
   // Add grid
   graphic.XAxis().Color(clrGray);
   graphic.YAxis().Color(clrGray);
   
   // Increase font sizes
   graphic.XAxis().ValuesSize(14);
   graphic.YAxis().ValuesSize(14);
   graphic.XAxis().NameSize(20);
   graphic.YAxis().NameSize(20);
   
   // Add title
   graphic.CurvePlotAll();
   graphic.Update();
}

Die Funktion SetupChart() initialisiert die Chartumgebung, bevor das Zeichnen beginnt.

  • Die Hintergrundfarbe ist auf weiß eingestellt, um ein sauberes, professionelles Erscheinungsbild zu gewährleisten.
  • Die X-Achse reicht von -2π bis +2π, was zwei vollständigen Sinuswellenzyklen entspricht, während die Y-Achse von -1,2 bis +1,2 reicht, was etwas über die natürliche Amplitude der Funktion hinausgeht, um Raum für visuelle Klarheit zu schaffen.
  • Achsenbeschriftungen werden zugewiesen: „x“ für die horizontale Achse und „sin(x)³“ für die vertikale Achse.
  • Gitternetzlinien werden in Grau hinzugefügt, um die Lesbarkeit zu verbessern, ohne die gezeichnete Kurve zu überlagern.
  • Schließlich wurden die Schriftgrößen sowohl für die Achsennamen als auch für die numerischen Werte erhöht, um die Sichtbarkeit zu verbessern.

Sobald alle diese Parameter konfiguriert sind, wird das Chart mit graphic.Update() aktualisiert, um die neuen Einstellungen anzuwenden.

Erzeugen und Darstellen der kubischen Sinusfunktion

Nach der Vorbereitung des Chart-Layouts besteht der nächste Schritt darin, die Datenpunkte für die kubische Sinusfunktion zu erzeugen und sie mit der Funktion PlotSinCube() anzuzeigen.

//+------------------------------------------------------------------+
//| Generate and plot sin(x)^3 data                                  |
//+------------------------------------------------------------------+
void PlotSinCube(CGraphic &graphic)
{
   int points = 1000;
   double x[], y[];
   ArrayResize(x, points);
   ArrayResize(y, points);
   
   // Generate data points
   for(int i = 0; i < points; i++)
   {
      x[i] = -2*M_PI + (4*M_PI)*i/(points-1);
      y[i] = MathPow(MathSin(x[i]), 3);
   }
  
   // Get the curve object and set line properties
   CCurve* curve = graphic.CurveAdd(x, y, CURVE_LINES, "sin(x)³");
   if(curve != NULL)
   {
      curve.LinesStyle(STYLE_SOLID);
      curve.LinesWidth(3);
      curve.Color(ColorToARGB(clrBlue, 255));
   }   
   graphic.CurvePlotAll();
}

Mit dieser Funktion wird der kubische Sinus erstellt:

  • Festlegung von 1.000 gleichmäßig verteilten Datenpunkten innerhalb des Intervalls -2π bis +2π.
  • Berechnung von jedem y-Wert als kubischer Sinus und Speichern neben dem entsprechenden x-Wert.
  • Verwendung der Methode CurveAdd(), um die resultierende Wellenform mit einer durchgezogenen blauen Linie darzustellen, die zur besseren Sichtbarkeit eine Breite von drei Pixeln hat.
  • Aktualisierung des Charts mit CurvePlotAll() zur Darstellung der endgültigen Kurve.

Alles zusammenfügen

Die Kombination von SetupChart() und PlotSinCube() ermöglicht es dem MQL5-Skript, mathematische Funktionen effizient zu konfigurieren und zu visualisieren. Durch die Trennung von Chartkonfiguration und Datengenerierung behält das Skript seine Übersichtlichkeit und Modularität.


Der Indikator Triple Sine Oscillator (TSO)

Nachdem wir das Verhalten der kubischen Sinusfunktion untersucht haben, gehen wir nun dazu über, den Triple Sine Oscillator (TSO) zu konstruieren – einen technischen Indikator, der die mathematischen Prinzipien der kubischen Sinusfunktion auf Marktpreisdaten anwendet.

Der TSO zielt darauf ab, rohe Preisbewegungen in ein begrenztes oszillierendes Signal umzuwandeln, das zwischen -1 und +1 schwankt, was ihn ideal für die Identifizierung von Gelegenheiten zur Mittelwertumkehr macht. Da die kubische Sinusfunktion jedoch effektiv im Eingabebereich von -6,284 bis +6,284 arbeitet (was ungefähr -2π bis +2π für einen vollständigen Zyklus entspricht), müssen die rohen Preisdaten entsprechend skaliert werden, bevor sie auf die Funktion angewendet werden.

Um dies zu erreichen, wandeln wir den Schlusskurs wie folgt in eine normalisierte Eingangsvariable um:

Skalierter Preis

wobei:

  • MA = Gleitender Durchschnitt des Preises (stellt die zentrale Tendenz dar)
  • Std = Standardabweichung des Preises (misst die Volatilität)
  • k = Sensitivitätsfaktor (eine skalare Konstante, die den Grad der Schwingung steuert)

Diese Transformation gewährleistet, dass die Preisbewegungen in einer standardisierten, dimensionslosen Form dargestellt werden, die mit dem Schwingungsbereich der kubischen Sinusfunktion kompatibel ist. Diese Berechnung ist sehr aussagekräftig, da sie misst, wie viele Standardabweichungen der aktuelle Kurs von seinem gleitenden Durchschnitt entfernt ist. Ein Wert von +2 bedeutet beispielsweise, dass der Kurs zwei Standardabweichungen über dem Mittelwert liegt – ein potenziell überkaufter Zustand. 

Mit dem Sensitivitätsfaktor (k) können Händler die Reaktionsfähigkeit des Indikators anpassen – ein höherer k-Wert erhöht die Empfindlichkeit gegenüber kurzfristigen Kursschwankungen, während ein niedrigerer k-Wert das Rauschen für eine breitere Trenderkennung glättet.

Durch Anwendung der kubischen Sinusfunktion auf diesen skalierten Preisinput ergibt sich der Triple Sine Oscillator – TSO = sin³( Skalierter_Preis ) – ein begrenzter und zyklischer Indikator, der in der Lage ist, überkaufte und überverkaufte Zonen zu erkennen und potenzielle Preisumkehrpunkte auf dem Markt zu signalisieren.

Die Code-Struktur des TSO Indikators

Bevor wir zeigen, wie der Triple Sine Oscillator (TSO) in Echtzeit-Handelsszenarien funktioniert, ist es wichtig, zunächst die Codestruktur zu verstehen, die seine Funktionsweise bestimmt. Der TSO-Indikator basiert auf einem einfachen, aber leistungsstarken System, das Marktpreisdaten mithilfe der kubischen Sinusfunktion in oszillierende Signale umwandelt. Die Struktur lässt sich in den folgenden Schlüsselphasen zusammenfassen:

Abschnitt Initialisierung

Der Abschnitt „Initialisierung“ definiert die grundlegende Struktur und das visuelle Layout des TSO-Indikators. Dazu gehören der Name des Indikators, der Anzeigemodus, das Farbschema und die vordefinierten Stufen, die die Signalinterpretation steuern.

#property description "Triple-Sine Oscillator — (sin(x))^3"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1

//--- plot settings
#property indicator_label1  "Triple-Sine Oscillator"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrYellowGreen
#property indicator_width1  2

//--- indicator levels
#property indicator_level1   0.7
#property indicator_level2  -0.7
#property indicator_level3   0
#property indicator_levelcolor clrGray

In dieser Konfiguration:

  • Der Indikator trägt die Bezeichnung „Triple-Sine Oscillator – (sin(x))³“, um seine mathematische Grundlage zu verdeutlichen.
  • Er wird in einem separaten Indikatorfenster angezeigt und ist somit unabhängig vom Hauptchart der Preise.
  • Es wird nur ein Plotpuffer verwendet, in dem die berechneten TSO-Werte gespeichert und dargestellt werden.
  • Die gezeichnete Linie erscheint in GelbGrün mit einer Breite von zwei Pixeln, damit sie gut sichtbar ist.
  • Es werden drei Referenzwerte bei +0,7 , -0,7 und 0 hinzugefügt, die grau gefärbt sind. Diese Niveaus kennzeichnen visuell überkaufte, überverkaufte und neutrale (Mean Reversion) Zonen.

Die Eingabe Parameter

Der Indikator akzeptiert zwei Schlüsseleingaben, die seine Reaktionsfähigkeit und sein Glättungsverhalten bestimmen:

//--- input parameters
input int mPeriod = 20;      // Period for SMA and StdDev
input double Ksense = 0.5;   // Sensitivity multiplier

  • MA Periodenlänge (mPeriod) – definiert das Rückblickfenster für die Berechnung des einfachen gleitenden Durchschnitts (SMA) und der Standardabweichung (StdDev). Der Standardzeitraum beträgt 20 Balken.
  • Sensitivitätsfaktor (Ksense) – steuert, wie stark der Indikator auf Preisabweichungen reagiert. Ein höherer Wert erhöht die Reaktionsfähigkeit, während ein niedrigerer Wert die Ausgabe glättet. Standardmäßig ist k = 0,5.

Mit diesen Parametern können Händler den Indikator auf der Grundlage der Marktvolatilität und der bevorzugten Signalfrequenz anpassen.

Definieren der kubischen Sinusfunktion

Das Herzstück des TSO ist die Triple-Sinus-Funktion, die normalisierte Preisabweichungen mathematisch in eine gleichmäßige Schwingungsform umwandelt.

//+------------------------------------------------------------------+
//| TripleSine function                                              |
//+------------------------------------------------------------------+
double TripleSine(double x)
  {
   return(MathPow(MathSin(x), 3));
  }

Logik der Kernberechnung

Innerhalb der Hauptberechnungsschleife berechnet der Indikator den skalierten Preis für jeden Balken und transformiert ihn mit Hilfe der Triple-Sinus-Funktion.

   int limit =rates_total- MathMax(mPeriod, prev_calculated - 1);

   for(int i = limit; i>=0; i--)
     {
      if(sd[i] == 0) { TripleSineBuffer[i] = 0; continue; }

      double scaled = Ksense * (price[i] - ma[i]) / sd[i];
      TripleSineBuffer[i] = TripleSine(scaled);
     }

Hier werden der gleitende Durchschnitt und die Standardabweichung dynamisch über den angegebenen Zeitraum berechnet, um die Kursentwicklung zu normalisieren. 

Der skalierte Preis wird dann an die kubische Sinusfunktion übergeben. Dadurch werden die normalisierten Daten in ein begrenztes oszillierendes Signal umgewandelt, das zwischen -1 und +1 liegt.

Schließlich werden die berechneten TSO-Werte im TripleSineBuffer gespeichert und als durchgehende Linie gezeichnet. Diese grafische Ausgabe stellt das zyklische Verhalten der Marktdynamik dar und zeigt überkaufte, überverkaufte und Zonen der Rückkehr zum Mittelwert auf.

TSO-Indikator Demonstration

An dieser Stelle ist es an der Zeit, den neu entwickelten TSO auf der Plattform MetaTrader 5 zu testen. In dieser Phase können wir die Leistung des Indikators, sein visuelles Verhalten und seine Reaktionsfähigkeit auf reale Marktdaten überprüfen.

TSO-Demo

Abbildung 2: Triple-Sinus-Oszillator 

Bei der Demonstration des TSO wurde eine wichtige Beobachtung gemacht, nämlich die Auswirkung des Sensitivitätsfaktors (k) auf die Reaktionsfähigkeit des Indikators auf Preisbewegungen.

Als der Sensitivitätswert von 0,5 auf 2,3 erhöht wurde, reagierte der Oszillator stärker auf Marktschwankungen. Diese erhöhte Sensibilität bewirkt, dass die TSO-Linie selbst auf geringfügige Preisänderungen stark reagiert, was sie ideal für kurzfristige oder stark schwankende Handelsumgebungen macht, in denen schnelle Signale von entscheidender Bedeutung sind.

Wurde der Sensitivitätswert dagegen auf 0,1 gesenkt, so reagierte der TSO weniger stark auf die Preisentwicklung. Der Oszillator erschien glatter, filterte kleine Marktstörungen heraus und betonte stattdessen breitere Trends. Diese Einstellung wird häufig bei längerfristigen Analysen bevorzugt, bei denen die Händler eher die großen Marktzyklen als die häufigen Umschwünge erfassen wollen.

Durch die Optimierung sowohl des Sensitivitätsfaktors (k) als auch der Periodenlänge des gleitenden Durchschnitts (mPeriod) kann der TSO so fein abgestimmt werden, dass er sich effektiv an verschiedene Finanzinstrumente anpassen lässt – von sich schnell bewegenden Währungspaaren und Rohstoffen bis hin zu langsameren, trendorientierten Aktien.

Diese Flexibilität macht den TSO zu einem vielseitigen Analyseinstrument, das in der Lage ist, sein Verhalten an das Volatilitätsprofil und die Handelsmerkmale verschiedener Märkte anzupassen.


TSO Handelsstrategie: Die Methode der Rückkehr zum Mittelwert

Nachdem der TSO-Indikator nun vollständig konstruiert ist, können wir darauf aufbauen, um eine vollständige Handelsstrategie der Rückkehr zum Mittelwert zu entwickeln. Bevor wir uns mit der Strategie selbst befassen, ist es wichtig, das zugrunde liegende Konzept der Mittelwertumkehr auf den Finanzmärkten zu verstehen.

Die Rückkehr zum Mittelwert basiert auf der Idee, dass sich Preise und andere Finanzvariablen im Laufe der Zeit tendenziell wieder ihrem historischen Durchschnitt (Mittelwert) annähern. Einfacher ausgedrückt: Wenn der Preis eines Vermögenswerts erheblich von seinem langfristigen Durchschnitt abweicht – entweder steigt er zu stark an oder er fällt zu stark –, ist es wahrscheinlich, dass er zu diesem Durchschnitt zurückkehrt.

Dieses Konzept geht davon aus, dass die Märkte ein natürliches Gleichgewicht aufweisen und dass extreme Preisbewegungen vorübergehende Abweichungen sind, die durch kurzfristige Ungleichgewichte im Kauf- und Verkaufsdruck verursacht werden. Sobald dieser Druck nachlässt, normalisieren sich die Preise häufig und nähern sich ihrem Mittelwert an.

Es ist jedoch zu beachten, dass Strategien der Rückkehr zum Mittelwert in der Regel in Märkten mit starken Trends schlecht abschneiden. Unter solchen Bedingungen können sich die Kurse über längere Zeiträume hinweg vom Durchschnitt entfernen, was zu verfrühten oder falschen Umkehrsignalen führt. Daher hängt die Wirksamkeit einer Strategie der Rückkehr zum Mittelwert in hohem Maße davon ab, ob es gelingt, schwankende oder oszillierende Marktbedingungen zu erkennen.

Im folgenden Abschnitt werden wir die TSO mit den wichtigsten Marktbedingungen integrieren, um einen vollständigen Rahmen für den Handel der Rückkehr zum Mittelwert zu formulieren und die Ein- und Ausstiegsregeln zu definieren, die eine profitable Entscheidungsfindung ermöglichen.

Handelslogik und Bedingungen

1. Verkaufsbedingung

Eine Verkaufsposition (Short) wird eingeleitet, wenn der Oszillator anzeigt, dass sich das Preismomentum übermäßig über seine Gleichgewichtszone bewegt hat. Dies ist der Fall, wenn:

Vorher TSO< 0,7 und aktuell TSO> 0,7

Dieser Zustand signalisiert einen potenziell überkauften Markt, was darauf hindeutet, dass die Kurse bald wieder zum Mittelwert zurückkehren könnten.

2. Kaufbedingung

Eine Kaufposition (Long) wird ausgelöst, wenn der Oszillator eine Abweichung vom Mittelwert nach unten feststellt – eine potenziell überverkaufte Situation. Die Kriterien sind:

Vorher TSO > - 0,7 und aktuell TSO < - 0,7 

Dieses Kreuzen deutet darauf hin, dass der Verkaufsdruck nachlassen könnte, was die Wahrscheinlichkeit einer Aufwärtskorrektur erhöht.

3. Ausstiegsbedingung

Alle offenen Positionen werden geschlossen, wenn entweder die Schwellenwerte für den Take Profit (TP) oder den Stop Loss (SL) erreicht sind. Dadurch wird sichergestellt, dass die Gewinne gesichert und die Abwärtsrisiken wirksam gesteuert werden.

4. Regeln für mehrfache Eröffnungen

Die Strategie unterstützt mehrere Einstiegsmöglichkeiten in Richtung eines aktiven Handels, um von anhaltenden Bewegungen der Rückkehr zum Mittelwert zu profitieren:

  • Wenn eine Kaufposition aktiv ist, werden keine Verkaufspositionen eröffnet.
  • Weitere Kaufgeschäfte können nur dann hinzugefügt werden, wenn die Kaufbedingung erneut erfüllt wird, während das erste Handelsgeschäft offen bleibt.
  • Die gleiche Regel gilt für Verkaufspositionen – neue Verkäufe sind nur zulässig, wenn die bestehenden aktiv sind und die Verkaufsbedingung erneut eintritt.

Um einen ausufernden Handel zu vermeiden und eine ausreichende Marktbewegung zwischen den Einstiegen zu gewährleisten, erzwingt das System ein 10-Balken-Intervall, bevor es nach einem neuen Einstiegssignal sucht.

Außerdem ist die maximale Anzahl der Einträge pro Richtung auf fünf (5) begrenzt. Durch diese Beschränkung wird ein Gleichgewicht zwischen Gewinnpotenzial und kontrolliertem Risiko hergestellt und ein übermäßiges Stapeln von Positionen in volatilen Zeiten vermieden.

Code-Struktur des TSO Expert Advisor

Die erste Operation innerhalb der Funktion OnTick() besteht darin, festzustellen, ob sich ein neuer Balken (Kerze) gebildet hat. Dies geschieht mit der nutzerdefinierten Funktion IsNewBar() .

Diese bedingte Anweisung stellt sicher, dass alle Berechnungen – einschließlich Indikatoraktualisierungen und Signalprüfungen – nur einmal pro abgeschlossenem Balken und nicht bei jedem eingehenden Tick erfolgen. Dieser Ansatz reduziert die Rechenlast erheblich und verhindert wiederholte Handelsauslöser innerhalb derselben Kerze.

    if(!IsNewBar()) return;
    
    // Calculate TSO values
    CalculateTSO();
    
    // Check entry conditions
    CheckEntryConditions();
Sobald ein neuer Balken bestätigt wird, ruft der EA die Funktion CalculateTSO() auf. 

Diese Funktion berechnet die jüngsten Werte des Triple Sine Oszillators (TSO) auf der Grundlage der aktuellen Kursdaten. Er führt intern die folgenden Operationen durch:

  • Aktualisiert den gleitenden Durchschnitt (MA) und die Standardabweichung (Std) des Kurses.
  • Skaliert den Preis mit dem Sensitivitätsfaktor (k).
  • Wendet die kubische Sinusfunktion an, um den TSO-Wert zu erzeugen.

Die berechneten Oszillatorwerte (früherer und aktueller Wert) werden dann in Puffern gespeichert und in der Signalbewertungsphase verwendet.

Nach der Berechnung der aktualisierten TSO-Werte bewertet der EA die Handelslogik mit der Funktion CheckEntryConditions().

Die Funktion CheckEntryConditions() bildet das Herzstück des Triple Sine Mean Reversion Expert Advisors, das für die Validierung von Handelssignalen und die Verwaltung von Positionseinträgen auf der Grundlage der TSO-Indikatorwerte verantwortlich ist. Es integriert Positionsverfolgung, Handelsrichtungskontrolle und Signalverifizierung, um sicherzustellen, dass jeder Handel die Logik und Risikoparameter des Systems einhält.

//+------------------------------------------------------------------+
//| Check entry conditions                                           |
//+------------------------------------------------------------------+
void CheckEntryConditions()
{
    // Count current positions
    CountPositions();
    
    // Check if we can open new positions
    if(buyCount + sellCount >= MaxEntries)
    {
        Print("Maximum entries reached: ", MaxEntries);
        return;
    }
    
    // Check Buy condition: PrevTSO > -0.7 && CurTSO < -0.7
    if(prevTSO > -TSO_Threshold && curTSO < -TSO_Threshold)
    {
        Print("Buy condition met");
        if(CanOpenBuy())
        {
            OpenBuyPosition();
        }
    }
    
    // Check Sell condition: PrevTSO < 0.7 && CurTSO > 0.7
    if(prevTSO < TSO_Threshold && curTSO > TSO_Threshold)
    {
        Print("Sell condition met");
        if(CanOpenSell())
        {
            OpenSellPosition();
        }
    }
}

Nachstehend finden Sie die operative Aufschlüsselung der Funktion:

Zu Beginn der Funktion zählt der EA die Anzahl der aktiven Kauf- und Verkaufspositionen, die derzeit auf dem Markt geöffnet sind. Die Informationen werden in den Variablen buyCount und sellCount gespeichert, die später zur Durchsetzung von Positionslimits und Richtungskonsistenz verwendet werden.

Bevor neue Trades eröffnet werden können, stellt der EA sicher, dass die Gesamtzahl der Positionen das vordefinierte Maximum nicht überschreitet.

Diese Bedingung verhindert ein Handelsübermaß, indem die Gesamtzahl der offenen Positionen auf fünf (5) begrenzt wird, wie in der Strategie festgelegt. Sobald dieser Schwellenwert erreicht ist, stoppt der EA alle weiteren Eingaben, bis eine oder mehrere Positionen geschlossen sind.

Das System wertet dann die Kaufsignalbedingung aus, die eintritt, wenn der vorherige TSO-Wert größer als -0,7 ist und der aktuelle TSO-Wert unter -0,7 fällt.

Wenn diese Bedingung erfüllt ist, signalisiert dies einen potenziell überverkauften Zustand des Marktes.

Bevor der EA eine neue Kauforder ausführt, ruft er die Hilfsfunktion CanOpenBuy() auf, die sicherstellt, dass die Order auch tatsächlich ausgeführt wird:

  • Es werden keine bestehenden Verkaufspositionen eröffnet (um den einseitigen Handel aufrechtzuerhalten).
  • Das minimale Balkenintervall (10 Balken) seit der letzten Eingabe ist verstrichen.

Sobald diese Bedingungen verifiziert sind, führt der EA einen neuen Kaufauftrag über OpenBuyPosition() aus.

Ebenso wird die Verkaufsbedingung geprüft, wenn der vorherige TSO-Wert kleiner als +0,7 ist und der aktuelle TSO-Wert über +0,7 liegt.

Dies deutet auf einen überkauften Zustand hin und lässt vermuten, dass der Kurs wieder nach unten gehen könnte. Die Funktion CanOpenSell() stellt sicher, dass keine Kaufpositionen aktiv sind und dass der Mindestabstand zwischen den Balken erfüllt ist, bevor ein neuer Verkaufshandel eröffnet wird.

Handelsfilterung und -kontrolle


Durch die Kombination von CountPositions(), CanOpenBuy() und CanOpenSell() setzt das System die folgenden Sicherheitsvorkehrungen durch:

  • Direktionale Konsistenz: Es ist immer nur eine Handelsrichtung (Kauf oder Verkauf) aktiv.
  • Positionskontrolle: Es können nicht mehr als fünf Positionen gleichzeitig geöffnet sein.
  • Timing-Disziplin: Es müssen mindestens 10 Balken vergehen, bevor eine neue Position in Betracht gezogen wird.

TSO Expert Advisor Demonstration

Nachdem wir Sie durch die Codestruktur und die interne Logik des EA geführt haben, zeigen wir Ihnen nun, wie das System Trades in einer Live-Marktumgebung ausführt.

Wenn er eingesetzt wird, überwacht der EA kontinuierlich die Marktdaten in Echtzeit und bewertet die Eröffnungsbinstiegsbedingungen bei der Eröffnung jedes neuen Balkens. Sobald ein gültiges Signal erkannt wird – basierend auf dem Crossover-Verhalten des TSO – löst der EA automatisch Kauf- oder Verkaufsaufträge gemäß den zuvor definierten Regeln aus.

TSO EA-Demo

Abbildung 3: TSO EA-Demonstration

Abbildung 3 zeigt, wie der TSO-EA diese Aufträge in einem realen Marktszenario ausführt. Jede Kauf- und Verkaufsausführung entspricht genau den Schwellenwertüberschreitungen des Oszillators. 

Darüber hinaus können mehrere Einträge in dieselbe Richtung beobachtet werden, was die Fähigkeit des EA widerspiegelt, bestehende Positionen zu ergänzen, wenn dieselbe Bedingung erneut auftritt – vorausgesetzt, das 10-Balken-Intervall und die maximale Einstiegsgrenze werden eingehalten.

Durch diesen automatisierten Ausführungsprozess wandelt der TSO EA die mathematische Signalerkennung in präzise Marktaktionen um und gewährleistet so Konsistenz, Schnelligkeit und Disziplin im Handelsmanagement.


Schlussfolgerung

In diesem Artikel haben wir erfolgreich einen neuen Handelsansatz entwickelt, der die mathematische Modellierung mit der technischen Analyse verbindet. Ausgehend von der kubischen Sinusfunktion haben wir den Triple Sine Oscillator (TSO) konstruiert – einen einzigartigen Indikator, der das zyklische Marktverhalten erfassen und Möglichkeiten zur Mittelwertumkehr erkennen soll. Wir haben dieses Konzept zu einer vollständigen Strategie der Rückkehr zum Mittelwert erweitert und ihre Struktur, Codelogik und den Echtzeit-Handelsausführungsprozess detailliert beschrieben.

Die mathematische Grundlage des TSO ermöglicht eine effektive Erkennung von überkauften und überverkauften Zuständen und liefert rechtzeitig Einstiegssignale für Märkte, die sich in einer gewissen Bandbreite bewegen. Durch die Einbeziehung mehrerer Einstiegsmöglichkeiten ermöglicht die Strategie Händlern, in starken Phasen der Mittelwertumkehr „einzusteigen“ und die potenziellen Gewinne zu maximieren. Das bedeutet, dass es zwar die Gewinne steigern kann, aber auch ein höheres Risiko von Verlusten mit sich bringt, wenn sich die Marktbedingungen unerwartet ändern.

In diesem Artikel haben wir gezeigt, wie eine mathematische Funktion in einen neuartigen Oszillator umgewandelt und dann zu einer strukturierten Handelsstrategie der Rückkehr zum Mittelwert ausgebaut werden kann. Die Triple-Sinus-Methode zeigt, wie Kreativität im mathematischen Design zu innovativen Handelsinstrumenten führen kann, die auch in der Praxis anwendbar sind.

In unserem nächsten Artikel werden wir die Leistung des TSO in Kombination mit trendfolgenden Indikatoren bewerten und seine Robustheit und Anpassungsfähigkeit unter verschiedenen Marktbedingungen testen, um seine Stärken, Grenzen und sein Optimierungspotenzial zu ermitteln.

Dateiname Beschreibung
SineCube.mq5 Die Datei stellt die mathematische Sinusfunktion im Bereich von -2π bis +2π dar. Nach dem Zeichnen muss die Vorlage aktualisiert werden, um den Plot zu entfernen
TripleSineOscillator.mq5 Diese Datei erzeugt den Oszillator-Indikator im Chart-Fenster.
TSO_EA.mq5 Diese Datei ist ein Expert Advisor, der den Handel in Echtzeit ausführt.

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

Beigefügte Dateien |
SineCube.mq5 (5.61 KB)
TSO_EA.mq5 (9.64 KB)
Letzte Kommentare | Zur Diskussion im Händlerforum (2)
Paul Afolabi
Paul Afolabi | 15 Nov. 2025 in 17:56
Kann ich das bitte zum Testen bekommen?
Juvenille Emperor Limited
Eleni Anna Branou | 15 Nov. 2025 in 18:44
Paul Afolabi #:
Kann ich das bitte zum Testen bekommen?
Sie finden es in dem Artikel im ersten Beitrag.
Die Übertragung der Trading-Signale in einem universalen Expert Advisor. Die Übertragung der Trading-Signale in einem universalen Expert Advisor.
In diesem Artikel wurden die verschiedenen Möglichkeiten beschrieben, um die Trading-Signale von einem Signalmodul des universalen EAs zum Steuermodul der Positionen und Orders zu übertragen. Es wurden die seriellen und parallelen Interfaces betrachtet.
Entwicklung des Price Action Analysis Toolkit (Teil 50): Entwicklung der RVGI, CCI und SMA Confluence Engine in MQL5 Entwicklung des Price Action Analysis Toolkit (Teil 50): Entwicklung der RVGI, CCI und SMA Confluence Engine in MQL5
Vielen Händlern fällt es schwer, echte Umkehrungen zu erkennen. Dieser Artikel stellt einen EA vor, der RVGI, CCI (±100) und einen SMA-Trendfilter kombiniert, um ein einziges klares Umkehrsignal zu erzeugen. Der EA enthält ein On-Chart-Panel, konfigurierbare Warnungen und die vollständige Quelldatei zum sofortigen Herunterladen und Testen.
Eine alternative Log-datei mit der Verwendung der HTML und CSS Eine alternative Log-datei mit der Verwendung der HTML und CSS
In diesem Artikel werden wir eine sehr einfache, aber leistungsfähige Bibliothek zur Erstellung der HTML-Dateien schreiben, dabei lernen wir auch, wie man eine ihre Darstellung einstellen kann (nach seinem Geschmack) und sehen wir, wie man es leicht in seinem Expert Advisor oder Skript hinzufügen oder verwenden kann.
Automatisieren von Handelsstrategien in MQL5 (Teil 40): Fibonacci-Retracement-Handel mit nutzerdefinierten Levels Automatisieren von Handelsstrategien in MQL5 (Teil 40): Fibonacci-Retracement-Handel mit nutzerdefinierten Levels
In diesem Artikel bauen wir einen MQL5 Expert Advisor für den Fibonacci-Retracement-Handel auf, indem wir entweder Tageskerzenbereiche oder Lookback-Arrays verwenden, um nutzerdefinierte Niveaus wie 50 % und 61,8 % für den Einstieg zu berechnen und Auf- oder Abwärts-Setups auf der Grundlage des Schlusskurses im Vergleich zum Eröffnungskurs zu bestimmen. Das System löst Käufe oder Verkäufe beim Überschreiten von Kursniveaus aus, mit maximalen Abschlüssen pro Niveau, optionaler Schließung bei neuen Fib-Kalks, punktbasierten Trailing-Stops nach einer Mindestgewinnschwelle und SL/TP-Puffern als Prozentsätze der Spanne.