MetaTrader 5 herunterladen

Hat Dir der Artikel gefallen?
Teile ihn mit den anderen -
poste einen Link zu diesem Beitrag!

Nutze neue Möglichkeiten der Plattform MetaTrader 5

Einfache Methoden zur Prognose der Richtungen von Japanischen Candlesticks

29 April 2016, 14:34
Evgeniy Logunov
0
378

Einführung

Japanische Candlesticks stellen eine der Möglichkeiten dar, zur Anzeige von Kursen über einen bestimmten Zeitraum, mit der Anzeige der Korrespondenz zwischen Öffnungs-, Schluss- Hoch- und Tief-Kursen. Candlesticks werden in erster Linie in der technischen Analyse verwendet und nach bekannten Modellen interpretiert.

Nachdem Schreiben mehrerer Indikatoren für die Prognose der Richtung der Marktbewegung, kam mir die Idee einer Möglichkeit der Analyse zur Prognose der Richtungen von Japanischen Candlesticks, basierend auf den verfügbaren Daten über die Richtungen der vorhergegangenen Candlesticks.

Der Artikel befasst sich mit ein paar einfachen Prognosemethoden und stellt mehrere EAs vor zum Testen der Ideen und Bewerten ihrer Effektivität.

Achtung! Die an den Artikel angehangenen Expert Advisors sind nur für den Gebrauch im Strategietester gedacht.

Die erste Methode basiert auf der Annahme, dass die Richtung des nächsten Candlestick mit der Richtung des vorherigen übereinstimmt. Die zweite Methode nimmt an, dass die Richtung des nächsten Candlestick gegenteilig zu der des vorherigen sein wird. Der Vorteil dieser Methoden liegt in ihrer Einfachheit. Wir werden sie in dem Abschnitt "Naive Methoden" bewerten.

Die dritte Methode ist eine Kombination der ersten zwei. Zunächst wählen wir entweder die erste oder die zweite Methode, und die gewählte Methode wird dann, wenn und solange bis die Prognose unterschiedlich zu Realität erscheint (für den Fall, dass ein Fehler erkannt wird). In diesem Fall wird die aktuell verwendete Methode durch die andere ersetzt. Diese Methode ist etwas komplexer als die ersten zwei und berücksichtigt Fehler, die in den vorherigen Phasen auftraten. Aus diesem Grund bewerten wir die Methode in dem Abschnitt "Adaptive Methode".



Basisdaten für die Prognose

Alle berücksichtigten Methoden beruhen auf der Information der Richtung des vorhergehenden Candlestick. Aus Diesem Grund müssen wir zuerst über eine Möglichkeit zum Erhalt der Information über die Richtung jedes gegebenen Candlestick nachdenken.

Der Begriff "Richtung des Candlestick" wird verwendet, um auf den Wert zu verweisen, der das Zeichen der Differenz zwischen den Öffnungs- und Schlusskursen eines gegebenen Candlestick kennzeichnet. In Anbetracht dessen, kann die Richtung von jedem Candlestick drei Werte annehmen - "Aufwärtsrichtung", "Abwärtsrichtung" und "keine Richtung".

Auf Informationen über Öffnungs- und Schlusskurse der Candlesticks kann mit den Open und Close Arrays zugegriffen werden. Diese Arrays verwenden Verschiebungen als Indizes. Eine Verschiebung ist die Nummer eines Candlestick auf der rechten Seite des Chart, beginnend mit Null. Das bedeutet, dass die Verschiebung des aktuellen Candlestick Null ist, während die Verschiebung des vorherigen Candlestick Eins ist.

// getting the direction of the candlestick
double GetCandleDirection(int shift) {
   double diff=Close[shift]-Open[shift];
   if (diff>0.0) {
      return (DIRECTION_UP);
   }
   else if (diff<0.0) {
      return (DIRECTION_DOWN);
   }
   else /*if (diff==0.0)*/ {
      return (DIRECTION_NONE);
   }
}

Die Funktion empfängt die Verschiebung des Candlestick und berechnet die Differenz seines Offnungs- und Schlusskurses. In Abhängigkeit von dem Zeichen der resultierenden Zahl, gibt die Funktion den Wert von einer der drei Konstanten zurück, DIRECTION_UP, DIRECTION_DOWN oder DIRECTION_NONE. Diese Konstanten entsprechen "Aufwärtsrichtung", "Abwärtsrichtung" und "keine Richtung".

Es muss beachtet werden, dass alle betrachteten Prognosemethoden einen Sonderfall bieten: Wenn die Richtung des vorherigen Candlestick nicht bestimmt werden kann (der GetCandleDirection(1) hat den Wert von DIRECTION_NONE zurückgegeben), wird die Richtung des nächsten Candlestick als Ergebnis der Prognose ebenfalls unbestimmt sein. In diesen Fällen, treten die zum Testen der Methode geschriebenen Expert Advisors nicht in den Markt ein.

Beachten Sie, dass Werte der Konstanten zur Angabe verschiedener Richtungen so definiert sein sollten, dass sie Schwierigkeiten bei der Berechnung der Gegenrichtung verursachen. Die Zeichenänderung kann als eine der Möglichkeiten zur Berechnung der Gegenrichtung dienen. Diese Konstanten können dann wie folgt definiert werden:

// determining the possible candlestick directions
#define DIRECTION_NONE 0
#define DIRECTION_UP 1
#define DIRECTION_DOWN -1

Lassen Sie uns eine separate Ausgabe der Candlestick-Richtungen in das Chart organisieren, mit dem an diesen Artikel angehangenen CandleColor.mq4 Indikator. Der Indikator zeigt die Richtungen der Candlesticks an (die blauen und roten Histogramme), sowie einen auf den Daten über die Richtung basierenden einfachen Movin Avereage, was es uns ermöglicht eine Vorstellung der vorherrschenden Candlesticks über einen bestimmten Zeitraum zu erhalten.


Candlestick Richtungen: Verhalten über die Zeit.

Wie von dem Indikator gezeigt wird, ändern sich die Richtungen von Candlesticks sehr häufig, abwechselnd oder für ein paar Candlesticks in Folge in der gleichen Richtung verbleibend. Offensichtlich ist die Prognose der Richtung von nur eines Candlestick eine anspruchsvolle Aufgabe.

Kommen wir nun zur Betrachtung und eingehenden Analyse der vorgeschlagenen Methoden.



Naive Methoden

Wir beginnen mit den beden ersten Methoden:

  1. Die Richtung des nächsten Candlestick wird übereinstimmen mit der der Richtung des vorherigen.
  2. Die Richtung des nächsten Candlestick wird gegenteilig zu der vorherigen sein.

Um die Wirksamkeit der beiden Methoden zu testen, wurde ein Expert Advisor (die CandlePredTest_naive.mq4 Datei, angehangen an den Artikel) entwickelt und getestet.

Der Expert Advisor verwendet Eröffnungskurse. Auf jedem neuen Balken, schlie0t er alle vorher geöffneten Positionen (Take Profit oder Stop Loss) und öffnet eine neue Position mit der angenommen Richtung des nächsten Candlestick (gerade geöffnet). Die Prognose auf die nächste Candlestick-Richtung wird ausgeführt mit der ModelPredict Funktion:

// forecasting based on the current model
int ModelPredict() {
   if (modelState==STATE_NORMAL) {
      return (GetCandleDirection(1));
   }
   else /*if (modelState==STATE_REVERSE)*/ {
      return (-GetCandleDirection(1));
   }
}

Die Funktion setzt zwei Prognosemethoden um. Die Auswahl der Methode ist abhängig von dem Wert der modelState Variable.

Wenn die modelState Variable den Wert von STATE_NORMAL annimmt, wird die Prognose der ersten Methode folgen, wobei die Funktion GetCandleDirection(1) aufruft für die Richtung der des vorhergehenden Candlestick und den erhaltenen Wert als die Richtung des nächsten Candlestick zurückgibt.

Die zweite Prognosemethode wird verwendet, wenn der modelState Variablenwert STATE_REVERSE ist. In diesem Fall wird die Berechnung der Gegenrichtung über die Zeichenänderung durchgeführt, das heißt, die ModelPredict Funktion gibt den Wert von -GetCandleDirection(1) zurück.

Die ModelPredict Funktion verwendet nicht den Express-Vergleich mit der STATE_REVERSE Konstante, entsprechend der zweiten Methode. In dem Code des Expert Advisor wird angenommen, dass die von dem Anwender eingegebenen Daten immer richtig sind und die modelState Variable immer einen der zwei Werte annimmt: STATE_NORMAL oder STATE_REVERSE. Der Express-Vergleich kann aktiviert werden durch Entfernen der Kommentar-Klammern "/*" und "*/" aus dem Hauptteil der Funktion, und somit dem Hinzufügen eines weiteren konditionalen Operator if zum Code.

Obwohl die modelState Variable auf der Liste der Parameter des Expert Advisor fehlt, wird ihr Wert von der externen Variable initialModelState nach dem Starten des Expert Advisor kopiert:

// model state
extern int initialModelState=STATE_NORMAL;

Diese zusätzliche Komplikation des Codes kommt aufgrund der Tatsache, das die Anzahl der Zustände weiter ansteigen kann, während nicht alle dieser Zustände bei dem Start der Operation zugelassen sind. Sie können jeden Wert als Angabe für Zustände verwenden. Zum Beispiel, in dem betrachteten Expert Advisor sind sie wie folgt definiert:

// defining the model states
#define STATE_NORMAL 0
#define STATE_REVERSE 1

Der verbleibende Code des Expert Advisor wird mit sehr ausführlichen Kommentaren bereitgestellt und sollte keine Schwierigkeit für den Leser sein.

Die Bedingungen zum Testen des Expert Advisor sind wie folgt:

  • Positionsvolumen - 0.1 lot.
  • Anfängliche Einzahlung - $10,000.
  • Zeitrahmen - alle Zeitrahmen verfügbar.
  • Betriebs-Modi - STATE_NORMAL, STATE_REVERSE.
  • Testzeitraum - gesamte verfügbare Historie.
  • Instrumente:

    1. USDCHF
    2. GBPUSD
    3. EURUSD
    4. USDJPY
    5. AUDUSD
    6. USDCAD
    7. EURGBP
    8. EURCHF
    9. EURJPY
    10. GBPJPY
    11. GBPCHF
    12. EURAUD

Die Kriterien, nach denen die Ergebnisse verglichen wurden, sind Nettogewinn und Prozentsatz der Gewinntrades.

Die folgenden zwei Tabellen zeigen die Ergebnisse vom Test des Expert Advisor in dem STATE_NORMAL Modus (erste Methode).

Nettogewinn:


M1 M5 M15 M30 H1 H4 D1
USDCHF -9902 -9900 -9903 -9907 -9901 -9900 -9927
GBPUSD -9868 -9864 -9869 -9887 -9873 -9868 -9924
EURUSD -9921 -9957 -9949 -9941 -9934 -9910 -9879
USDJPY -9900 -9905 -9900 -9905 -9935 -9926 -9904
AUDUSD -9952 -9957 -9966 -9962 -9961 -9956 -10000
USDCAD -9901 -9903 -9901 -9900 -9902 -9904 -8272
EURGBP -9862 -9861 -9864 -9869 -9875 -9871 -5747
EURCHF -9862 -9865 -9865 -9874 -9869 -9862 -5750
EURJPY -9866 -9877 -9964 -9877 -9869 -9867 -10000
GBPJPY -9848 -9841 -9840 -9845 -9848 -9870 -9849
GBPCHF -9891 -9885 -9850 -9844 -9857 -9856 -9891
EURAUD -9865 -9863 -9868 -9874 -9861 -9891 -10000


Prozentsatz der Gewinntrades:


M1 M5 M15 M30 H1 H4 D1
USDCHF 19.55 27.82 31.50 38.18 39.86 43.29 43.95
GBPUSD 21.18 27.81 30.29 33.81 35.20 41.39 46.71
EURUSD 26.06 33.20 34.59 37.55 41.64 43.73 44.37
USDJPY 19.28 31.68 34.13 35.48 39.04 42.99 46.85
AUDUSD 19.71 21.30 26.25 27.20 33.15 39.96 44.69
USDCAD 21.88 25.13 27.59 31.79 33.07 39.48 46.40
EURGBP 21.78 28.90 31.49 34.55 35.24 42.11 47.04
EURCHF 28.70 27.86 27.85 31.13 32.90 39.08 47.65
EURJPY 23.69 30.62 35.81 38.89 39.06 44.04 48.16
GBPJPY 10.11 19.47 33.48 37.39 37.75 43.09 47.42
GBPCHF 23.17 23.95 30.84 33.50 36.03 42.43 47.90
EURAUD 1.65 7.35 16.55 22.24 27.65 36.11 44.64

Der Test der ersten Methode zeigte schlechte Ergebnisse. Unabhängig von dem Zeitraum, sehen wir den Verlust der Einlage für alle Instrumente, was heißt, die Anzahl der Gewinntrades stieg auf höheren Zeitrahmen, hat aber nie 50% überschritten.

Die folgenden zwei Tabellen zeigen die Testergebnisse des Expert Advisor in dem STATE_REVERSE Modus (zweite Methode).

Nettogewinn:


M1 M5 M15 M30 H1 H4 D1
USDCHF -9900 -9912 -9902 -9917 -9915 -9901 +83
GBPUSD -9864 -9866 -9869 -9874 -9870 -9911 -5565
EURUSD -9920 -9917 -9923 -9947 -9922 -9886 +4249
USDJPY -9906 -9901 -9906 -9900 -9900 -9928 +2003
AUDUSD -9955 -9956 -9957 -9956 -9969 -9947 +1203
USDCAD -9900 -9900 -9900 -9900 -9901 -9906 -3129
EURGBP -9868 -9862 -9862 -9863 -9867 -9902 -9867
EURCHF -9863 -9861 -9863 -9862 -9869 -9869 -6556
EURJPY -9861 -9864 -9866 -9868 -9897 -9886 -10000
GBPJPY -9850 -9887 -9905 -9857 -9969 -9848 -9964
GBPCHF -9846 -9841 -9842 -9842 -9886 -9914 -9850
EURAUD -9870 -9866 -9874 -9910 -9872 -9872 -2411


Prozentsatz der Gewinntrades:


M1 M5 M15 M30 H1 H4 D1
USDCHF 18.38 27.41 33.76 37.46 42.28 46.71 52.15
GBPUSD 18.59 27.71 34.07 39.01 43.79 47.33 49.39
EURUSD 23.37 33.88 41.05 43.80 43.56 48.16 52.56
USDJPY 16.88 30.39 38.13 40.29 43.94 46.62 49.34
AUDUSD 18.84 22.52 25.39 29.83 36.36 43.51 49.84
USDCAD 22.44 24.04 27.07 31.06 35.69 43.51 49.84
EURGBP 20.52 28.89 35.18 38.82 42.41 45.82 45.55
EURCHF 27.43 31.82 32.80 35.05 36.74 43.89 46.04
EURJPY 18.79 28.15 37.09 39.80 43.05 44.15 46.92
GBPJPY 10.02 19.76 31.92 38.06 41.84 44.32 47.53
GBPCHF 19.87 27.24 33.72 35.70 39.74 47.59 46.11
EURAUD 1.43 7.66 17.24 26.95 34.46 41.29 47.07


Bei dem Test der zweiten Methode haben wir gemischte Ergebnisse erhalten. Die Ergebnisse für alle Zeitrahmen, ausgenommen D1, waren ungefähr die gleichen wie für die erste Methode. Der Handel auf D1 erzielte Gewinn auf vier Instrumenten aus den zwölf. Der Prozentsatz der Gewinntrades war nah an 50% und erreichte in zwei Fällen 52%.

Im Allgemeinen lassen die Expert Advisor Testergebnisse viel zu wünschen übrig. Versuchen wir eine Kombination der beiden Methoden, um deren Nachteile auszuschalten.



Adaptive Methode

Das Wesen der dritten Methode besteht darin, dass wir die Prognose mit einer der zwei naiven Prognosemethoden machen, die im Falle eines Fehlers durch die andere ersetzt wird. Auf diese Weise passt sich diese Methode an das Verhalten der Prognosereihe an.

Die Wirksamkeit dieses Verfahrens wurde geprüft durch den Test des entsprechenden Expert Advisor (die CandlePredTest_adaptive.mq4 Datei, angehangen an den Artikel).

Dieser Expert Advisor stellt eine verbesserte Version des CandlePredTest_naive Expert Advisor dar. Der wesentliche Unterschied ist, dass jede vorherige Prognose auf jedem neuen Balken auf Fehler untersucht wird.

// working function of the Expert Advisor
int start() {
   // positions are opened once on each bar
   if (!IsNewBar()) {
      return (0);
   }
   // close all open positions
   TradeClosePositions(DIRECTION_UP);
   TradeClosePositions(DIRECTION_DOWN);
   // update the model state
   if (prediction!=DIRECTION_NONE) {
      ModelUpdate(prediction==GetCandleDirection(1));
   }
   // predict the color of the next candlestick
   prediction=ModelPredict();
   if (prediction==DIRECTION_NONE) {
      return (0);
   }
   // open a position in the right direction
   TradeOpenPosition(prediction,"");
   return (0);
}

Fehler werden nur da analysiert, wenn der Expert Advisor auf dem vorherigen Balken Positionen geöffnet hat, d.h. die Prognose hat nicht die DIRECTION_NONE Konstante zurückgegeben. Die Fehler sind alle Fälle von Abweichungen zwischen der Prognose und der tatsächlichen Richtung des geschlossenen Candlestick, dessen Verschiebung gleich Eins wird beim Öffnen eines neuen Balkens.

Eine naive Prognosemethode wird durch die andere ersetzt mit der ModelUpdate Funktion, die die Korrektur-Flag (prediction==GetCandleDirection(1)) als Parameter erhält.

// updating the model state
void ModelUpdate(bool correct) {
   // if the forecast was erroneous, change the model state
   if (!correct) {
      if (modelState==STATE_NORMAL) {
         modelState=STATE_REVERSE;
      }
      else /*if (modelState==STATE_REVERSE)*/ {
         modelState=STATE_NORMAL;
      }
   }
}

Die Funktion analysiert die Prognose-Korrektur-Flag (correct) und im Falle eines Fehlers, ersetzt sie die gewählte naive Methode durch ändern des Wertes der modelState variable. Der Anfangswert der modelState Variable ist kopiert von der initialModelState Variable. Es ist nicht wesentlich, da der Expert Advisor die Prognosemethode während seines Betriebs ändern kann.

Die Prognose liegt in der Verantwortlichkeit der ModelPredict Funktion, ähnlich zu der verwendeten in dem CandlePredTest_naive Expert Advisor. Ein Ergebnis der Änderung in dem modelState Variable-Wert, Die Prognose wird basierend auf der ersten und zweiten Methode ausgeführt, einander abwechselnd.

Der Expert Advisor wurde unter den gleichen Bedingungen getestet, mit der einzigen Ausnahme bei dem initialModelState Variable-Wert, der fixiert war (STATE_NORMAL).

Nettogewinn:


M1 M5 M15 M30 H1 H4 D1
USDCHF -9903 -9905 -9902 -9915 -9902 -9907 -3738
GBPUSD -9866 -9875 -9876 -9864 -9867 -9933 -6404
EURUSD -9924 -9924 -9931 -9920 -9920 -9903 -3779
USDJPY -9904 -9900 -9900 -9904 -9920 -9902 -6493
AUDUSD -9955 -9954 -9955 -9995 -9955 -9965 -8649
USDCAD -9903 -9902 -9901 -9911 -9900 -9904 -1525
EURGBP -9861 -9867 -9865 -9862 -9881 -9877 -9913
EURCHF -9861 -9862 -9872 -9881 -9870 -9875 -9258
EURJPY -9861 -9865 -9866 -9868 -9876 -9905 -9880
GBPJPY -9842 -9844 -9867 -9840 -9919 -10000 -9933
GBPCHF -9841 -9843 -9917 -9840 -9893 -9848 -9895
EURAUD -9866 -9869 -9863 -9872 -9867 -9904 -7656


Prozentsatz der Gewinntrades:


M1 M5 M15 M30 H1 H4 D1
USDCHF 19.22 26.82 32.29 35.71 40.29 44.15 47.93
GBPUSD 20.12 28.16 32.01 34.87 40.05 41.97 49.39
EURUSD 25.24 32.65 38.32 39.48 41.50 45.81 48.88
USDJPY 19.16 29.48 35.02 37.03 40.19 44.45 47.34
AUDUSD 19.63 21.67 25.76 28.16 32.11 41.11 46.76
USDCAD 22.84 24.46 27.39 29.79 34.44 42.26 48.46
EURGBP 21.44 29.45 33.05 36.55 38.19 41.86 46.23
EURCHF 27.51 29.98 30.92 34.44 34.09 40.87 44.27
EURJPY 21.24 28.56 35.58 38.78 40.50 44.23 47.12
GBPJPY 11.30 19.90 31.91 37.15 36.76 41.11 46.24
GBPCHF 22.00 26.81 32.13 34.38 36.99 43.11 47.16
EURAUD 1.50 6.56 15.14 22.25 31.63 37.96 47.70

Der Test zeigte keine signifikant besseren Ergebnisse, verglichen mit der ersten und der zweiten Methode. Die Rendite war negativ für alle Instrumente auf allen Zeitrahmen, während der Prozentsatz der Gewinntrades 50% nicht überschritten hat.



Fazit

Die in dem Artikel bereitgestellten Testergebnisse zeigten die schlechte Wirksamkeit der bewerteten Methoden.

  • Die erste Methode stellte sich als extrem ineffektiv heraus. Wahrscheinlich benötigt Annahme, dass die Richtung des nächsten Candlestick übereinstimmt mit der Richtung des vorherigen, weitere Überprüfungen in der Prognose.
  • Die zweite Methode zeigt das beste Ergebnis aller betrachteten Methoden. Allerdings erfordert sie eine detailliertere Analyse. Beispielsweise Daten über die Anzahl an Trades, Gewinn, der nicht realisiert wurde könnten sich als interessant zeigen.
  • Die dritte Methode zeigte durchschnittliche Ergebnisse im Vergleich zu der ersten und zweiten Methode und benötigt weitere Verbesserung. Der Grundgedanke dahinter war die Verbesserung der Eigenschaften im Vergleich zu den zwei naiven Methoden. Allerdings erbrachte es keine Verbesserungen. Anscheinend ändert diese Methode sehr oft die Prognosemethode, was zu weiteren Fehlern führt.

Übersetzt aus dem Russischen von MetaQuotes Software Corp.
Originalartikel: https://www.mql5.com/ru/articles/1374

Beigefügte Dateien |
Wie Zuverlässig ist Nacht-Trading? Wie Zuverlässig ist Nacht-Trading?

Der Artikel behandelt die Besonderheiten des flachen Nacht-Trading auf Cross-Währungspaare. Er erklärt wo Sie Gewinne erwarten können, und warum große Verluste nicht unwahrscheinlich sind. Außerdem beinhaltet der Artikel auch ein Beispiel des für Nacht-Trading entwickelten Expert Advisor und spricht über die praktische Anwendung dieser Strategie.

Benachrichtigung und Kommentar für Externe Indikatoren (Teil Zwei) Benachrichtigung und Kommentar für Externe Indikatoren (Teil Zwei)

Seit ich den Artikel "Benachrichtigung und Kommentar für Externe Indikatoren" veröffentlicht habe, empfing ich viele Bitten und Anfragen bezüglich der Möglichkeit der Entwicklung eines externen Informanten, dessen Betrieb auf Indikatorlinien basiert. Nachdem die Fragen analysiert waren, habe ich beschlossen mit dem Thema fortzufahren. Der Erhalt von in den Indikator-Puffern gespeicherten Daten stellte sich als ein weiterer Interessenbereich der Nutzer heraus.

Expert Advisor für das Trading in dem Kanal Expert Advisor für das Trading in dem Kanal

Der Expert Advisor zeichnet die Kanal-Linien. Die obere und untere Kanal-Linien fungieren als Support- und Resistance-Ebenen. Der Expert Advisor markiert Bezugspunkte, bietet jedes Mal akustische Benachrichtigung, wenn der Kurs die Kanal-Linien erreicht oder kreuzt und zeichnet die entsprechenden Markierungen. Bei der Fractal-Bildung, erscheinen die entsprechenden Pfeile auf den letzten Balken. Linien-Ausbrüche können die Möglichkeit eines wachsenden Trends hindeuten. Der Expert Advisor ist durchgehend ausführlich kommentiert.

EA Status SMS Benachrichtigung EA Status SMS Benachrichtigung

Die Entwicklung eines Systems von SMS-Benachrichtigungen, die Sie über den Status Ihres EA informieren, so dass Sie immer bewusst über jede kritische Situation sind, wo immer Sie sind.