MetaTrader 5 herunterladen

Das Beispiel eines Indikators, der die Linien Unterstützung / Widerstands zeichnet

19 Juni 2017, 09:46
Andrey Kisselyov
0
604

Einführung

Mit Hilfe dieses Artikels wird die älteste Weise (in der technischen Analyse) der Prognose der Preisniveaus für alle verfügbar sein, wer nach ihm arbeiten will. Sie haben die Möglichkeit, den Indikator für den Aufbau der Trend-Linien (die Linien Unterstützung/Widerstands) zu verwenden, aber verstehen auch nebenbei, wie einfach es ist, das zu realisieren. Nun können Sie selbst die Bedingungen für den Aufbau der Linien formulieren, die Sie nötig finden, dabei den Code des Indikators nach Ihren Wünschen ein wenig ändern.

Achtung: die gegebene Beschreibung, genauso wie alles Geschriebene in diesem Artikel, bezieht sich nicht zu den Empfehlungen des Handels und hat nur eine rein informative Funktion. Der Autor trägt keine Verantwortung für Ihre Handlungen, einschließlich die Verluste oder die Gewinne, die Sie bei der Arbeit nach der beschriebenen Methodik bekommen haben.


Was ist das, die Linien Unterstützung / Widerstands?

Um etwas zu verstehen, muss man in erster Linie eine Definition des forschenden Objektes geben. Unten wird die Definition der Linien Unterstützung / Widerstands gegeben, die meiner Meinung nach am genausten ihr Kern erklärt.

Die Linie Unterstützung (Resistance) — ist eine Linie der Preisbewegung auf einer bestimmten Zeit, welche sie nicht überschreitet.

Die Linie Widerstands (Support) — ist eine Linie der Preisbewegung auf einer bestimmten Zeit, welche von der Preisbewegung nie nach unten gebrochen wird.

Die Linie der Unterstützung kann sowie horizontal, als auch geneigt zu irgendwelcher Seite sein. Und die Rolle der Linie wird sich ändern, je nachdem, was man auf dem Chart zieht. Nun sprechen wir über die Unterstützung-Linie. Das oben Gesagte wird auch für die Linie des Widerstands richtig, nur mit dem Unterschied, dass sie spiegelnd sind.
Wenn die Linie horizontal ist, befindet sich der Preis im Preiskorridor. Die Rolle der Linie — die Eröffnung der Orders auf den Kauf, Fixierung des Order-Gewinns auf den Verkauf.
Wenn die Linie steigend ist — geht der Preis im steigenden Trend. Die Rolle der Linie — der Eröffnungslevel der Orders auf den Kauf.
Wenn die Linie nach unten geht — geht der Preis im fallenden Trend. Die Rolle der Linie — der Fixierungslevel des Gewinns für die Orders auf den Verkauf.

Wie man es aus der Definition sehen kann, ist jede dieser Linien ein eigentümliches Hindernis für die Preisbewegung in einer bestimmten Richtung. Es lässt seinerseits zu, zu vermuten, dass der Preis sich von der Linie abstoßt und wird in die nötige Richtung gehen: wenn es die Linie der Unterstützung ist — dann nach oben, wenn es die Linie des Widerstands ist — dann nach unten. Wenn die Linie durchgebrochen ist und der Preis überschritt ihre Grenzen, folgern wir, dass der Trend in der gegebenen Richtung beendet ist. Es bedeutet nicht, dass der Preis die Richtung ändern wird, aber Sie können sicher sagen, dass der Trend für die weitere Bewegung erschwert ist. Logisch wäre es, die Linie des Widerstands mit der absteigenden Preisbewegung zu verbinden, und die Linie der Unterstützung — mit der steigenden Preisbewegung. In diesem Fall zeigen die Linien dem Trader harmonisch, wohin sich der Markt bewegt — nach oben oder nach unten.

Man kann auch die horizontalen Linien aufbauen. Es wird den Standort des Preises in einem bestimmten Korridor bedeuten. Zum Beispiel, der Preis kann nicht als Notiz 1.1545 runter gehen, kann aber auch nicht höher als 1.1834 auf einem bestimmten Zeitintervall aufgehen. Die Linie des Widerstands auf der steigenden Preisbewegung ist ebenso möglich, zu bauen, genauso wie auch die Linie der Unterstützung — auf der absteigenden Preisbewegung, aber in diesem Fall wird die Linien der Fixierung des Gewinns sein, welche Sie durch die geöffneten Trades in der Richtung der Preisbewegung haben. Wir betrachten einen Aufbau der geneigten Linien der Unterstützung/Widerstand, und bauen auch die horizontalen Levels der Unterstützung/Widerstands auf.


Die Auswahlbedingungen des Anfangspunktes des Aufbaues der geneigten Linie

Welche Parameter muss man für den richtigen Aufbau der Linien auf dem Chart im automatischen Modus nehmen?

Da die Linie des Widerstands dem Preis nicht zulassen, zu steigen , ist logisch, sie nach den Spitzen zu bauen, und die Linie der Unterstützung, die dem Preis nicht fallen zulässt, - nach den Tiefen. Nicht mal nur drumherum zu gehen, werden wir den Indikator Fraktal Bills Williams aus dem Terminal MetaTrader 5 verwenden und sehen auf dem Chart die möglichen Punkte des Aufbaues. Welcher Fraktal wir als Anfangspunkt des Abzahlens nehmen müssen, können wir auf dem Chart sehen. Für die Linie des Widerstands wäre es wünschenswert, damit es der oberste Fraktal auf dem Chart wäre, es gäbe dann keinen oberen Fraktal, und der Preis ihn nicht überschreitet. Für die Linie der Unterstützung wird es entsprechend der untere Fraktal, es gäbe dann keinen unteren Fraktal am Chart. Hier wird kein ganzes Chart betrachtet, sondern nur der Teil, der uns sichtbar, den werden wir eben analysieren. Davon geht logischerweise einige Bedingung aus, die wir im Aufbau verwenden können: der obere Fraktal muss höher sein, als zwei neben ihm stehenden Fraktalen, und der untere — niedriger als seine zwei "Nachbarn" . Also, den Punkt des Abzahlens haben wir schon.

Die Auswahlbedingung des zweiten Punktes des Aufbaues der geneigten Linie

Da jede Linie mindestens nach 2 Punkten gebaut werden muss, müssen wir die Auswahlregeln des zweiten Punktes unserer Linien Unterstützung / Widerstands formalisieren.

Welche Kriterien werden wir zur Auswahl des zweiten Punktes verwenden? Erstens können wir den zweiten Fraktal nehmen, der nach unserem ersten Punkt geht: das zeigt die nächste Linie. Aber wir können auch andere Auswahlregeln verwenden — zum Beispiel, den höchsten Punkt auf dem Chart, die Linie für die Linie des Widerstands, durch die der Preis nach oben nicht überschreitet hat (oder den niedrigsten Punkt auf dem Chart, die Linie für die Linie der Unterstützung, durch die der Preis nach unten nicht überschreitet). Sie können die Auswahlregeln des zweiten Punktes selbst bestimmen. Wir halten uns auf dem nächsten zweiten Fraktal auf, nach dem wir eben die Linien der Unterstützung/Widerstands bauen werden.  

Die Punkteauswahl des Aufbaues der Linien


Die Bedingungen der Zurücksetzung der Linien und der Suche der neuen Punkte des Aufbaues für die geneigte Linie

Die Punkte des Aufbaues der Linien haben wir schon. Jetzt wäre es gut, zu bestimmen, wann unsere Linien zu Ende gehen sollen. Für die Linie des Widerstands als die Bedingung des Endes kann man durchaus den Durchbruch nach oben übernehmen, und für die Linie der Unterstützung — im Gegenteil, den Durchbruch nach unten. Und da der Preis manchmal die Linien um einige Punkte durchbricht, aber später tritt zurück, werden wir den Fehler feststellen, bis zu dem die Linie als Ungebrochene gelten wird. Es wird als Schutzvorrichtung von der falschen Aufhebung der Linien dienen.

Auch muss man berücksichtigen, dass der Preis manchmal weit vom Level geht und kehrt lange Zeit nicht zur Linie zurück. Wir werden in den Einstellungen die höchstzulässige Länge der Linie in den Bars geben. Das ermöglicht uns zu beginnen, die neue Linie zu zeichnen, wenn die vorhergehende Linie plötzlich "in der Luft hängen bleibt". Da die Preisbewegung nicht zugleich 2 Linien des Widerstands und 2 Linien der Unterstützung haben kann, ist logisch zu vermuten, dass die gebildete Linie so lange gelten wird, bis sie nicht durchgebrochen wird. Folgendermaßen werden wir die Bedingungen für den Aufbau der neuen Linie schon nach ihrem Schluss suchen.

Solange ist die laufende Linie durchgebrochen, warten wir auf die Bedingungen für das Zeichen der neuen Linie. Für jede Linie werden wir einen separaten Puffer wählen und werden jede getrennt bilden. Das ermöglicht zu sehen, wie der Kampf zwischen Stieren und Bären stattfinden wird. Als Folge können wir für den ersten Punkt den höchsten (für den Widerstand) und niedrigsten (für die Unterstützung) Fraktal wählen. Der zweite Punkt wird der nächste ähnliche Punkt — der höhere (für den Widerstand) oder der niedrige (für die Unterstützung). Die Bedingung für den Aufbau ist fertig. Man muss das jetzt nur in Form eines Codes des Indikators realisieren. Wir beginnen ihn zu schreiben.

Das Beispiel der Realisierung des Linien-Aufbaues aufgrund des Indikators für die geneigten Linien

Erstens, was wir machen — erstellen wir die Muster nach den Standardeinstellungen. Dann erstellen wir 2 Puffer — für den Widerstand und für die Unterstützung. Wir werden die Einstellungen Pips _ (die Größe, um die die Linie durchgebrochen wurde) und MaxBars ( die maximal mögliche Länge der Linie) übertragen. Darauf beenden die automatischen Bildungsprozeduren des Indikators. Weiter fängt die aufmerksame schöpferische Arbeit an.

Beim Start des Indikators testen wir, wo wir uns befinden. Wenn der Indikator zum ersten Mal gestartet wird, bestimmen wir den Anfang als die zweite Bar, um die ersten 2 nicht zu zählen, auf den gar keine gebildeten Fraktalen sein können. Nach Bill Williams, ist ein Fraktal eine Spitze (Tiefe), der höher (niedriger) als zwei linker und zwei rechte benachbarten Spitze (Tiefe) sind. 

Wenn unser Indikator schon gestartet wurde, zählen wir den Indikator von der letzten gezählten Bar.

   int limit=prev_calculated;
   if(limit>3)limit-=3;
   if(limit<2)limit=2;

Wir werden den Puffer aus dem Indikator Fraktal Bills Williams nicht kopieren, sondern schreiben wir ein Paar Funktionen ,die überprüfen werden, ob unsere Bar ein Fraktal ist. Wir werden dabei nicht vergessen, sich von den Fehlern des Zuganges zum Puffer zu sichern: wir starten die Durcharbeitung bei ungeplanten Werten.

bool up(const double &h[],int q)
  {
// Wir prüfen die Bar auf das Vorhandensein wenigstens 2 Bars nach ihm 
// wenn nach unserer Bar weniger als 2 Bars gibt, kann sie nach den Regeln nicht als Fraktal gelten
// in diesem Fall geben false zurück, ohne Prüfung
   if(q>=ArraySize(h)-2)return(false);
// Wir prüfen die Bar auf das Vorhandensein wenigstens 2 Bars vor ihr, 
// wenn vor unserer Bar weniger als 2 Bars gibt, kann sie nach den Regeln nicht als Fraktal gelten
// in diesem Fall geben false zurück, ohne Prüfung
   if(q<2)return(false);
// Überprüfen, ob unsere Bar Fraktal ist. Wenn es sie ist, liefern true zurück
   if(h[q]>=h[q-1])
      if(h[q]>=h[q-2])
         if(h[q]>h[q+1])
            if(h[q]>h[q+2])
               return(true);
// Wenn wir alle Prüfungen durch haben, und sind immer noch im Block, so ist die Bar dann kein Fraktal, wir geben false zurück
   return(false);
  }
//+------------------------------------------------------------------+
bool down(const double &h[],int q)
  {
// im gegebenen Block ist alles dem vorhergehenden Block ähnlich
   if(q>=ArraySize(h)-2)return(false);
   if(q<2)return(false);
   if(h[q]<=h[q-1])
      if(h[q]<=h[q-2])
         if(h[q]<h[q+1])
            if(h[q]<h[q+2])
               return(true);
   return(false);
  }

Weiter wird es nötig, 1 Bar im Array HIGH zu finden und das auf die Übereinstimmung mit unseren Parametern zu prüfen. Wenn das übereinstimmt, so speichern wir ihn und suchen den Punkt 2 für den Aufbau der Linie. Ansonsten gehen wir zu anderer Bar.

for(int w=limit;w<rates_total;w++)
  {
   if(up(high,w))                  //Wir überprüfen das Vorhandensein des Fraktals auf der gegebenen Bar
     {
      if(r1==0)r1=w;               //wenn es einen Fraktal gibt und wir haben keine Spitze, stellen wir 1 Spitze
     }
  }

Nachdem wir den ersten Fraktal gefunden haben, suchen wir den Nächsten. Dabei muss man sich daran erinnern, dass er unter unserer ersten Bar sein muss, und dementsprechend, wenn er höher ist, dann muss man den neue Wert dem 1 #Fraktal übergeben.

if(high[w]>=high[r1])r1=w;                   //Wir vergleichen es mit der ersten Spitze. Wenn der Fraktal höher ist, zählen wir die vorliegende Spitze als erste
else
   {
    r2=w;                                    //wir bekommen den Wert der zweiten Spitze     
    speedr=(high[r2]-high[r1])/(r2-r1);      //Wir haben  die Geschwindigkeit der Linie gerechnet
    w=r1-1;                                  //Wir kehren zum Zeichen der neuen Linie zurück
   }

Nach dem Herausfinden des zweiten Fraktals, der unseren allen Anforderungen entsprecht, rechnen wir die Geschwindigkeit der Bewegung der Linie und beginnen mit ihrem Aufbau vom erstem Fraktal (indem kehren wir wieder zu ihm). Um Fehler zu vermeiden, die bei dem Aufbau des vorhergehenden Punktes unbedingt entstehen, werden wir die Linie vom Anfang seines Aufbaues zählen. Als Folge wird der Fehler des Aufbaues auf jedem Punkt den Fehler des Indikators nicht übertreten. Wir überprüfen direkt, ob die Linie nach unseren Bedingungen durchgebrochen ist, und wenn ja, so warten wir auf den neuen Aufbau. Man muss bemerken, dass die Überprüfung auf einen Durchbruch nur nach dem zweiten Fraktal geht. Das Verhalten des Preises zwischen Fraktalen interessiert uns nicht. Für die Linie der Unterstützung sind die Berechnungen ähnlich.

ResistanceBuffer[w]=high[r1]+speedr*(w-r1);               //Um den Fehler minimal zu haben, zahlen wir von der Spitze
if(w>r2)                                                  //Wir überprüfen, ob die Linie durchgebrochen ist oder nicht 
if(high[w]>ResistanceBuffer[w]+Pips_*_Point){r1=0;r2=0;}

So sieht der Indikator mit verschiedenen Einstellungen aus.

ind1

ind2

ind3

Und das sind gleichzeitig einige Indikatoren auf dem Chart.

ind4

ind5

Die Auswahl der Punkte des Aufbaues für die horizontalen der Unterstützung / Widerstand Levels

Für den Aufbau der horizontalen Levels brauchen wir nur einen Punkt. Es erleichtert unsere Aufgabe. Es gibt viele Auswahlvarianten der Punkte des Aufbaues. Ich werde nur einige von ihnen aufführen:

  • Die Levels nach Fibonacci ausgehend von der Berechnung des vorhergehenden Tages (Bar);
  • Die Levels nach Fibonacci ausgehend von der Berechnung des durchschnittlichen Tages, vom mittleren Preisbereich des vorhergehenden Tages;
  • Die maximale Anzahl der Fraktalen auf einem bestimmten Bereich;
  • Das Ansammeln der Maximums oder Minimums, der Preise der Eröffnung oder Schließung der Bars in einem bestimmten Bereich;
  • Die Levels des Ansammelns der Umfänge nach einem bestimmten Preis (das Profil des Marktes);
  • Der Level der Preiswende aufgrund der Figuren;
  • und so weiter.

Sie können dazu jede Bedingung hinzufügen, die Sie notwendig für die Betrachtung halten, aber das Wesen wird zu dem führen: dass wir die Bedingung suchen, nach dem der Preis sich von diesem oder jenem Level abstößt. Und je öfter diese Bedingung ausgelöst wird, desto wirksamer ist unsere horizontale Unterstützung / Widerstand Linie. Als Beispiel werden wir die erste Variante des Aufbaues betrachten. Wir nehmen die Preisbewegung im Laufe des Tages.

Die Tagesbewegung

Wie wir sehen, ging der Preis mal nach oben, mal nach unten. Das Tages-Extremum ist immer ein Level, von dem der Preis abgestoßen ist und ging zu anderer Seite. Sehr selten kommt das vor, dass der Preis auf Maximum oder Minimum seine Tagesbewegung beendet hat. Davon ausgehend können wir jedes Tagesmaximum als Level des Widerstands zahlen, und Minimum — als Level der Unterstützung.

Da der Level sich in unserem Fall am Ende des Handelstages bildet, werden wir ihn am folgenden Handelstag verwenden, wie der Orientierungspunkt für die Handelsaktionen. Aber der Markt bleibt nicht an einer Stelle, und der Preis ändert ständig seine Richtung und den Bereich. Wir realisieren die Möglichkeit, einige berechneten Levels bezüglich der Preise des vorhergehenden Tages zu sehen. Unter dem vorhergehenden Tag wird die vorhergehende Bar auf irgendwelchem Chart einer großen Timeframe gemeint, im Vergleich zu dem, in dem wir handeln. Also, die Auswahlmöglichkeit der Timeframe muss im Indikator realisiert werden. Wir fügen zu den Berechnungen den Koeffizient hinzu, der ermöglicht, die Linien zu dieser oder jener Seite bezüglich der Preise des vergangen Tages zu schieben. Für jeden Level ist dieser Koeffizient anwendbar. Wir beginnen ihn zu schreiben.

Das Realisierungsbeispiel eines Indikators, der die horizontalen der Unterstützung / Widerstand Levels zeichnet

Zum Anfang erstellen wir unseren Indikator mit standardmäßigen Eigenschaften. Wir nennen das ebenso wie den Vorhergehenden, nur fügen wir den Buchstaben Н am Ende hinzu, was "den Horizontalen" bedeuten wird. Wir werden die Timeframe eingeben, auf der wir die Daten, 3 Koeffizienten für jedes Linien-Paar, 7 Puffer für das Zeichen der Levels nehmen werden.

Bevor wir anfangen, zu schreiben, muss man berücksichtigen, dass wir die Daten nach älterer Timeframe in drei separaten Puffern nehmen werden: für die Zeit, Maximum und Minimum. Wir schreiben die Funktion der Daten-Kopieren in unseren Arrays, dabei auch nicht vergessen, dass ihre Größe bei Bedarf geschrieben werden muss.

void array_copy(int b_)
  {
   ArrayResize(time_tf,b_);                         //wir ändern die Größe des Puffers unter den vorhandenen Daten
   ArrayResize(high_tf,b_);
   ArrayResize(low_tf,b_);

   int total=b_-bars_tf;                            //Wir rechnen, welches Kopieren der Daten man durchführen muss 

   CopyTime(_Symbol,Period_TF,0,total,time_tf)      //Wir kopieren die fehlenden Daten ins Array 
   CopyHigh(_Symbol,Period_TF,0,total,high_tf);
   CopyLow(_Symbol,Period_TF,0,total,low_tf);

   bars_tf=b_;                                      //Wir speichern die Größe des Arrays und die Anzahl der Daten
  }

Die Daten wurden bekommen, man muss sie bearbeiten und die Berechnungen in den Arrays übertragen. Da alle Berechnungen nach den Daten identisch sein werden, wird es logisch, die Berechnungen in eine Funktion zu übertragen und ihr die Daten zu übergeben.

void f1(double k_fibo,int q,int r,const datetime &time_[],double &b1[],double &b2[])
  {
   for(int w=q;w<r;w++)
     {
      int b=f2(time_[w]);         //Wir suchen die Zeit der laufenden Bar im Array der älteren Timeframe
      double h=high_tf[b];        //Wir bekommen das Maximum
      double l=low_tf[b];         //Wir bekommen das Minimum
      double hl=h-l;              //Wir finden den  Bewegungsbereich
      b1[w]=h-hl*k_fibo;          //Wir tragen die gerechneten Werte in den Puffer der Unterstützung ein
      b2[w]=l+hl*k_fibo;          //Wir tragen die gerechneten Werte in den Puffer des Widerstands ein
     }
  }

Da die vorübergehenden Bereiche nicht gleich sind, müssen wir die Zeit der Bar des laufenden Arrays im Zeit-Array des älteren Araays finden. Das machen wir eben im folgenden Fragment des Codes.

int f2(datetime t_)
  {
   int b_=ArrayBsearch(time_tf,t_);      //Wir suchen die Bar durch ein standarten Suchprozedur in den sortierenden Arrays
   if(time_tf[b_]>t_)b_--;               //wenn uns  die Zeit der nächsten älteren Bar zurückgegeben wird, so verringern wir ihn um 1 
   return(MathMax(0,b_-1));              //Vergessen wir nicht die Bar unter Berücksichtigung auf die Beschränkung nach Minimum zurückzugeben 
  }

Es ist der ganze Indikator, der uns die nötigen Levels der Unterstützung und des Widerstands bezüglich der Preise des vergangen Tages zeichnen wird.
   int limit=prev_calculated;
   if(limit>0)limit--;

   int bar=Bars(_Symbol,Period_TF);
   if(bars_tf==0 || bar>bars_tf)array_copy(bar);

   f1(0.5,limit,rates_total,time,buffer7,buffer7);           //Wir zeichnen die Mediane
   f1(K_Fibo_1,limit,rates_total,time,buffer1,buffer2);      //Wir zeichnen die Levels nach 1 Koeffizient
   f1(K_Fibo_2,limit,rates_total,time,buffer3,buffer4);      //Wir zeichnen die Levels nach 2 Koeffizient
   f1(K_Fibo_3,limit,rates_total,time,buffer5,buffer6);      //Wir zeichnen die Levels nach 3 Koeffizient

So unkompliziert haben wir den Indikator der horizontalen Levels der Unterstützung / Widerstand bekommen. Und so sieht es auf dem Chart aus.

Wie wir es auf dem Screenshot sehen, stößt sich der Preis von den vom Indikator aufgebauten Levels ab. Genug lange diente einer von ihnen als Unterstützung. Die Auswahl der produktivsten Levels — ist eine Sache der Technik und der Optimierung der Parameter des konkreten Handelssystems.

Die Unterstützung / Widerstand Levels aufgrund der gleitenden Mittelwerte

Es scheint, das Thema schon erschöpft sei: was kann man noch dazu, außer der Trend- und der horizontalen Unterstützung / Widerstand Linien in diesem Zusammenhang sagen?

Beachten Sie bitte auf die Indikatoren aufgrund der gleitenden Mittelwerte. Als erste nennen wir natürlich Moving Average, weiter — Bollinger Bands und Envelopes, die zum Standardsatz des Terminales gehören. Diese Indikatoren sind so, als sie für die Darstellung auf dem Chart der Levels Unterstützung / Widerstands erstellt wurden. Wir öffnen die Eigenschaften des Indikators im Titel "Ebene" und schreiben dort ein Paar Levels mit dem Zeichen Minus und ein Paar — mit dem Zeichen Plus. Wir bekommen ein solches Bild:

Solche Ergebnisse wurden für die übrigen Indikatoren bekommen. Der Preis "sieht" die Levels und stößt sich von ihnen ab, genauso wie von den gewöhnlichen Unterstützung / Widerstand Levels.

Fazit

Zum Schluss wollte ich die wichtige Besonderheit der Levels der Unterstützung / Widerstand bemerken. Nachdem der Preis den Level durchbricht, wird die Linie der Unterstützung oft eine Widerstands-Linie, und umgekehrt. Die Arbeit von den Levels Unterstützung / Widerstand fordert die zusätzlichen Signale für die Eröffnung der Trades zu dieser oder jener Seite, denn man weist nicht sicher, was mit dem Preis nach dem Erreichen des Levels geschehen wird. Aber im Moment, wenn er zu diesem oder jenem Level herankommt, muss sehr man aufmerksam sein. Die Entwicklung der Arbeitsstrategie von den Levels ist kein Zweck des vorliegenden Artikels.


Danke für die Aufmerksamkeit.

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

Beigefügte Dateien |
Cross-Platform Expert Advisor: Signale Cross-Platform Expert Advisor: Signale

Dieser Artikel beschreibt die Klassen CSignal und CSignals, die in Cross-Plattform Expert Advisor verwendet werden. Es werden die Unterschiede zwischen MQL4 und MQL5 untersucht, wie sie jeweils auf bestimmte Daten zum Ermitteln eines Handelssignals zugreifen, um einen Code zu schreiben, der für beide Kompiler kompatible ist.

Die Erstellung der benutzerdefinierten Indikatoren unter Verwendung der Klasse CCanvas Die Erstellung der benutzerdefinierten Indikatoren unter Verwendung der Klasse CCanvas

Im Artikel wurde das Beispiel der Erstellung der gezeichneten benutzerdefinierten Indikatoren mit Hilfe der graphischen Ringpuffer der Klasse CCanvas.

Analyse der Grafiken Kontostand/Equity nach Symbolen und nach ORDER_MAGIC von Expert Advisors Analyse der Grafiken Kontostand/Equity nach Symbolen und nach ORDER_MAGIC von Expert Advisors

Die Einführung der Hedging-Option in MetaTrader 5 ermöglichte es, gleichzeitig mehrere Expert Advisors auf einem Handelskonto handeln zu lassen. Dabei ist die Situation möglich, dass eine Strategie profitabel ist, während die andere Verluste bringt. Als Ergebnis schwankt die Grafik um Null. Für diesen Fall ist es praktisch, Kontostand- und Equity-Grafiken für jede Handelsstrategie separat zu zeichnen.

Erstellung der Dokumentation basierend auf Quellcodes von MQL5 Erstellung der Dokumentation basierend auf Quellcodes von MQL5

Der Artikel beschäftigt sich mit der Erstellung der Dokumentation zu einem Code in MQL5 und beginnt mit der Automatisierung der Platzierung von Tags. Weiter wird die Arbeit mit dem Programm Doxygen beschrieben, ihre Konfiguration und das Erhalten von Ergebnissen in verschiedenen Formaten: in HTML, HtmlHelp und in PDF.