English
preview
Optimieren der Trendstärke: Handel in Richtung von Trend und Stärke

Optimieren der Trendstärke: Handel in Richtung von Trend und Stärke

MetaTrader 5Handel |
36 2
Eugene Mmene
Eugene Mmene

Einführung

Dieser Artikel richtet sich sowohl an Händler, die Schwierigkeiten haben, die richtige Handels- und Trendrichtung zu wählen, als auch an Händler, die sich disziplinieren und Verluste vermeiden oder reduzieren wollen, indem sie nur in der Trendrichtung handeln und nicht gegen den Trend oder in kurzfristigen Schwankungen handeln. Es eignet sich auch hervorragend für Trader, die unter Entscheidungsunfähigkeit leiden oder eine Handelsgelegenheit überanalysieren und dadurch letztlich den gesamten Trade verpassen, weil sie nicht den Knopf drücken und den Trade eingehen, da sie die ideale Trendrichtung und Tendenz nicht erkennen konnten. Ich glaube, ein weiterer Nutznießer dieses Artikels sind neue oder in der Entwicklung befindliche Händler, die sich noch mit der Idee und der Schwierigkeit auseinandersetzen, die ideale Trendrichtung zu wählen, sei es langfristig, intraday oder die allgemeine Trendstärke und -richtung, um ihre Handelsentscheidungen zu bestimmen.  

Ich glaube, dass der Handel mit Stärke und in Trendrichtung in den meisten, wenn nicht in allen Fällen, den Unterschied zwischen Trader A und Trader B mit gleichen Fähigkeiten und Erfahrungen ausmachen kann. Die Notwendigkeit für einen Händler, gewinnbringende und exzellente Entscheidungen beim Handel zu treffen, insbesondere bei Intraday- und langfristigen Trades, hängt weitgehend davon ab, wie man sich in Bezug auf die Trendrichtung und -stärke positioniert. Es ist statistisch immer wieder bewiesen, dass der Handel gegen den Trend oft kurzfristige Kursbewegungen bietet, die meist Rücksetzer kurz vor einer großen Bewegung in Trendrichtung sind, und wenn man nicht aufpasst, kann man sehr hohe Verluste erleiden. Zwar erweisen sich Transaktionen, die sich an der Stärke und Richtung eines Trends orientieren, oft als weniger kritisch, obwohl man ungünstige Einstiegspunkte gewählt hat, und können mitunter zu zusätzlichen Gewinnen in Höhe von Hunderten, wenn nicht sogar Tausenden Dollar führen, sofern der Trader geduldig genug ist, auf die Fortsetzung des Trends zu warten. 

Als Trader weiß ich, dass Trader mit unzähligen Herausforderungen konfrontiert sind; tatsächlich stehen die meisten Trader irgendwann in ihrer Trading-Karriere vor fast ähnlichen, wenn nicht gar identischen Herausforderungen. Was sie jedoch voneinander unterscheidet, ist, dass verschiedene Trader diese Herausforderungen unterschiedlich bewältigen, darauf reagieren und sie vorhersehen; daher rührt der Unterschied in den Trading-Ergebnissen, der sich als gewaltig erwiesen hat, auch wenn die Trader gleich stark sind und sich in Bezug auf Fähigkeiten, Erfahrung, Gelassenheit, Entscheidungsfindung und Technik nur geringfügig unterscheiden.

Eine der größten, wenn nicht die häufigste Herausforderung ist die Bestimmung der Trendrichtung und -stärke, die in diesem Artikel behandelt werden soll. Dies ist eine große Herausforderung für angehende und neue Händler und sogar für einige weitaus erfahrenere Händler, wie es auch für mich als angehenden Händler der Fall war. Dieser Artikel und der EA helfen dabei, die ausgeführten Trades relativ zum Trend auszurichten und somit kurzfristige Trades gegen den Trend zu vermeiden. Dies wird den sich entwickelnden Händlern helfen, selbstbewusster und kritischer bei der Ausführung von Trades zu sein, da sie schließlich lernen und begreifen werden, wie sie Trends und Richtungen von Handelsbewegungen bestimmen können. Und sobald diese Herausforderung der Bestimmung der Handelsrichtung gelöst ist, bleibt nur noch die Suche nach der richtigen Konstellation, dem richtigen Zeitpunkt und der richtigen Position für die Ausführung von Trades. 

Es hat sich außerdem gezeigt, dass die analysierten, ausgeführten, gehandelten und verfolgten Trades in Bezug auf die Trendrichtung nicht nur genauer und schneller sind, sondern auch einen sehr geringen Drawdown aufweisen, da sich der Preis mit größerer Geschwindigkeit und geringerem Drawdown auf seine Zielpunkte zubewegt. Außerdem sind die Kursschwankungen stärker, d. h., auch wenn man sich in einem Drawdown befindet, wird der Kurs bald entsprechend der Trendrichtung und der Stärke der Erzählung im Spiel handeln und aus dem Drawdown herauskommen.

Dieser Artikel befasst sich ausführlich mit einem EA, der speziell für Händler entwickelt wurde, die geduldig genug sind, ihre Positionen nur dann auszuführen und zu halten, wenn sie relativ zur Trendrichtung und -stärke handeln und vermeiden, gegen die Trendrichtung zu handeln. Sie verzichten auf entgegengesetzte Trades und halten Positionen, ohne ihre Ausrichtung häufig zu ändern, bis Take-Profit-Ziele erreicht werden oder sich der allgemeine Trend ändert. Dieser EA ist auch für Intraday-Händler und kurzfristige Trader von entscheidender Bedeutung, da er ihnen hilft, nach der bestmöglichen Preisbewegung in Bezug auf den Trend zu handeln und so die Erfolgsquote zu erhöhen.

Gleitender Durchschnitt, der einen starken Aufwärtstrend abbildet



Introspektion des Handels mit Trendstärke und Richtung

Das Hauptanliegen dieses Artikels ist es, hervorzuheben, wie wichtig es ist, ausschließlich in Richtung und Stärke des Trends zu handeln – Aspekte, die von den meisten Tradern, insbesondere von denen mit begrenzter Erfahrung, oft ignoriert werden. Selbst diejenigen, die viel auf dem Spiel haben, übersehen möglicherweise diesen entscheidenden Faktor, der sich letztlich als entscheidend erweisen könnte.

Die Wahrheit ist, dass sich der Preis von einer Schlüsselebene zu einer anderen Schlüsselebene im höheren Zeitrahmen bewegt, wie MN, W1 und D1, und die Richtung, in die sich der Preis in diesem höheren Zeitrahmen bewegt, wird als Trend bezeichnet; was auch immer im niedrigeren Zeitrahmen geschieht, ist nur eine Folgeerscheinung. Dies ist eigentlich das Gegenteil von dem, was die Mehrheit glaubt, nämlich dass der untere Zeitrahmen derjenige ist, der Trends und Kursbewegungen im oberen Zeitrahmen bestimmt oder einleitet, und dass Trades im unteren Zeitrahmen beginnen und ihren Ursprung haben und dann wiederum den Preis und die Kursbewegung im oberen Zeitrahmen bestimmen.

In diesem Sinne bedeutet dies einfach, dass wir den Trend eines Handelspaares oder Vermögenswerts leicht bestimmen können, indem wir die Kursentwicklung in höheren Zeitrahmen, gleitende Durchschnitte und Konstellationen genau beobachten. Bevor wir etwas tun, sollten wir uns schnell auf den Monatschart (MN) konzentrieren und anschließend auf die niedrigeren Zeitrahmen, nachdem wir unsere Beobachtungen und sogar Markierungen der Schlüsselbereiche und interessanten Punkte gemacht haben. Die Schlüsselbereiche und interessanten Punkte werden oft mit unterschiedlichen Bezeichnungen und Terminologien bezeichnet, wenn sie in verschiedenen Strategien verwendet werden. Sie sollten als sehr wichtig angesehen werden, da sie uns helfen, den Trend und die Richtung der Preise besser zu verstehen und zu interpretieren, und manchmal sogar helfen, die Geschwindigkeit und Stärke eines Vermögenspaares zu bestimmen.

Einige Händler betrachten sie als Orderblöcke, andere als Unterstützung und Widerstand, andere als Angebots- und Nachfragezonen, andere als Liquiditätsraubzüge und so weiter, aber das Wichtigste, worüber sich all diese Strategien und Theorien einig sind, ist, dass diese Punkte sehr wichtige und nützliche Niveaus sind, die oft Punkte von Interesse sind, an denen man starke Preisreaktionen vorhersehen kann und an denen auch die meisten klinisch genauen und professionellen Händler nach ihren idealen Konstellationen suchen. Und genau das plant dieser Artikel ausnutzen: wie man einen EA erstellt und einsetzt, der sich dieses Phänomen effektiv zunutze macht.

Gleitende Durchschnitte, die einen Aufwärtstrend auf dem Zeitrahmen D1 abbilden


Trenderkennung, wöchentlicher, monatlicher und täglicher Trend und Vorhersage von Trendrichtung und -stärke

Nach dem Einloggen in ein MN-Chart werden als Erstes die zuvor besprochenen Schlüsselpunkte (Reaktionsbereiche) markiert, die sich in der Regel an den Tiefst- und Höchstständen der vergangenen Woche befinden. Dieser wichtige Reaktionsbereich sollte immer im Auge behalten werden, da der Kurs hier in der Regel immer eine Reaktion zeigt, und er kann auch die Kursentwicklung für diesen Monat oder den Rest des Monats bestimmen. Wenn wir also bestätigen, dass sich der Preis auf diesem MN-Zeitrahmen von einem Schlüsselbereich zu einem anderen bewegt, bedeutet dies, dass wir die monatliche Trendrichtung bestimmt haben, und die Trades in diesem Monat werden in Richtung der Schlüsselbereiche auf dem MN-Zeitrahmen gezogen.

Dies ist das, was man als niedrig hängende Früchte bezeichnen könnte, da es sich um den nächstgelegenen Reaktionsbereich auf der Basis des (MN)-Chart-Zeitrahmens handelt. Ein weiterer interessanter Punkt sind die gleitenden Durchschnitte, da sie zur Beurteilung der aktuellen Stärke und Geschwindigkeit des Kurses in Richtung seines Ziels herangezogen werden können. Der letzte wichtige Bereich, den es zu beachten gilt, ist die Kursbewegung, da sie ein sehr wichtiger Faktor für die Kursentwicklung ist und auch bei einer plötzlichen Trendänderung oder einem Trendbruch Alarm schlagen kann. Gleitende Durchschnitte brauchen zwar Zeit, um klare Signale zu geben, aber die Preisentwicklung ist weitaus informativer, vor allem, wenn Sie aufmerksam genug sind und wissen, wie man die Preisentwicklung liest.

Händler, die aufmerksam genug sind, werden anhand der Kursentwicklung feststellen, dass der Kurs zu Beginn einiger langfristiger Trends einen Schlüsselbereich erreicht und schnell einen Tiefst-/Höchststand ausräumt, um dann schnell Engulfing-Kerzen zu bilden oder eine Verschiebung der Marktstruktur zu bewirken. Dies kann in einem noch kleineren Zeitrahmen geschehen und ist kein Muss; es muss im gleichen Zeitrahmen geschehen, um erfolgreich und effektiv zu sein. Wenn dies der Fall ist, z. B. wenn der Kurs den Tiefststand der Vorwoche überwindet und eine Engulfing-Aufwärtskerze oder eine Verschiebung der Marktstruktur auftritt, entwickelt sich der Kurs schnell in die entgegengesetzte Richtung; möglicherweise werden wir Zeuge des Beginns eines neuen Trends.

Das Ziel ist es, geduldig zu warten, bis die Engulfing-Kerze/Marktstrukturverschiebung abgeschlossen ist. Sobald wir sicher sind, dass sie erfolgreich war, haben wir unsere neuen Trends identifiziert und können Kaufpositionen in Bezug auf die Richtung des neuen Trends eingehen. Alle ausgeführten Trades sollten in Übereinstimmung mit dem aktuellen Trend erfolgen, da Trades in Trendrichtung schneller sind und eine sauberere Preisaktion mit sehr geringem Drawdown aufweisen. Es ist auch ideal, nicht gegen den Trend zu handeln, bis er sich wieder ändert.

Es wird Schwankungen und kurzfristige Umkehrungen geben, insbesondere im unteren Zeitrahmen, aber sie werden die langfristigen Trendaussichten nicht wirklich beeinflussen. Das Ende von Trends oder Umschwünge können am anderen Ende des Monats oder in den bereits erläuterten Schlüsselbereichen auftreten. Die gleiche Formel oder Theorie findet sich auch auf dem Wochenchart und wird zur Bestimmung des wöchentlichen Trends, der Aussichten und des Kommentars verwendet.

Das letzte Szenario, in dem dieses großartige und ausgeprägte Merkmal auftritt, ist der D1-Zeitrahmen, der meiner Meinung nach ein kritischer und grundlegender Zeitrahmen ist, weil er als Mittelweg oder Brücke zwischen zwei Extremen fungiert: dem kürzeren und dem längeren Zeitrahmen. Der D1-Zeitrahmen ist wahrscheinlich sogar der beste Zeitrahmen für Intraday- und kurzfristige Trades, die sich über ein paar Tage oder Stunden erstrecken.

Außerdem ist es in diesem Zeitrahmen relativ einfach, sowohl kurzfristige als auch langfristige Schwankungen zu erkennen und schließlich die Geschichte und den Trend zu erkennen. Da es sich hier um einen sehr wichtigen Zeitrahmen handelt, sollten sich Händler auf die Preisbewegung, den Trend und die gleitenden Durchschnitte konzentrieren, da alle erforderlichen Daten hier liegen und antizipiert und gehandelt werden, um die Trends und ihre Richtung zu bestimmen.

Einige wichtige Faktoren, die es zu beachten gilt, sind Widerstands- und Unterstützungsbereiche sowie Angebot und Nachfrage und Orderblöcke, da sie sich alle auf dasselbe Muster beziehen, nur mit anderen Namen, und sogar der Gesamttrend kann sich manchmal ändern, je nach geopolitischem Klima oder Faktoren, die den gehandelten Vermögenswert unterstützen.

Der letzte goldene Nugget, den ich mir für den Schluss aufgespart habe, ist, dass ein Händler, um optimale Ergebnisse und Erfolg zu erzielen, der Ausführung von Trades den Vorrang geben sollte, wenn beide oder alle 3 Zeitrahmen übereinstimmen und die gleiche Richtung, Erzählung und den gleichen Trend aufweisen. Wenn W1, D1 und MN alle dieselbe Sprache sprechen, sind dies einige der einfachsten Handelstage überhaupt – sehr schnell mit minimalen Drawdowns oder Rücksetzern. 

In den nächsten Kapiteln werde ich näher darauf eingehen, wie man einen EA entwirft und konfiguriert, der auf der Trendanalyse basiert und diese zur Bestimmung seiner Handelsüberzeugungen nutzt. 

Beispiel für eine Verschiebung der Marktstruktur bei Handelspositionen in einem Abwärtstrend


Automatisieren von Handelsentscheidungen mit Trend King Expert Advisor in MQL5

Um diese Strategie zu automatisieren, zu veranschaulichen und umzusetzen, habe ich Folgendes entwickelt:

  • Ein Trendfolge-Expertenberater, der Trends analysiert und mögliche Handelseinstiegspunkte nur in Trendrichtung ausführt und dabei Trailing-Stop-Loss und gleitende Durchschnitte zur Unterstützung der Trenderkennung einbezieht.

Prozess der Entscheidungsfindung

Die Entscheidungen dieses Expert Advisors (Trenderkennung, Preisaktionserkennung und Handelsausführung) basieren auf der folgenden Logik:

Quellcode des Trend King Expert Advisors:

Dieser Expert Advisor erkennt potenzielle Handelssignale, die mit der allgemeinen Trendrichtung und -stärke übereinstimmen, und wartet auf Handelsmöglichkeiten nur in der Trendrichtung, wobei Positionen entgegen dem Trend vermieden werden. Ferner werden exponentielle und einfache gleitende Durchschnitte verwendet, um die allgemeine Trendrichtung für den Einstieg in den Handel zu ermitteln, und es wird eine Trailing-Stop-Loss-Logik angewendet, um Stop-Loss-Niveaus zu bestimmen und das Kapital zu schützen, wenn sich der Preis zu seinen Gunsten entwickelt. Er beinhaltet ein Risikomanagement (1 % Risiko pro Handel). 

Eingabeparameter: Konfigurierbare Handelseinstellungen

Über die Eingabeparameter können Nutzer das Verhalten des EAs für den Handel mit GBPJPY, GBPUSD und EURUSD anpassen, ohne den Kerncode zu ändern. „LotSize“ ist auf 0,1 eingestellt, eine konservative Größe, die für GBP-Paare geeignet ist, um das Risiko bei deren moderater Volatilität (100–300 Pips täglich) zu begrenzen. „LookbackBars“ (3) definiert das Zeitfenster zur Ermittlung der jüngsten Hochs/Tiefs auf H1/H4/D1 und sorgt so für ein Gleichgewicht zwischen Reaktionsgeschwindigkeit und Zuverlässigkeit. „StopLossPips“ (150) und „TakeProfitPips“ (600) sind an die typischen Schwankungsbreiten von GBPJPY, GBPUSD und EURUSD angepasst und zielen auf ein Risiko-Ertrags-Verhältnis von 1:4 ab, um von starken Trends nach einer Kursbereinigung zu profitieren. „TrailingStopPips“ (100) stellt sicher, dass Gewinne bei stärkeren Kursbewegungen von GBPJPY gesichert werden. „EngulfingMinBodyRatio“ (0,3) stellt sicher, dass der Körper der Engulfing-Kerze im Verhältnis zur vorherigen Kerze signifikant ist, wodurch schwache Signale herausgefiltert werden.

„TradeTimeframe“ (H1) und „ConfirmationTimeframe“ (M15) ermöglichen eine flexible Erkennung von Bereinigungssignalen, genauer gesagt eine schnellere Bestätigung des Einstiegs. „MaxCandlesPostPurge“ (3) begrenzt das Zeitfenster für Engulfing-Signale nach der Bereinigung, um späte Einstiegsmöglichkeiten zu vermeiden. „VolumeThreshold“ (1.0) erfordert eine Volumenspitze, um die Liquidität zu bestätigen, was für die nachrichtengetriebenen Bewegungen des GBPUSD entscheidend ist. „UseTrendFilter“ (true) und „SMAPeriod“ (50) aktivieren einen 50-Perioden-SMA, um sicherzustellen, dass die Trades mit dem breiteren Trend übereinstimmen und falsche Ausbrüche in unruhigen GBP-Märkten vermieden werden.

//+------------------------------------------------------------------+
//|                 TrendKingEA.mq5                                  |
//| Expert Advisor for MetaTrader 5                                  |
//| Description:Trades based on Trend strenght and direction, waits  |
//| for trade set ups on trend direction, with flexible execution.   |
//+------------------------------------------------------------------+
#property copyright "Eugene Mmene"
#property link "https://www.EMcapital.com"
#property version "1.06"
//--- Input parameters
input double LotSize = 0.1;                              // Lot size for trades
input int LookbackBars = 5;                              // Number of bars to check for highs/lows
input double StopLossPips = 30.0;                        // Stop loss in pips (adjusted for GOLD#)
input double TakeProfitPips = 90.0;                      // Take profit in pips (adjusted for GOLD#)
input double TrailingStopPips = 40.0;                    // Trailing stop in pips
input double BreakevenPips = 30.0;                       // Move to BE after 30 pips profit
input double EngulfingMinBodyRatio = 0.5;                // Min body ratio for engulfing candle
input ENUM_TIMEFRAMES TradeTimeframe = PERIOD_M15;       // Primary timeframe for trading
input ENUM_TIMEFRAMES ConfirmationTimeframe = PERIOD_M5; // Lower timeframe for engulfing
input ENUM_TIMEFRAMES TrendTimeframe = PERIOD_H1;        // Trend from H1 SMA
input int MaxCandlesPostPurge = 5;                       // Max H1 candles to wait for engulfing
input double VolumeThreshold = 1.2;                      // Volume multiplier for liquidity confirmation
input bool UseTrendFilter = true;                        // Use SMA trend filter
input int SMAPeriod = 50;                                // SMA period for trend filter

Die Funktion OnInit: Einrichtung und Validierung für robusten Handel

Die Funktion „OnInit“ wird einmal ausgeführt, wenn der EA auf den Chart geladen wird, und stellt sicher, dass er für den Handel mit GBPUSD, GBPJPY und EURUSD richtig eingestellt ist. Sie validiert „TradeTimeframe“ (H1, H4 oder D1) und den ConfirmationTimeframe (M15 oder M30), um die Kompatibilität mit dem Multi-Zeitrahmen-Ansatz der Strategie zu gewährleisten, und weist ungültige Eingaben zurück, um Fehler zu vermeiden. Die Funktion ruft die Kontraktgröße des Symbols unter Verwendung von „SymbolInfoDouble“ ab, was für eine genaue Positionsgrößenbestimmung bei GBP-Paaren wichtig ist, bei denen die Pip-Werte unterschiedlich sind (z. B. ist der Pip-Wert von GBPJPY aufgrund der JPY-Skala kleiner).

Globale Variablen, die Hochs/Tiefs („lastHighH1“, „lastLowH1“ etc.), Kerzenzeiten und Handelsstatus verfolgen, werden mit Null oder false initialisiert, wodurch der Status des EAs zurückgesetzt wird. Die Überprüfung der Kontraktgröße stellt sicher, dass der EA korrekte Losgrößen berechnen kann, was besonders wichtig für die höhere Pip-Wert-Sensitivität des GBPJPY ist. Eine erfolgreiche Initialisierung protokolliert den Zeitrahmen und die Kontraktgröße und bestätigt damit die Handelsbereitschaft. Diese Konstellation stellt sicher, dass der EA robust und auf die spezifische Marktdynamik von EURUSD/GBPUSD/GBPJPY zugeschnitten ist, im Gegensatz zu den breiteren Preisschwankungen von Gold.

int OnInit()
{
   if(TradeTimeframe != PERIOD_M15 && TradeTimeframe != PERIOD_M30)
   {
      Print("Invalid trade timeframe. Use M15 or M30.");
      return(INIT_PARAMETERS_INCORRECT);
   }
   if(ConfirmationTimeframe != PERIOD_M5 && ConfirmationTimeframe != PERIOD_M15)
   {
      Print("Invalid confirmation timeframe. Use M5 or M15.");
      return(INIT_PARAMETERS_INCORRECT);
   }
  
   contractSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE);
   if(contractSize == 0)
   {
      Print("Failed to get contract size for ", _Symbol);
      return(INIT_PARAMETERS_INCORRECT);
   }
  
   lastHigh = 0; lastLow = 0;
   lastCandleTime = 0;
   purgeDetected = false;
   lastPurgeTime = 0;
  
   Print("EA Initialized on ", EnumToString(TradeTimeframe), ", Confirmation TF: ", EnumToString(ConfirmationTimeframe), ", Contract Size: ", contractSize);
   return(INIT_SUCCEEDED);
}

Die Funktion IsNewCandle: Triggerlogik bei einer neuen Bar

Die Funktion „IsNewCandle“ prüft, ob sich eine neue Kerze auf dem primären Handelszeitrahmen (Standard H1) gebildet hat, indem sie den Zeitstempel der aktuellen Kerze („iTime“) mit der letzten aufgezeichneten Kerzenzeit („lastCandleTime“) vergleicht. Wenn eine neue Kerze erkannt wird, wird „lastCandleTime“ aktualisiert, und die Funktion gibt „true“ zurück, wodurch die Haupthandelslogik in „OnTick“ ausgelöst wird. Dadurch wird sichergestellt, dass der EA die Handelsbedingungen nur einmal pro H1-Kerze auswertet, was den Verarbeitungsaufwand reduziert und redundante Überprüfungen der volatilen Bewegungen während einer Bar im GBPUSD/GBPJPY verhindert. Durch die Fokussierung auf neue Bars passt sich der EA an die Strategie an, die sich auf vollständige Kerzendaten zur Erkennung von Bereinigungs- und Engulfing-Mustern stützt, die für die Erfassung signifikanter Kursbewegungen in den trendgesteuerten Märkten der GBP-Paare entscheidend sind. Diese Funktion ist leicht, aber für die Aufrechterhaltung der Effizienz und Genauigkeit des EA unerlässlich.

bool IsNewCandle()
{
   datetime currentCandleTime = iTime(_Symbol, TradeTimeframe, 0);
   if(currentCandleTime != lastCandleTime)
   {
      lastCandleTime = currentCandleTime;
      return true;
   }
   return false;
}

Die Funktion UpdateHighsLows: Überwachen der Liquiditätsbereinigungslevels

Die Funktion „UpdateHighsLows“ verfolgt die höchsten Hochs und tiefsten Tiefs der letzten „LookbackBars“ (Standard 3) auf H1-, H4- und D1-Zeitrahmen und speichert sie in globalen Variablen („lastHighH1“, „lastLowH1“ etc.). Sie verwendet „CopyRates“, um historische Kursdaten abzurufen, wobei „ArraySetAsSeries“ sicherstellt, dass die jüngste Kerze bei Index 0 steht. Für jeden Zeitrahmen werden die Höchst-/Tiefstwerte mit den Werten der ersten Kerze initialisiert und durch Iteration über den Rückblickzeitraum aktualisiert, wobei die extremen Preise erfasst werden.

Diese Funktion ist entscheidend für die Erkennung von Liquiditätsbereinigungen – wenn die aktuelle H1-Kerze ein vorheriges Hoch oder ein Tief in einem beliebigen Zeitrahmen durchbricht, was eine potenzielle Trendumkehr oder -fortsetzung in EURUSD, GBPUSD oder GBPJPY signalisiert. Der Multi-Zeitrahmen-Ansatz stellt sicher, dass der EA signifikante Liquiditätsschwankungen erfasst, wie z. B. solche, die durch volatile Bewegungen des GBPJPY durch eine Jagd nach den Stopps ausgelöst werden. Die Fehlerbehandlung protokolliert Ausfälle in Bezug auf die Belastungsraten und gewährleistet so Robustheit. Diese Funktion bildet die Grundlage für die saubere Eröffnungslogik der Strategie, die auf die Empfindlichkeit der GBP-Paare gegenüber wichtigen Unterstützungs-/Widerstandsniveaus zugeschnitten ist.

void UpdateHighsLows()
{
   // H1
   MqlRates ratesH1[];
   ArraySetAsSeries(ratesH1, true);
   if(CopyRates(_Symbol, PERIOD_H1, 1, LookbackBars, ratesH1) >= LookbackBars)
   {
      lastHighH1 = ratesH1[0].high;
      lastLowH1 = ratesH1[0].low;
      for(int i = 1; i < LookbackBars; i++)
      {
         if(ratesH1[i].high > lastHighH1) lastHighH1 = ratesH1[i].high;
         if(ratesH1[i].low < lastLowH1) lastLowH1 = ratesH1[i].low;
      }
   }
   else Print("Failed to load H1 rates");
   
   // H4
   MqlRates ratesH4[];
   ArraySetAsSeries(ratesH4, true);
   if(CopyRates(_Symbol, PERIOD_H4, 1, LookbackBars, ratesH4) >= LookbackBars)
   {
      lastHighH4 = ratesH4[0].high;
      lastLowH4 = ratesH4[0].low;
      for(int i = 1; i < LookbackBars; i++)
      {
         if(ratesH4[i].high > lastHighH4) lastHighH4 = ratesH4[i].high;
         if(ratesH4[i].low < lastLowH4) lastLowH4 = ratesH4[i].low;
      }
   }
   else Print("Failed to load H4 rates");
   
   // D1
   MqlRates ratesD1[];
   ArraySetAsSeries(ratesD1, true);
   if(CopyRates(_Symbol, PERIOD_D1, 1, LookbackBars, ratesD1) >= LookbackBars)
   {
      lastHighD1 = ratesD1[0].high;
      lastLowD1 = ratesD1[0].low;
      for(int i = 1; i < LookbackBars; i++)
      {
         if(ratesD1[i].high > lastHighD1) lastHighD1 = ratesD1[i].high;
         if(ratesD1[i].low < lastLowD1) lastLowD1 = ratesD1[i].low;
      }
   }
   else Print("Failed to load D1 rates");
}

Die Funktion IsVolumeSpike: Validierung der Handelsliquidität

Die Funktion „IsVolumeSpike“ bestätigt Handelskonstellationen, indem sie prüft, ob das Tick-Volumen der aktuellen Kerze das durchschnittliche Volumen über „LookbackBars“ (3) um einen Faktor von „VolumeThreshold“ (1.0) übersteigt. Sie verwendet „CopyRates“, um die jüngsten Kerzen auf dem Handelszeitrahmen (H1) abzurufen und das durchschnittliche Volumen der gültigen Bars zu berechnen (diejenigen mit einem Volumen > 1, um Datenprobleme zu vermeiden). Wenn keine gültigen Bars vorhanden sind, wird die Prüfung umgangen, um ein Abwürgen zu verhindern, und eine Warnung zur Fehlersuche wird protokolliert. Bei EURUSD, GBPUSD und GBPJPY gehen hohe Volumina häufig mit bedeutenden Kursbewegungen einher, wie z. B. Ausbrüchen nach Nachrichten oder Liquiditätsschwankungen, sodass dieser Filter für die Validierung von Bereinigungen entscheidend ist. Die Funktion protokolliert das aktuelle und durchschnittliche Volumen, um Transparenz zu schaffen. Durch die Sicherstellung der Volumenbestätigung vermeidet der EA Konstellationen mit geringer Liquidität, die zu falschen Signalen in GBP-Paaren führen, und verbessert so die Handelsqualität und Rentabilität in trendorientierten Märkten wie GBPJPY.

bool IsVolumeSpike(long currentVolume)
{
   double avgVolume = 0;
   MqlRates rates[];
   ArraySetAsSeries(rates, true);
   if(CopyRates(_Symbol, TradeTimeframe, 1, LookbackBars, rates) < LookbackBars)
   {
      Print("Failed to load rates for volume check");
      return true;
   }
   
   int validBars = 0;
   for(int i = 0; i < LookbackBars; i++)
   {
      if(rates[i].tick_volume > 1)
      {
         avgVolume += rates[i].tick_volume;
         validBars++;
      }
   }
   if(validBars == 0)
   {
      Print("Warning: No valid volume data. Average volume is 0. Bypassing volume check.");
      return true;
   }
   avgVolume /= validBars;
   
   Print("Current volume: ", currentVolume, ", Average volume: ", avgVolume, ", Valid bars: ", validBars);
   return currentVolume >= VolumeThreshold * avgVolume;
}

Die Funktion IsBullishTrend: Sicherstellung der Trendausrichtung

Die Funktion „IsBullishTrend“ verwendet einen einfachen gleitenden 50-Perioden-Durchschnitt (SMA) auf dem Handelszeitrahmen (H1), um die Trendrichtung des Marktes zu bestimmen. Sie erstellt einen SMA-Handle mit „iMA“, holt den letzten SMA-Wert über „CopyBuffer“ und vergleicht ihn mit dem aktuellen Schlusskurs („iClose“). Liegt der Kurs über dem SMA, gibt die Funktion den Wert „true“ zurück, was auf einen Aufwärtstrend hinweist; andernfalls bedeutet dies einen Abwärtstrend oder einen neutralen Trend.

Wenn „UseTrendFilter“ aktiviert ist (Standardeinstellung true), stellt diese Funktion sicher, dass Kauf-Trades nur unter bullischen Bedingungen und Verkaufs-Trades nur unter bärischen Bedingungen getätigt werden. Dies entspricht der Tendenz von EURUSD/GBPUSD/GBPJPY, während der Londoner/New Yorker Sitzungen anhaltenden Trends zu folgen. Die Fehlerbehandlung protokolliert SMA-Datenausfälle und gewährleistet so die Zuverlässigkeit. Dieser Filter reduziert falsche Ausbrüche in unruhigen Märkten, ein häufiges Problem bei GBP-Paaren, indem er den breiteren Marktkontext bestätigt, bevor er in den Handel nach dem Ausbruch einsteigt.

bool IsBullishTrend()
{
   double sma[];
   ArraySetAsSeries(sma, true);
   int smaHandle = iMA(_Symbol, TradeTimeframe, SMAPeriod, 0, MODE_SMA, PRICE_CLOSE);
   if(CopyBuffer(smaHandle, 0, 0, 1, sma) < 1)
   {
      Print("Failed to load SMA data");
      return false;
   }
   double currentPrice = iClose(_Symbol, TradeTimeframe, 0);
   Print("Current price: ", currentPrice, ", SMA: ", sma[0]);
   return currentPrice > sma[0];
}

IsBullishEngulfing und IsBearishEngulfing: Bestätigung von Umkehrsignalen

Diese Funktionen erkennen „bullish“ und „bearish“ Engulfing-Kerzen, wichtige Umkehrmuster, die zur Bestätigung des Einstiegs nach einer Bereinigung verwendet werden. Die Funktion „IsBullishEngulfing“ prüft, ob die aktuelle Kerze bullish ist (close > open), die vorhergehende Kerze bearish ist (close < open), die aktuelle Kerze die vorhergehende verschlingt (open ≤ previous close, close ≥ previous open) und der Körper der aktuellen Kerze mindestens „EngulfingMinBodyRatio“ (0,3) mal so groß ist wie der Körper der vorhergehenden Kerze. IsBearishEngulfing“ wendet die umgekehrte Logik für bärische Konstellationen an. Bei EURUSD, GBPUSD und GBPJPY signalisieren Engulfing-Kerzen auf M15 oder H1 nach der Aufwärtsbewegung oft starke Umkehrungen oder Fortsetzungen, insbesondere nach Liquiditätsschwankungen auf Schlüsselwerten.

Die Prüfung des Verhältnisses des Kerzenkörpers stellt sicher, dass die Engulfing-Kerze signifikant ist, und filtert schwache Muster in den volatilen GBP-Paarungen heraus. Diese Funktionen werden auf die letzten drei Kerzen sowohl auf H1 als auch auf M15 angewandt und bieten so die Flexibilität, Signale auf beiden Zeitrahmen abzufangen, was die Reaktionsfähigkeit des EA auf die Dynamik des GBP-Marktes erhöht.

bool IsBullishEngulfing(MqlRates &current, MqlRates &previous)
{
   double currentBody = MathAbs(current.close - current.open);
   double prevBody = MathAbs(previous.close - previous.open);
   
   if(current.close > current.open && 
      previous.close < previous.open && 
      current.open <= previous.close && 
      current.close >= previous.open && 
      currentBody >= EngulfingMinBodyRatio * prevBody)
   {
      return true;
   }
   return false;
}

bool IsBearishEngulfing(MqlRates &current, MqlRates &previous)
{
   double currentBody = MathAbs(current.close - current.open);
   double prevBody = MathAbs(previous.close - previous.open);
   
   if(current.close < current.open && 
      previous.close > previous.open && 
      current.open >= previous.close && 
      current.close <= previous.open && 
      currentBody >= EngulfingMinBodyRatio * prevBody)
   {
      return true;
   }
   return false;
}

Die Funktion PlaceTrade: Market Orders mit SL/TP ausführen

Die Funktion „PlaceTrade“ führt Kauf- oder Verkaufsaufträge aus, wenn ein gültiges Signal bestätigt wird (Purge + Engulfing + Volumen + Trend). Sie konstruiert einen „MqlTradeRequest“ mit dem Symbol, fester „LotSize“ (0.1), Auftragsart (Kauf/Verkauf) und Einstiegspreis. Der Stop-Loss wird auf 150 Pips und der Take-Profit auf 600 Pips gesetzt, angepasst an den Punktwert von EURUSD, GBPUSD und GBPJPY („_Point * 100“), um deren Pip-Skalierung zu berücksichtigen. Die Funktion „ORDER_FILLING_IOC“ (Immediate or Cancel) gewährleistet eine schnelle Ausführung, die auf dem schnelllebigen GBPJPY-Markt von entscheidender Bedeutung ist.

Im Erfolgsfall werden die Handelsdetails protokolliert, „tradePlaced“ auf true gesetzt, um Mehrfach-Trades zu verhindern, und „purgeDetected“ zurückgesetzt, um einen erneuten Einstieg bei demselben Signal zu vermeiden. Bei einem Fehlschlag wird der Fehlercode zur Fehlersuche protokolliert. Diese Funktion gewährleistet eine präzise Handelsausführung mit vordefinierten Risikoparametern und optimiert die Rentabilität, indem sie auf hochwahrscheinliche Konstellationen im trendfolgenden Verhalten der GBP-Paare abzielt.

void PlaceTrade(ENUM_ORDER_TYPE orderType, double price)
{
   MqlTradeRequest request = {};
   MqlTradeResult result = {};
   
   request.action = TRADE_ACTION_DEAL;
   request.symbol = _Symbol;
   request.volume = LotSize;
   request.type = orderType;
   request.price = price;
   request.sl = (orderType == ORDER_TYPE_BUY) ? price - StopLossPips * _Point * 100 : price + StopLossPips * _Point * 100;
   request.tp = (orderType == ORDER_TYPE_BUY) ? price + TakeProfitPips * _Point * 100 : price - TakeProfitPips * _Point * 100;
   request.type_filling = ORDER_FILLING_IOC;
   
   if(OrderSend(request, result))
   {
      Print("Trade placed successfully: ", orderType == ORDER_TYPE_BUY ? "BUY" : "SELL", " at ", price, " SL: ", request.sl, " TP: ", request.tp);
      tradePlaced = true;
      purgeDetected = false; // Reset purge after trade
   }
   else
   {
      Print("Trade failed: ", result.retcode);
   }
}

Die Funktion ManageTrailingStop: Gewinne mit Trailing Stops schützen

Die Funktion „ManageTrailingStop“ passt den Stop-Loss offener Positionen dynamisch an, um Gewinne zu sichern, wenn sich der Preis günstig entwickelt. Es wird geprüft, ob eine Position für das Symbol existiert, indem „PositionSelect“ verwendet wird. Für Kaufpositionen wird ein neuer Stop-Loss zum aktuellen Geldkurs minus „TrailingStopPips“ (100 Pips) berechnet, angepasst an den Punktwert von GBPUSD, EURUSD und GBPJPY. Der neue Stop-Loss wird nur angewandt, wenn er höher ist als der aktuelle Stop-Loss und über dem Eröffnungskurs liegt, um den Break-Even oder den Gewinn zu gewährleisten. Bei Verkaufspositionen wird der Stop-Loss über den aktuellen Briefkurs gesetzt und angewendet, wenn er niedriger ist als der aktuelle Stop-Loss (oder wenn keiner existiert) und unter dem offenen Kurs liegt.

Die Funktion verwendet „MqlTradeRequest“ mit „TRADE_ACTION_SLTP“, um den Stop-Loss zu aktualisieren, wobei der Take-Profit erhalten bleibt. Dieser Trailing-Mechanismus ist für die volatilen Schwankungen des GBPJPY von entscheidender Bedeutung, da er es dem EA ermöglicht, große Bewegungen zu erfassen und gleichzeitig Gewinne zu sichern. Die Fehlerbehandlung protokolliert fehlgeschlagene Aktualisierungen und sorgt so für Transparenz. Diese Funktion erhöht die Rentabilität, indem sie das Risiko von Gewinnmitnahmen auf den trendorientierten Märkten für GBP-Paare verringert.

void ManageTrailingStop()
{
   if(!PositionSelect(_Symbol)) return;
   
   double currentPrice = (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) ? 
                         SymbolInfoDouble(_Symbol, SYMBOL_BID) : 
                         SymbolInfoDouble(_Symbol, SYMBOL_ASK);
   double openPrice = PositionGetDouble(POSITION_PRICE_OPEN);
   double currentSL = PositionGetDouble(POSITION_SL);
   
   double newSL = 0;
   if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
   {
      newSL = currentPrice - TrailingStopPips * _Point * 100;
      if(newSL > currentSL && newSL > openPrice)
      {
         MqlTradeRequest request = {};
         MqlTradeResult result = {};
         request.action = TRADE_ACTION_SLTP;
         request.position = PositionGetInteger(POSITION_TICKET);
         request.symbol = _Symbol;
         request.sl = newSL;
         request.tp = PositionGetDouble(POSITION_TP);
         if(OrderSend(request, result))
            Print("Trailing stop updated for BUY: ", newSL);
         else
            Print("Failed to update trailing stop: ", result.retcode);
      }
   }
   else // POSITION_TYPE_SELL
   {
      newSL = currentPrice + TrailingStopPips * _Point * 100;
      if((newSL < currentSL || currentSL == 0) && newSL < openPrice)
      {
         MqlTradeRequest request = {};
         MqlTradeResult result = {};
         request.action = TRADE_ACTION_SLTP;
         request.position = PositionGetInteger(POSITION_TICKET);
         request.symbol = _Symbol;
         request.sl = newSL;
         request.tp = PositionGetDouble(POSITION_TP);
         if(OrderSend(request, result))
            Print("Trailing stop updated for SELL: ", newSL);
         else
            Print("Failed to update trailing stop: ", result.retcode);
      }
   }
}

Die Funktion OnTick: Zentrale Handelslogik für Purge und Engulfing

Die Funktion „OnTick“ ist die Hauptentscheidungszentrale des EA, die bei jedem Preistick ausgeführt wird, aber nur bei neuen H1-Kerzen über „IsNewCandle“ verarbeitet wird. Es setzt „tradePlaced“ zurück, wenn keine Positionen offen sind, und gewährleistet einen Handel pro Bereinigungszyklus. Trailing-Stops werden für offene Positionen mit „ManageTrailingStop“ verwaltet. Die Funktion lädt Kerzendaten für H1 und M15 unter Verwendung von „CopyRates“ und vergleicht die aktuelle H1-Kerze mit früheren Hochs/Tiefs (aktualisiert über „UpdateHighsLows“), um Bereinigungen zu erkennen – Kurse, die über H1/H4/D1-Hochs oder unter Tiefs ausbrechen und damit Liquiditätsschwankungen signalisieren, die in EURUSD, GBPUSD/GBPJPY während der wichtigsten Sitzungen üblich sind. Wenn eine Bereinigung festgestellt wird, wird „purgeDetected“ gesetzt, und „lastPurgeTime“ verfolgt das Fenster (bis zu drei H1-Kerzen).

Das Volumen wird mit „IsVolumeSpike“ überprüft, und der Trend wird mit „IsBullishTrend“ (falls aktiviert) geprüft. Engulfing-Muster werden sowohl auf H1 als auch auf M15 identifiziert, was eine flexible Bestätigung ermöglicht. Ein Kauf wird ausgelöst, wenn auf eine hohe Bereinigung eine Engulfing-Aufwärtskerze (H1 oder M15), hohes Volumen und ein Aufwärtstrend folgt; ein Verkauf erfordert eine niedrige Bereinigung, eine Engulfing-Abwärtskerze, hohes Volumen und einen Abwärtstrend. Umfangreiche Protokollierung sorgt für Transparenz bei der Fehlersuche. Diese Logik gewährleistet eine hohe Wahrscheinlichkeit für den Handel mit GBP-Paaren durch die Kombination von Bereinigungen auf mehreren Zeitskalen mit robusten Bestätigungssignalen, die für ihre trendfolgende Natur optimiert sind.

void OnTick()
{
   // Check if a new candle has formed on the trade timeframe
   if(!IsNewCandle()) return;
   
   // Reset tradePlaced if no open positions
   if(!PositionSelect(_Symbol)) tradePlaced = false;
   
   // Manage trailing stop for open positions
   ManageTrailingStop();
   
   // Get current and previous candle data for trade timeframe
   MqlRates ratesH1[];
   ArraySetAsSeries(ratesH1, true);
   if(CopyRates(_Symbol, TradeTimeframe, 0, 4, ratesH1) < 4)
   {
      Print("Failed to load H1 rates data");
      return;
   }
   
   // Get candle data for confirmation timeframe (M15)
   MqlRates ratesM15[];
   ArraySetAsSeries(ratesM15, true);
   if(CopyRates(_Symbol, ConfirmationTimeframe, 0, 4, ratesM15) < 4)
   {
      Print("Failed to load M15 rates data");
      return;
   }
   
   // Current H1 candle (index 0)
   double currentOpenH1 = ratesH1[0].open;
   double currentCloseH1 = ratesH1[0].close;
   double currentHighH1 = ratesH1[0].high;
   double currentLowH1 = ratesH1[0].low;
   long currentVolumeH1 = ratesH1[0].tick_volume;
   datetime currentTimeH1 = ratesH1[0].time;
   
   // Update highs and lows for all timeframes
   UpdateHighsLows();
   
   // Check for purge (liquidity sweep) on any timeframe
   bool highPurgedH1 = (currentHighH1 > lastHighH1 && lastHighH1 > 0);
   bool highPurgedH4 = (currentHighH1 > lastHighH4 && lastHighH4 > 0);
   bool highPurgedD1 = (currentHighH1 > lastHighD1 && lastHighD1 > 0);
   bool lowPurgedH1 = (currentLowH1 < lastLowH1 && lastLowH1 > 0);
   bool lowPurgedH4 = (currentLowH1 < lastLowH4 && lastLowH4 > 0);
   bool lowPurgedD1 = (currentLowH1 < lastLowD1 && lastLowD1 > 0);
   bool highPurged = highPurgedH1 || highPurgedH4 || highPurgedD1;
   bool lowPurged = lowPurgedH1 || lowPurgedH4 || lowPurgedD1;
   
   // Update purge status
   if(highPurged || lowPurged)
   {
      purgeDetected = true;
      lastPurgeTime = currentTimeH1;
      highPurge = highPurged;
   }
   
   // Check if within the post-purge window
   bool withinPurgeWindow = false;
   if(purgeDetected)
   {
      int candlesSincePurge = iBarShift(_Symbol, TradeTimeframe, lastPurgeTime, true);
      withinPurgeWindow = candlesSincePurge <= MaxCandlesPostPurge;
      if(!withinPurgeWindow)
      {
         purgeDetected = false; // Reset if window expires
         Print("Purge window expired: ", candlesSincePurge, " candles since last purge");
      }
   }
   
   // Check volume for liquidity confirmation
   bool volumeConfirmed = IsVolumeSpike(currentVolumeH1);
   if(currentVolumeH1 <= 1) 
   {
      Print("Warning: Tick volume is ", currentVolumeH1, ". Possible data issue. Bypassing volume check.");
      volumeConfirmed = true;
   }
   
   // Check trend with SMA
   bool isBullishTrend = UseTrendFilter ? IsBullishTrend() : true;
   
   // Check for engulfing candles on H1 (current + previous 2 candles)
   bool bullishEngulfingH1 = false, bearishEngulfingH1 = false;
   for(int i = 0; i < 3; i++)
   {
      if(IsBullishEngulfing(ratesH1[i], ratesH1[i+1]))
         bullishEngulfingH1 = true;
      if(IsBearishEngulfing(ratesH1[i], ratesH1[i+1]))
         bearishEngulfingH1 = true;
   }
   
   // Check for engulfing candles on M15 (current + previous 2 candles)
   bool bullishEngulfingM15 = false, bearishEngulfingM15 = false;
   for(int i = 0; i < 3; i++)
   {
      if(IsBullishEngulfing(ratesM15[i], ratesM15[i+1]))
         bullishEngulfingM15 = true;
      if(IsBearishEngulfing(ratesM15[i], ratesM15[i+1]))
         bearishEngulfingM15 = true;
   }
   
   // Trade logic
   if(purgeDetected && withinPurgeWindow && !tradePlaced)
   {
      if(highPurge && (bullishEngulfingH1 || bullishEngulfingM15) && volumeConfirmed && isBullishTrend)
      {
         Print("Buy signal: High purged, bullish engulfing on ", bullishEngulfingH1 ? "H1" : "M15", ", volume confirmed, bullish trend");
         PlaceTrade(ORDER_TYPE_BUY, currentCloseH1);
      }
      else if(!highPurge && (bearishEngulfingH1 || bearishEngulfingM15) && volumeConfirmed && !isBullishTrend)
      {
         Print("Sell signal: Low purged, bearish engulfing on ", bearishEngulfingH1 ? "H1" : "M15", ", volume confirmed, bearish trend");
         PlaceTrade(ORDER_TYPE_SELL, currentCloseH1);
      }
   }
}

Installation und Backtests: Mit MetaEditor kompilieren und auf dem Chart starten. Backtests mit GBPUSD, H1 (2025-2026) und 1% Risiko. 


Testen von Strategien

Strategietests mit dem Trending King EA

Die Strategie funktioniert am verlässlichsten bei den meisten, wenn nicht allen Paaren, aufgrund ihrer Kernlogik oder der schnellen Anpassungsfähigkeit an den Trendhandel. Es verwendet ein Liquiditätsbereinigungskonzept für Handelskonstellationen und hohe Volatilität, die für die meisten Handelsstrategien vorteilhaft und wesentlich sind. Wir werden diese Strategie testen, indem wir GBPUSD vom 1. Januar 2025 bis zum 8. Januar 2026 auf dem 60-Minuten-Zeitrahmen (H1) handeln. Hier sind die Parameter, die ich für diese Strategie gewählt habe. 

GBPUSD

Eingabe-Einstellungen

Eingabe-Einstellungen


Ergebnisse im Strategietester

Nach dem Testen im Strategietester sind hier die Ergebnisse dazu, wie die Strategie funktioniert, analysiert und abschneidet.

Ergebnisse des Strategietesters mit Trending King EA

Salden-/Kapitalkurve: 

GBPUSD

Diagramm der Testergebnisse

Backtest-Ergebnisse:

GBPUSD

Testergebnisse


Zusammenfassung

Ich habe diesen Artikel geschrieben, um zu versuchen, einen Expert Advisor für den MetaTrader 5 zu erklären, der speziell auf die Trendfolge zugeschnitten ist, seine Geschwindigkeit und Leistung nutzt und Handels- und Risikomanagementtechniken kombiniert, um das Risiko, die Gefährdung und menschliche Fehler systematisch zu reduzieren, während er hochwahrscheinliche Handelskonstellationen auf GBPUSD und auch mögliche Ausstiegspunkte identifiziert und ausführt, indem er dasselbe Handels- und Risikomanagementprotokoll verwendet.

Dieser Expert Advisor ist einer der einfachsten und dennoch leistungsstärksten Expert Advisors für den Handel und trendbasierte Konzepte, die zur Erfassung möglicher Kurseinstiege und Trendwechsel verwendet werden. Die robuste und anpassungsfähige Logik für das Risiko- und Handelsmanagement hilft dem Expert Advisor, eine optimale Leistung zu erbringen und Drawdowns und Handelsverluste zu minimieren. 

Ich habe den Expert Advisor am GBPUSD getestet, und es hat sich gezeigt, dass er in der Lage ist, mögliche Handelseinstiege auf jedem Zeitrahmen effizient und treffend zu erkennen, aber die Erkennung von Handelseinstiegspunkten ist nur ein Teil der Gleichung, denn er verfügt über eine in die Kernlogik integrierte optimale Einstiegsvalidierungsstrategie, die eine Ausführung nur dann zulässt, wenn bestimmte Kriterien erfüllt sind. Sobald die Trades validiert und ausgeführt sind, wird die Handels- und Risikomanagementlogik schnell umgesetzt, um eine ordnungsgemäße Ausführung bis zum Abschluss des Handelsgeschäfts zu gewährleisten.

Um diese Strategie in den Expert Advisor zu implementieren, konfigurieren Sie die Eingabeparameter des Expert Advisors wie unten gezeigt, um die gewünschten Ergebnisse zu erzielen. Der Expert Advisor ist so konzipiert, dass er auf dem vom Händler gewählten Zeitrahmen von M15 bis D1 nach möglichen Handelseinstiegspunkten sucht und dabei sicherstellt, dass die möglichen Handelseinstiegspunkte mit dem Trend und den gleitenden Durchschnitten sowie der durchschnittlichen wahren Spanne für den Trailing-Stop-Loss übereinstimmen. Interessierte Trader sollten diesen Expert Advisor auf ihren Demokonten mit GBPUSD testen; er funktioniert optimal und ist für GBPUSD konzipiert, kann aber auch auf GBPJPY, EURUSD und GOLD angewendet werden. Das Hauptziel dieses Expert Advisors bestand darin, ihn für den streng trendfolgenden Handel mit fortschrittlicher Handelslogik und für Konstellationen mit hoher Wahrscheinlichkeit zu optimieren, die je nach Wahl des Händlers in jedem Zeitrahmen auftreten können, und auch das Risikomanagement mit den implementierten Trailing-Stops zu integrieren.

Ich würde den Händlern auch raten, die Leistungsprotokolle regelmäßig zu überprüfen, um die Einstellungen und Eingabeparameter je nach den eigenen Zielen, der Anlageklasse oder der Risikobereitschaft zu verfeinern. Haftungsausschluss: Jeder, der diesen Expert Advisor verwendet, sollte zunächst testen und mit dem Handel auf seinem Demokonto beginnen, um diesen Trendfolge- und Handelsideenansatz für beständige Gewinne zu beherrschen, bevor er Live-Gelder riskiert.


Schlussfolgerung

Der Artikel hebt die wichtigsten Herausforderungen hervor, mit denen Händler bei der Identifizierung von Narrativen, Verzerrungen, Richtungen und Trends, beim Risikomanagement, beim Handelsmanagement und bei der Vermeidung von Drawdowns konfrontiert sind, und erklärt, wie man einen Expert Advisor entwirft, der diesen Prozess vereinfacht und die Chancen erhöht, profitabel zu sein und nur Trades mit hoher Wahrscheinlichkeit auszuführen. In dem Artikel wird weiter ausgeführt, wie der Handel nur in der Trendrichtung und das Ignorieren von Handelsideen und Konstellationen für den Gegentrend dabei sehr hilfreich sind.  

Vielen Händlern fehlt ein klares Verständnis dafür, wie sich der trendfolgende Handel wirklich positiv auf ihre Performance auswirken kann, insbesondere wenn er mit einem angemessenen Risiko- und Handelsmanagement kombiniert wird; er wird zu einem sehr bedeutenden Game Changer, der den Durchschnitt von den Besten trennt. Der vorgeschlagene Expert Advisor hilft bei der Durchsetzung von Disziplin und ermöglicht es Händlern, ihre Handelsideen, Positionsgrößen und Konstellationen zu validieren, auch wenn sie die Eingaben nicht direkt verwenden.

Der automatisierte MQL5 Expert Advisor bietet:

  • wie der Trend des gehandelten Vermögenswerts mit hoher Wahrscheinlichkeit in dieselbe Richtung gehandelt wird;
  • Schutz vor der Volatilität von Nachrichten, indem der Handel rund um die Veröffentlichung von Nachrichten blockiert wird;
  • Handelseröffnungen nur bei bestätigten Signalen mit dynamischem SL/TP;
  • adaptives Risikomanagement (Verkleinerung der Losgröße in Verlustphasen, Erhöhung in Gewinnphasen);
  • Protokollierung der Ergebnisse zur laufenden Optimierung der Strategie;
  • strikte Einhaltung der Trendfolge und Handel nur in Trendrichtung;
  • Beseitigung der emotionalen Entscheidungsfindung;
  • automatisches Handelsmanagement (SL, TP, partielle Schließungen).

Zusammen sorgen diese Funktionen für eine konsistente Ausführung von Trades mit hoher Wahrscheinlichkeit und ein optimales Risikomanagement, wodurch die Chance auf einen profitablen Handel erhöht und die Performance verbessert wird.

Der gesamte Code, auf den in dem Artikel verwiesen wird, ist unten angefügt. In der folgenden Tabelle sind alle Quellcodedateien beschrieben, die dem Artikel beigefügt sind.

Dateiname Beschreibung:
Trending King EA.mq5 Datei mit dem vollständigen Quellcode für den Trend King EA

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

Beigefügte Dateien |
Trending_King.mq5 (16.29 KB)
Letzte Kommentare | Zur Diskussion im Händlerforum (2)
Mustafa Nail Sertoglu
Mustafa Nail Sertoglu | 12 Feb. 2026 in 13:42

Vielen Dank für alle; seid gesund und sicher


wer will versuchen / verwenden Achtung : so viele PRINT() und so viele log's

Eugene Mmene
Eugene Mmene | 12 Feb. 2026 in 13:56
Mustafa Nail Sertoglu #:

Vielen Dank für alles; bleiben Sie gesund und sicher


wer will versuchen / verwenden Achtung : so viele PRINT() und so viele log's

Willkommen, und auch Ihnen gute Gesundheit
Einführung in MQL5 (Teil 35): Beherrschen der API- und WebRequest-Funktion in MQL5 (IX) Einführung in MQL5 (Teil 35): Beherrschen der API- und WebRequest-Funktion in MQL5 (IX)
Erfahren Sie, wie Sie Nutzeraktionen in MetaTrader 5 erkennen, Anfragen an eine KI-API senden, Antworten extrahieren und als Lauftext in Ihrem Panel implementieren.
Larry Williams‘ Geheimnisse des Marktes (Teil 8): Kombination von Volatilitäts-, Struktur- und Zeitfiltern Larry Williams‘ Geheimnisse des Marktes (Teil 8): Kombination von Volatilitäts-, Struktur- und Zeitfiltern
Eine ausführliche Darstellung des Aufbaus eines von Larry Williams inspirierten Volatilitäts-Breakout Expert Advisors in MQL5, der Swing-Struktur, volatilitätsbasierten Eröffnungen, Filterung des Handelstages der Woche, Zeitfilter und flexiblem Risikomanagement kombiniert, mit einer vollständigen Implementierung und reproduzierbarem Testaufbau.
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.
Python-MetaTrader 5 Strategietester (Teil 04): Tester 101 Python-MetaTrader 5 Strategietester (Teil 04): Tester 101
In diesem faszinierenden Artikel bauen wir unseren allerersten Handelsroboter im Simulator auf und führen eine Strategietest-Aktion durch, die der Funktionsweise des MetaTrader 5-Strategietesters ähnelt. Anschließend vergleichen wir die Ergebnisse einer nutzerdefinierten Simulation mit unserem bevorzugten Terminal.