Erstellen von benutzerdefinierten Indikatoren Bei der Erstellung einer Handelsstrategie steht ein Entwickler oft vor der Notwendigkeit, in einem Sicherheitsfenster eine bestimmte Abhängigkeit zu berechnen, die von einem Benutzer (Programmierer) berechnet wird. Zu diesem Zweck bietet MQL4 die Möglichkeit, individuelle Indikatoren zu erstellen. Custom Indicator ist ein in MQL4 kodiertes Anwendungsprogramm, das grundsätzlich für die grafische Darstellung vorberechneter Abhängigkeiten vorgesehen ist. Benutzerdefinierte Indikatorstruktur Notwendigkeit von Puffern Das Hauptprinzip, das den benutzerdefinierten Indikatoren zugrunde liegt, besteht darin, Werte von Indikatorarrays über Austauschpuffer an ein Client-Terminal (zum Zeichnen von Indikatorzeilen) weiterzugeben. Puffer ist ein Speicherbereich, der numerische Werte eines Indikatorarrays enthält. MQL4-Standard impliziert die Möglichkeit, bis zu acht Indikatorlinien mit einem benutzerdefinierten Indikator zu erstellen. Ein Indikatorarray und ein Puffer werden in Übereinstimmung mit jeder Indikatorlinie gebracht. Jeder Puffer hat seinen eigenen Index. Der Index des ersten Puffers ist 0, der zweite - 1 und so weiter, der letzte hat den Index 7. 115 zeigt, wie die Informationen aus einem benutzerdefinierten Indikator über Puffer an ein Client-Endgerät zum Zeichnen von Indikatorzeilen übergeben werden. Feige. 115. Übergeben von Werten von Indikator-Arrays über einen Puffer an ein Client-Terminal. Die allgemeine Reihenfolge für die Erstellung von Indikatorlinien ist die folgende: 1. Berechnungen werden in einem benutzerdefinierten Indikator durchgeführt, wodurch numerische Werte den Indikatorarrayelementen zugewiesen werden. 2. Werte von Indikatorarray-Elementen werden über Puffer an ein Client-Terminal gesendet. 3. Auf der Basis von Wert-Arrays, die von Puffern empfangen werden, zeigt ein Client-Terminal Anzeigenzeilen an. Komponenten eines benutzerdefinierten Indikators Ermöglicht die Analyse eines einfachen benutzerdefinierten Indikators, der zwei Zeilen zeigt - eine Zeile basiert auf maximalen Barpreisen, die zweite auf minimalen Preisen. Beispiel für ein einfaches benutzerdefiniertes Indikator userindicator. mq4 Wir können die Indikatorteile detailliert analysieren. In jedem in MQL4 geschriebenen Anwendungsprogramm können Sie Setup-Parameter angeben, die die korrekte Programmbedienung durch ein Client-Terminal bereitstellen. In diesem Beispiel enthält der Kopfprogrammteil (siehe Programmstruktur) mehrere Zeilen mit directives-Eigenschaft. Die erste Anweisung gibt an, in welchem Fenster das Client-Terminal die Indikatorlinien zeichnen soll: In MQL4 gibt es zwei Varianten von Zeichnungsindikatorlinien: im Hauptsicherheitsfenster und in einem separaten Fenster. Das Hauptfenster ist das Fenster mit einer Sicherheitskarte. In diesem Beispiel zeigt parameter indicatorchartwindow im Eigenschaftsverzeichnis an, dass ein Client-Terminal Indikatorzeilen im Hauptfenster zeichnen soll. Die nächste Zeile zeigt die Anzahl der im Indikator verwendeten Puffer: Im analysierten Beispiel werden zwei Indikatorzeilen gezeichnet. Jedem Puffer ist ein Puffer zugeordnet, so daß die Gesamtzahl der Puffer zwei beträgt. Die nächsten Zeilen beschreiben die Farben der Indikatorlinien. Die Parameter indicatorcolor1 und indicatorcolor2 definieren die Farbeinstellungen für entsprechende Puffer - in diesem Fall für Puffer mit den Indizes 0 (blau) und 1 (rot). Beachten Sie, dass Zahlen in den Parameternamen indicatorcolor1 und indicatorcolor2 keine Pufferindizes sind. Diese Figuren sind Teile von konstanten Namen, die in Übereinstimmung mit Puffern gesetzt sind. Für jede konstante Farbe kann die Diskretion eines Benutzers eingestellt werden. In den nächsten Zeilenindikator-Arrays werden deklariert: Der Indikator ist für das Zeichnen zweier Indikatorlinien vorgesehen, daher müssen wir zwei globale eindimensionale Arrays deklarieren, einen für jede Zeile. Namen von Indikator-Arrays sind bis zu Benutzer. In diesem Fall werden die Array-Namen Buf0 und Buf1 verwendet, in anderen Fällen können andere Namen verwendet werden, z. B. Line1, Alfa, Integral etc. Es ist notwendig, Arrays auf globaler Ebene zu deklarieren, da Array-Elemente Werte zwischen den Anrufen beibehalten werden müssen Der Sonderfunktion start (). Die beschriebene benutzerdefinierte Anzeige basiert auf zwei Sonderfunktionen - init () und start (). Die Funktion init () enthält nur den Codeteil, der nur einmal im Programm verwendet wird (siehe Sonderfunktionen). Eine sehr wichtige Aktion wird in der Zeile ausgeführt: Mit der Funktion SetIndexBuffer () wird ein notwendiger Puffer (in diesem Fall mit dem Index 0) in Korrespondenz mit einem Array (in diesem Fall Buf0) gesetzt. Es bedeutet für den Aufbau der ersten Indikatorlinie ein Client-Terminal akzeptiert Daten im Array Buf0 mit dem Null-Puffer für sie enthalten. Weiterhin wird der Linienstil definiert: Für den Nullpuffer (0) sollte ein Client-Terminal folgende Zeichnungsstile verwenden: einfache Linie (DRAWLINE), durchgezogene Linie (STYLESOLID), Linienbreite 2. Die nächsten beiden Zeilen enthalten Einstellungen für die zweite Zeile : Entsprechend dem Code der Spezialfunktion init () werden dann beide Indikatorzeilen im Hauptsicherheitsfenster gezeichnet. Die erste ist eine solide blaue Linie mit der Breite 2, die zweite ist eine rote gestrichelte Linie (STYLEDOT) einer üblichen Breite. Indikatorlinien können auch von anderen Stilen gezeichnet werden (siehe Styles of Indicator Lines). Berechnen von Werten von Indikator-Arrays Elemente (Be Attentive) Werte von Indikator-Arrays-Elementen werden in der speziellen Funktion start () berechnet. Um den Inhalt des start () - Codes richtig zu verstehen, achten Sie auf die Reihenfolge der Indexierungsbalken. Der Abschnitt Arrays beschreibt im Detail die Methode der Indexierung von Arrays-timeseries. Nach dieser Methode beginnt die Balkenindizierung von Null. Die Nullleiste ist ein noch nicht geformter Balken. Der nächste Balkenindex ist 1. Die nächsten sind 2 und so weiter. Wenn neue Balken in einem Sicherheitsfenster erscheinen, werden die Indizes der bereits gebildeten Balken geändert. Der neue (aktuelle, gerade geformte, rechtsextreme) Balken erhält den Nullindex, der linke von ihm (der soeben fertig gebildete) erhält den Index 1 und die Werte der Indizes aller Historienbars werden ebenfalls um eins erhöht. Die beschriebene Methode der Indexierung von Bars ist die einzige Möglichkeit für das gesamte Online-Handelssystem MetaTrader, und es wird bei der Zeichnung von Linien mit technischen und benutzerdefinierten Indikatoren berücksichtigt. Es wurde früher gesagt, dass Indikatorlinien auf der Basis von numerischen Informationen, die in Indikatoranordnungen enthalten sind, konstruiert werden. Ein Indikatorarray enthält Informationen über Punktkoordinaten, auf denen eine Indikatorlinie gezeichnet wird. Und die Y-Koordinate jedes Punktes ist der Wert eines Indikatorarray-Elements. Und die X-Koordinate ist der Wert eines Indikatorarray-Elementindex. Im analysierten Beispiel wird die erste Indikatorlinie mit Maximalwerten von Balken gezeichnet. Fig. 116 zeigt diese Anzeigelinie (der blauen Farbe) in einem Sicherheitsfenster, sie ist auf der Basis des Indikatorarrays Buf0 aufgebaut. Feige. 116. Korrespondenz von Koordinaten einer Indikatorlinie zu Werten eines Indikatorarrays. Der Indexwert eines Indikatorarrays wird von einem Client-Terminal in Übereinstimmung mit einem Balkenindex ausgegeben - diese Indexwerte sind gleich. Es muss auch berücksichtigt werden, dass der Prozess des Konstruierens von Indikatorlinien im Echtzeitmodus unter Bedingungen fortschreitet, wenn in einem Sicherheitsfenster von Zeit zu Zeit neue Balken erscheinen. Und alle historischen Bars sind nach links verschoben. Um die Indikatorlinie korrekt zeichnen zu lassen (jeder Linienpunkt über seinem Balken), muss er auch zusammen mit Balken verschoben werden. Es besteht also Bedarf (technischer Bedarf), ein Indikatorarray neu zu indizieren. Der grundlegende Unterschied eines Indikatorarrays aus einem üblichen Array ist folgender: Im Moment, in dem ein neuer Balken erzeugt wird, werden die Indexwerte der Indikatorarrayelemente automatisch durch das Clientterminal geändert, nämlich - der Wert jedes Indikatorarrayindexes wird erhöht Und die Indikatoranordnungsgröße wird um ein Element (mit einem Nullindex) erhöht. Beispielsweise kann der Null-Balken in Fig. 116 (Zeitrahmen H1) hat die Öffnungszeit 6:00. Um 7:00 erscheint eine neue Leiste im Sicherheitsfenster. Die Bar, die um 6:00 Uhr eröffnet wird, erhält automatisch den Index 1. Um die Indikatorlinie korrekt auf dieser Leiste anzuzeigen, ändert das Client-Terminal den Index des Indikatorarray-Elements entsprechend der Bar, die um 6:00 geöffnet ist. In der Tabelle in Fig. 116 wird dieses Element in die erste Zeile geschrieben. Zusammen mit diesen Indizes werden alle Array-Elemente durch das Client-Terminal um eins erhöht. Ein Index des Array-Elements, das dem bei 6:00 geöffneten Balken entspricht, erhält den Wert 1 (vorher war er gleich 0). Das Indikatorarray wird um ein Element größer. Der Index eines neuen hinzugefügten Elements ist gleich 0, der Wert dieses Elements ist ein neuer Wert, der die Koordinate der Indikatorzeile auf einem Nullbalken widerspiegelt. Dieser Wert wird in der Sonderfunktion start () bei jedem Tick berechnet. Berechnungen in der Sonderfunktion start () sollten so durchgeführt werden, dass keine zusätzlichen Aktionen durchgeführt wurden. Bevor der Indikator an ein Diagramm angehängt wird, werden keine Indikatorlinien angezeigt (da Werte für Indikatorarrays noch nicht definiert sind). Deshalb müssen beim ersten Start der Sonderfunktion die Start - () - Indikator-Array-Werte für alle Balken berechnet werden, auf denen die Indikatorlinie gezeichnet werden soll. In dem analysierten Beispiel sind dies alle Balken, die in einem Diagramm vorliegen (die anfänglichen Berechnungen können nicht für alle verfügbaren Balken durchgeführt werden, sondern für einen letzten Teil der Geschichte wird sie in weiteren Beispielen beschrieben). Für alle weiteren Starts der Sonderfunktion start () ist es nicht nötig, die Werte des Indikatorarrays für alle Balken wieder zu berechnen. Diese Werte werden bereits berechnet und sind im Indikatorarray enthalten. Es ist notwendig, den aktuellen Wert der Indikatorlinie nur bei jedem neuen Haken der Nullleiste zu berechnen. Für die Implementierung der beschriebenen Technologie gibt es eine sehr nützliche Standardfunktion in MQL4 - IndicatorCount (). Function IndicatorCounted () Diese Funktion gibt die Anzahl der Balken zurück, die sich seit dem letzten Indizierungsaufruf nicht geändert haben. Wenn der Indikator noch nie an einem Diagramm angehängt worden ist, ist bei der ersten Ausführung von start () der Wert von Countedbars gleich Null: Er bedeutet, dass das Indikatorarray kein Element mit einem früheren vordefinierten Wert enthält, daher das gesamte Indikatorarray Muss von Anfang bis Ende berechnet werden. Das Indikatorarray wird vom ältesten Balken bis zum Nullpunkt berechnet. Der Index des ältesten Stabes, ausgehend von dem die Berechnungen gestartet werden müssen, wird folgendermaßen berechnet: Angenommen, im Moment des Anbringens des Indikators befinden sich 300 Balken in einem Diagrammfenster. Dies ist der Wert der vordefinierten Variablen Bars. Wie oben definiert, ist Countedbars gleich 0. Somit ergibt sich als Ergebnis, dass der Index i des ersten unzählbaren Bar (der letzte, ausgehend von dem die Berechnungen durchgeführt werden sollen) gleich 299 ist. Alle Werte der Indikator-Array-Elemente sind Berechnet in der Schleife while (): Während i innerhalb des Bereichs von der ersten uncounted bar (299) bis zur aktuellen (0) ist, werden für beide Indikatorlinien Werte von Indikatorarrayelementen berechnet. Beachten Sie, dass fehlende Werte von Indikator-Array-Elementen während eines (ersten) Starts der Sonderfunktion start () berechnet werden. Während der Berechnungen erinnert sich das Client-Terminal an Elemente, für die Werte berechnet wurden. Die letzte Iteration in while () wird durchgeführt, wenn i gleich 0 ist, d. h. Werte von Indikatoranordnungen werden für die Null-Balken berechnet. Wenn die Schleife vorbei ist, beendet die spezielle Funktion start () ihre Ausführung und die Steuerung wird an das Client-Terminal übergeben. Das Client-Terminal wiederum zieht alle (in diesem Fall zwei) Anzeigezeilen entsprechend den berechneten Werten von Array-Elementen. Beim nächsten Tick wird start () vom Client-Terminal erneut gestartet. Weitere Aktionen werden von der Situation abhängen (wir werden das Beispiel für 300 Bar weiter analysieren). Variante 1. Ein neues Häkchen kommt bei der Bildung der aktuellen Nullstelle (die häufigste Situation). Feige. 117 zeigt zwei Zeilen, die vom Terminal in den Momenten der Zeit t 1 und t 2 empfangen werden. Die analysierte Situation ist für beide Ticks dieselbe. Damit wird die Ausführung von start () verfolgt, die zum Zeitpunkt t 2 gestartet wurde. Während der Ausführung der Funktion start () wird folgende Zeile ausgeführt: IndicatorCount () liefert den Wert 299, dh seit dem letzten Aufruf von start () 299 vorherige Takte wurden nicht geändert. Als Ergebnis wird i Indexwert gleich 0 (300-299-1): Es bedeutet, in der nächsten while () Schleife die Werte der Array-Elemente mit dem Null-Index berechnet werden. Mit anderen Worten wird die neue Position einer Indikatorlinie auf dem Nullbalken berechnet. Wenn der Zyklus beendet ist, stoppt start () die Ausführung und übergibt die Steuerung an das Client-Terminal. Variante 2. Ein neues Häkchen ist das erste Häkchen einer Nullleiste (passiert von Zeit zu Zeit). In diesem Fall ist die Tatsache des Erscheinens eines neuen Stabes wichtig. Bevor die Steuerung an die spezielle Funktion start () übergeben wird, zieht das Client-Terminal alle im Sicherheitsfenster vorhandenen Balken wieder zurück und re-indexiert alle deklarierten Indikatorfelder (die in Übereinstimmung mit Puffern gesetzt sind). Außerdem erinnert sich das Client-Terminal daran, dass es bereits 301 Balken, nicht 300 in einem Diagrammfenster gibt. Feige. 118 enthält die Situation, wenn beim letzten Tick des vorhergehenden Taktes (im Moment t 2) die Funktion start () erfolgreich gestartet und ausgeführt wurde. Thats warum, obwohl jetzt die erste Bar (mit Index 1) fertig zu dem Zeitpunkt t 2 von der Indikator berechnet wurde, wird Funktion IndicatorCounted () zurückgeben Wert, der auf dem vorherigen bar war. Dh 299: Im nächsten Zeilenindex i wird berechnet, in diesem Fall für das erste Häkchen eines neuen Balkens ist es gleich 1 (301-299-1): Es bedeutet die Berechnung von Indikatorarraywerten in while () - Schleife Beim Erscheinen einer neuen Leiste sowohl für die letzte Leiste als auch für die neue Nullleiste durchgeführt wird. Etwas früher während der Neuindizierung von Indikator-Arrays erhöhte das Client-Terminal die Größe dieser Arrays. Werte von Array-Elementen mit Null-Indizes wurden vor den Berechnungen in der Schleife nicht definiert. Während der Berechnungen in der Schleife erhalten diese Elemente einige Werte. Wenn die Berechnungen in start () vorbei sind, wird die Steuerung an das Client-Terminal zurückgegeben. Danach zeichnet das Client-Terminal Indikatorlinien auf dem Null-Balken basierend auf gerade berechneten Werten von Array-Elementen mit Null-Indizes. Variante 3. Ein neues Häkchen ist das erste Häkchen eines neuen Nullpunktes, aber das letzte Häkchen wird nicht bearbeitet (seltener Fall). Feige. 119 zeigt die Situation, als start () beim ersten Ticken einer neuen Leiste im Moment t 5 gestartet wurde. Vorheriges Mal wurde diese Funktion zum Zeitpunkt t 2 gestartet. Tick, der zum Zeitpunkt t 3 (roter Pfeil) zum Terminal kam ) Wurde nicht durch den Indikator verarbeitet. Dies geschah, weil die start () - Ausführungszeit t 2 - t 4 größer als das Intervall zwischen den Zecken t 2 - t 3 ist. Diese Tatsache wird vom Client-Terminal während der Ausführung von start (), die zum Zeitpunkt t 5 gestartet wird, erkannt Berechnungen in der Zeile: IndicatorCounted () gibt den Wert 299 () zurück. Dieser Wert ist wahr - ab dem Zeitpunkt des letzten Indikatoraufrufs wurden 299 Takte nach (jetzt schon) nicht geändert 301. Daher ist der berechnete Index der ersten (am weitesten links liegenden) Balken, aus dem die Berechnungen von Array-Elementwerten gestartet werden müssen, Wird gleich 1 (301-299-1): es bedeutet, während while () Ausführung zwei Iterationen durchgeführt werden. Während des ersten Werts werden die Werte der Array-Elemente mit dem Index i & sub1; berechnet, d. h. Buf01 und Buf11. Nicht, wenn die Berechnungen beginnen, werden Balken und Indikatorarrays bereits vom Client-Terminal neu indiziert (da ein neuer Balken zwischen den Starts der Sonderfunktion start () beginnt). Daher werden Berechnungen für Elemente von Arrays mit dem Index 1 auf der Basis von Array-Zeitreihen (maximale und minimale Werte eines Barpreises) auch mit dem Index 1 berechnet: Während der zweiten Iteration von while () - Werten für Elemente mit Null Indizes, dh für die Null-Balken, wird auf der Grundlage der letzten bekannten Werte von Arrays-Zeitreihen berechnet. Die Verwendung der beschriebenen Technologie für die Berechnung von kundenspezifischen Indikatoren ermöglicht es erstens, eine Berechnung der Werte aller Indikatorarrayelemente unabhängig von der spezifischen Natur des Tickverlaufs zu garantieren und zweitens Berechnungen nur für unzählige Balken durchzuführen, dh ökonomische Berechnungsressourcen zu verwenden . Nicht gilt ein Balken als unzählbar, wenn die Berechnung von Elementwerten eines Indikatorarrays zumindest für ein letztes Tick des Balken nicht durchgeführt wird. Beim Starten des benutzerdefinierten Indikators userindicator. mq4 in einem Diagrammfenster sehen Sie zwei Linien - eine dicke blaue Linie, die auf Balkenmaximalen aufgebaut ist, und eine gepunktete rote Linie, die auf deren Minimum aufgebaut ist (Abb. 120). Es sollte angemerkt werden, dass man einen benutzerdefinierten Indikator aufbauen kann, dessen Anzeigelinien mit den Zeilen eines analogen technischen Indikators übereinstimmen würden. Es kann leicht gemacht werden, wenn als Berechnungsformeln im benutzerdefinierten Indikator dieselben Formeln wie im technischen Indikator verwendet werden. Um dies zu verdeutlichen, können wir den im vorigen Beispiel analysierten Programmcode verbessern. Lassen Sie die Indikatorlinie Linien auf Durchschnittswerte von Maximums und Minimums von mehreren letzten Bars. Es ist einfach, notwendige Berechnungen durchzuführen: Wir müssen lediglich Mittelwerte von Arrays-Timeeries-Elementen finden. Beispielsweise wird der Wert eines Indikatorarrays mit dem Index 3 (dh der Indikatorzeilenkoordinate für den dritten Balken) auf der Grundlage der letzten fünf Maxima wie folgt berechnet: Buf03 (High3 High4 High5 High6 High7) / 5 Analoge Berechnungen können sein Durchgeführt für eine Indikatorlinien auf Minimums gebaut. Beispiel für einen einfachen benutzerdefinierten Indikator averagevalue. mq4. Indikatorlinien basieren auf durchschnittlichen minimalen und maximalen Werten von N bar. In diesem Beispiel gibt es eine externe Variable AverBars. Mit dieser Variablen kann ein Benutzer die Anzahl der Balken angeben, für die ein Mittelwert berechnet wird. In start () wird dieser Wert für die Berechnung eines Mittelwertes verwendet. In der Schleife wird die Summe der maximalen und minimalen Werte für die Anzahl der Balken berechnet, die dem Wert der Variablen AverBars entsprechen. In den nächsten beiden Programmzeilen werden für Indikatorzeilen, die Minimal - und Maximalwerten entsprechen, Werte von Indikatorarray-Elementen berechnet. Die hier verwendete Mittelungsmethode wird auch für Berechnungen im Technischen Indikator Moving Average angewendet. Wenn wir den analysierten Custom Indikator averagevalue. mq4 und den technischen Indikator Moving Average anhängen, sehen wir drei Indikatorlinien. Wenn für beide Indikatoren die gleiche Mittelungsperiode eingerichtet ist, fällt die Zeile Moving Average mit einer der benutzerdefinierten Indikatorlinien überein (dazu müssen in den technischen Indikatoreinstellungen die in Abb. 121 beschriebenen Parameter angegeben werden). Feige. 121. Übereinstimmende Linien einer technischen Anzeige und einer benutzerdefinierten Anzeige (rote Linie). Somit kann ein Benutzer mit Hilfe eines technischen Indikators die Reflexion der in der praktischen Arbeit notwendigen Regelmäßigkeiten konstruieren. Benutzerdefinierte Indikatoroptionen Zeichnen von Indikatorzeilen in separaten Windows MQL4 bietet einen großen Dienst für den Aufbau von benutzerdefinierten Indikatoren, die mit ihnen sehr bequem macht. Insbesondere können Indikatorlinien in einem separaten Fenster gezeichnet werden. Dies ist praktisch, wenn absolute Werte der Amplitude der Indikatorlinie wesentlich kleiner (oder größer) als die Sicherheitspreise sind. Wenn wir z. B. interessiert sind an der Differenz zwischen Mittelwerten von Balkenmaxima und Minima in einem bestimmten historischen Intervall, so ist dieser Wert je nach Zeitrahmen ungefähr gleich 0 bis 50 Punkte (z. B. für M15). Es ist nicht schwierig, eine Anzeigezeile aufzubauen, aber in einem Sicherheitsfenster wird diese Linie im Bereich von 0 bis 50 Punkten eines Sicherheitspreises gezogen, d. h. wesentlich niedriger als der auf dem Bildschirm reflektierte Kartenbereich. Es ist sehr unpraktisch. Um Indikatorzeilen in einem separaten Fenster (das sich im unteren Teil eines Sicherheitsfensters befindet) zu zeichnen, muss in der directive - Eigenschaft (am Programmanfang) die Parameterindikatorseparatewindow angegeben werden: In dem Augenblick, in dem ein solches Kennzeichen an ein Sicherheitsfenster angehängt wird Erzeugt das Client-Terminal ein separates Fenster unterhalb eines Diagramms, in dem Indikatorzeilen, die in dem Indikator berechnet werden, gezeichnet werden. Je nach Farbeinstellungen und Typen von Indikatorlinien werden sie in diesem oder jenem Stil gezeichnet. Begrenzung der Berechnungshistorie In den meisten Fällen enthalten Indikatorzeilen nur in der jüngsten Vergangenheit nützliche Informationen. Der Teil der Indikatorlinien, die auf alten Stäben aufgebaut sind (z. B. 1 Monat alter Minutenzeitrahmen), kann kaum als nützlich angesehen werden, um Handelsentscheidungen zu treffen. Außerdem, wenn es viele Balken in einem Diagrammfenster gibt, ist die Zeit, die in die Berechnung und das Zeichnen von Indikatorlinien investiert wird, unangemessen groß. Dies kann im Programm-Debugging kritisch sein, wenn ein Programm häufig kompiliert und dann gestartet wird. Deshalb ist es notwendig, Berechnungen nicht für die ganze Geschichte durchzuführen, sondern für den begrenzten Teil der jüngsten Geschichte der Bar. Dazu wird im folgenden Programm ein externer Variablenverlauf verwendet. Der Wert dieser Variablen wird bei der Berechnung des Index des ersten (linken) Balken berücksichtigt, ab dem die Elemente der Indikatorfelder berechnet werden müssen. Weitere Berechnungen in while () Schleife wird für die Anzahl der letzten History Bars nicht größer als History-Wert durchgeführt werden. Beachten Sie, dass das analysierte Verfahren zur Begrenzung eines Berechnungsverlaufs nur den Teil der Berechnungen betrifft, die im ersten Start der Sonderfunktion start () durchgeführt werden. Wenn neue Balken erscheinen, werden neue Teile der Indikatorlinien in dem rechten Teil hinzugefügt, während das Bild in dem linken Teil beibehalten wird. Somit wird die Länge der Anzeigelinie während der gesamten Anzeigebetriebszeit erhöht. Der Common-Wert des History-Parameters wird etwa 5000 bar betragen. Beispiel eines einfachen benutzerdefinierten Indikators separatewindow. mq4. Indikatorlinien werden in einem separaten Fenster gezeichnet. Eine ähnliche Berechnung einer Indikatorlinie wird im technischen Indikator AverageTrue Range durchgeführt. Feige. 122 zeigt eine Indikatorlinie, die durch das benutzerdefinierte Indikator separatewindow. mq4 in einem separaten Fenster aufgebaut ist, und eine Indikatorlinie, die durch ATR in einem anderen Fenster konstruiert ist. In diesem Fall sind Zeilen vollständig identisch, da der Mittelwert für beide Indikatoren gleich ist - 5. Wenn dieser Parameter in einem der Indikatoren geändert wird, ändert sich auch die entsprechende Zeile. Feige. 122. Zeichnen einer benutzerdefinierten Anzeigezeile in einem separaten Fenster. Identische Linien eines technischen Indikators (ATR) und eines benutzerdefinierten Indikators (separatewindow. mq4). Es ist auch offensichtlich, dass benutzerdefinierte Anzeigerzeile nicht für die gesamte Bildschirmbreite, sondern für 50 letzte Balken, wie in der externen Variablen Historie angegeben, erstellt wird. Wenn ein Trader ein größeres Historienintervall verwenden muss, kann der Wert der externen Variablen einfach über das Fenster für benutzerdefinierte Anzeigeeinstellungen geändert werden. Feige. 123 zeigt ein Sicherheitsfenster, in dem die Indikatorlinie in einem anderen Stil gezeichnet wird - als Histogramm. Für ein solches Ergebnis wurde eine Zeile im Programmcode separatewindow. mq4 geändert - andere Zeilenstile werden angezeigt: Alle anderen Codeteile sind unverändert. Feige. 123. Zeichnen einer benutzerdefinierten Anzeigezeile in einem separaten Fenster (Histogramm). Ähnlichkeit der Zeichnungen eines technischen Indikators (ATR) und eines benutzerdefinierten Indikators (separatewindow. mq4). Shifting Indicator Zeilen vertikal und horizontal In einigen Fällen ist es notwendig, eine Indikatorlinie zu verschieben. Es kann leicht durch MQL4 Mittel getan werden. Wir können ein Beispiel analysieren, in dem die Position der Indikatorzeilen in einem Sicherheitsfenster gemäß den Werten berechnet wird, die von einem Benutzer angegeben werden. Beispiel für eine benutzerdefinierte Anzeigeverschiebung. mq4. Shifting Indikatorlinien horizontal und vertikal. Für das Verschieben von Linien in einem Diagramm gibt es zwei externe Variablen - LeftRight für horizontale Verschiebung aller Linien und UpDown für das Verschieben von zwei gestrichelten Linien vertikal. Der Algorithmus, der für die Berechnung von Werten der entsprechenden Arrayelemente verwendet wird, basiert auf sehr einfachen Regeln: Für das horizontale Verschieben einer Zeile ordnen Sie den berechneten Wert einem Arrayelement zu, dessen Index durch LeftRight größer ist (zum Verschieben nach rechts und weniger zum Verschieben) nach rechts) als der Index von einer Bar, für die Berechnungen eine Linie senkrecht zur Verschiebung durchgeführt werden, UpDownPoint muss hinzugefügt werden (für oben oder schmälerte für die Verschiebung nach unten) zu jedem Wert eines Indikators Array charakterisierenden Ausgangslinienposition In dem untersuchten Verschiebung Beispielindizes werden in der Zeile berechnet: Hierbei ist i der Index eines Balkens, für den Berechnungen durchgeführt werden, k ist ein Index eines Indikatorarray-Elements. Die von dem Client-Terminal auf der Basis des Indikatorarrays Line0 angezeigte rote Anzeigezeile wird um 5 Balken (gemäß den benutzerdefinierten Einstellungen, siehe 124) von der Anfangslinie nach links verschoben. In diesem Fall ist die Anfangslinie ein Moving Average mit der Mittelungsperiode gleich 5 die Formel der MA-Berechnung ist (HighiLowi) / 2. In diesem Beispiel ist die Position der roten Linie die Grundlage für die Berechnung von Indikatorarraywerten für zwei weitere Zeilen, d. h. ihre Position auf dem Diagramm. Gepunktete Linien werden auf diese Weise berechnet: Die Verwendung von Index k für die Elemente aller Anzeige-Arrays ermöglicht auf dem gleichen bar für Elemente der Arrays Line1, Line2 Berechnungen durchzuführen, wie für die Berechnung der Werte der entsprechenden Basis Array LINE0 verwendet. Als Ergebnis werden die punktierten Linien relativ zu der roten Linie um den im Anzeigeeinstellungsfenster angegebenen Wert verschoben, in diesem Fall um 30 Punkte (Bild 124). Feige. 124. Die rote Anzeigelinie wird um 5 bar nach links verschoben. Die punktierten Indikatorlinien sind gegenüber der roten Linie um 30 Punkte verschoben. Einschränkungen von benutzerdefinierten Indikatoren Es gibt einige Einschränkungen in MQL4, die bei der Programmierung von benutzerdefinierten Indikatoren berücksichtigt werden sollten. Es gibt eine Gruppe von Funktionen, die nur in den kundenspezifischen Indikatoren verwendet werden können und nicht in Expert Advisors und Skripte verwendet werden können: IndicatorBuffers (), IndicatorCounted (), IndicatorDigits (), IndicatorShortName (), SetIndexArrow (), SetIndexBuffer (), SetIndexDrawBegin ( ), SetIndexEmptyValue (), SetIndexLabel (), SetIndexShift (), SetIndexStyle (), SetLevelStyle (), SetLevelValue (). Auf der anderen Seite können Handelsfunktionen nicht in Indikatoren verwendet werden: OrderSend (), OrderClose (), OrderCloseBy (), OrderDelete () und OrderModify (). Dies liegt daran, dass Indikatoren im Schnittstellenfluss arbeiten (im Unterschied zu Expertenberatern und Skripten, die in ihrem eigenen Fluss operieren). Aus diesem Grund können Algorithmen, die auf einer Schleife basieren, nicht in benutzerdefinierten Indikatoren verwendet werden. Der Beginn eines benutzerdefinierten Indikators, der eine Endlosschleife (in Bezug auf die tatsächliche Ausführungszeit) enthält, kann dazu führen, dass das Client-Endgerät mit weiterer Notwendigkeit aufgehängt wird, einen Computer neu zu starten. Die allgemeinen vergleichenden Eigenschaften von Expert Advisors, Skripte und Indikatoren sind in Tabelle 2.Moving Average Filter MQL4 für Anfänger Tutorial Teil 29 In diesem Tutorial enthalten wir den gleitenden Durchschnitt Indikator als zusätzliche Markteintrittsbedingung für unsere Handelsstrategie hinzuzufügen. Dazu verwenden wir die iMA () - Funktion, die in MQL4 eingebaut ist. Funktionen wie iMA, iMACD, iRSI und viele andere ermöglichen es Ihnen, schnell Zugriff auf die Moving Average, MACD, RSI und andere Indikatoren aus Ihrem Algorithmic Trading Systems. In diesem Anfängerkurs werden wir nur kurz auf den iMA () aufmerksam machen, aber das sollte für das sein, was wir in unserem Handelssystem brauchen. Code für 4-stellige Broker 2014-2016 ForexBoat. Alle Rechte vorbehalten Forexboat Pty Ltd (ABN: 29 609 855 414) ist ein Corporate Authorized Representative (AR Nr. 001238951) der HLK Group Pty Ltd (ACN: 161 284 500) mit einer australischen Finanzdienstlizenz (AFSL Nr. 435746). Alle Informationen oder Ratschläge, die auf dieser Website enthalten sind, sind allgemeiner Natur und stellen keine persönliche oder Anlageberatung dar. Wir haften nicht für Verluste oder Schäden, einschließlich, aber nicht beschränkt auf Verluste, die direkt oder indirekt aus der Nutzung oder dem Vertrauen auf diese Informationen entstehen können. Sie sollten eine unabhängige finanzielle Beratung vor dem Erwerb eines Finanzproduktes zu suchen. Alle Wertpapiere und Finanzprodukte oder Instrumentengeschäfte sind mit Risiken behaftet. Bitte denken Sie daran, dass die Ergebnisse der Vergangenheit nicht notwendigerweise auf zukünftige Ergebnisse hindeuten. Die Informationen auf dieser Website können weltweit abgerufen werden, es ist jedoch nicht an Einwohner in einem Land oder einer Gerichtsbarkeit gerichtet, wenn eine solche Verteilung oder Verwendung gegen lokales Recht oder Regulierung verstößt. Forexboat Pty Ltd ist nicht registriert bei einer US-Regulierungsbehörde einschließlich der National Futures Association (8220NFA8221) und Commodity Futures Trading Commission (8220CFTC8221) daher Produkte und Dienstleistungen auf dieser Website angeboten werden, ist nicht für die Bewohner der Vereinigten Staaten gedacht. Füllen Sie das Formular aus und klicken Sie auf die Schaltfläche unten Ihre kostenlose trainingUsage von technischen Indikatoren beginnen Nach Zugehörigkeit zu der Online-Handelssystem MetaTrader 4 gibt es zwei Arten von Indikatoren in MQL4 - technische und Sitte. Technische Indikator ist ein integraler Bestandteil des Online-Handelssystem MetaTrader, integrierte Funktion, die Zeichnung auf dem Bildschirm eine bestimmte Abhängigkeit ermöglicht. Eigenschaften der technischen Indikatoren Zeichnung im Sicherheitsfenster Jeder technische Indikator berechnet eine bestimmte vordefinierte Abhängigkeit. Um diese Abhängigkeit grafisch auf dem Bildschirm zu zeichnen, sollte ein technischer Indikator einem Diagramm zugeordnet werden. Dies kann über das Systemmenü Insert gtgt Indicators oder über das Navigatorfenster eines Client-Terminals erfolgen. Für das Anhängen eines technischen Indikators an ein Diagramm aus dem Navigator-Fenster wird eine sehr einfache Methode verwendet - drag-amp-drop des technischen Indikatornamens aus dem Navigator-Fenster in ein Diagrammfenster. Als Ergebnis werden eine oder mehrere Zeilen, die in diesem Indikator berechnet werden, im Diagrammfenster erscheinen. Indikatorlinien eines technischen Indikators können sowohl im Hauptdiagrammfenster als auch in einem separaten Fenster im unteren Teil eines Sicherheitsfensters gezeichnet werden. In Fig. 104 Technischer Indikator Alligator wird in einem Diagrammfenster gezeichnet. Code Unchangeability Alle technischen Indikatoren sind eingebaut, ihr Code ist nicht verfügbar für Änderungen. So ist ein Anwender vor einer fehlerhaften Änderung von integrierten technischen Indikatoren gesichert. Der Quellcode, auf dem ein technischer Indikator berechnet wird, steht auf der Softwareentwickler-Website (MetaQuotes Software Corp.) im Abschnitt Technische Indikatoren zur Verfügung. Bei Bedarf kann ein Programmierer den vollständigen Code oder einen Teil davon verwenden, um benutzerdefinierte Indikatoren zu erstellen (siehe Erstellen von benutzerdefinierten Indikatoren). Aufruf von Funktionen der technischen Indikatoren Die graphische Darstellung, die für einen Benutzer sichtbar ist, wird von einem Client-Terminal angezeigt. Aus Gründen der Bequemlichkeit werden wir solche Zeichnungsindikatorlinien aufrufen. Indikatorlinie ist eine grafische Darstellung einer bestimmten Abhängigkeit, die auf numerischen Werten basiert, die in einem Indikatorarray enthalten sind. Der Zeilentyp wird von einem Benutzer eingerichtet. Die Anzeigelinie kann in Form einer durchgezogenen oder gestrichelten Linie, einer bestimmten Farbe, sowie in Form einer Kette von bestimmten Zeichen (Punkte, Quadrate, Ringe usw.) dargestellt werden. Bei Indikatorberechnungen werden Sätze von numerischen Werten in diesen Indikatorlinien entsprechend diesen Berechnungen berechnet. Diese Wertsätze werden in Indikatorfeldern gespeichert. Indicator Array ist ein eindimensionales Array, das numerische Werte enthält, gemäß denen Indikatorlinien erstellt werden. Numerische Werte von Indikatorarrayelementen sind Punktkoordinaten, auf denen eine Indikatorlinie gezeichnet wird. Die Y-Koordinate jedes Punktes ist der Wert eines Indikator-Array-Elements, X-Koordinate ist der Indexwert des Indikator-Array-Elements. Die Datenspeicherungstechnik in Indikatorarrays ist die Basis für den Aufbau von technischen und individuellen Indikatoren. Die Werte der Indikatorarrayelemente der technischen Indikatoren sind von allen Anwendungsprogrammen, einschließlich Expertenberatern, Skripts und benutzerdefinierten Indikatoren, verfügbar. Um einen Wert eines Indikatorarray-Elements mit einem bestimmten Index in einem Anwendungsprogramm zu erhalten, muss eine integrierte Funktion aufgerufen werden, deren Name entsprechend einem technischen Indikatornamen gesetzt wird. Für die Ausführung einer technischen Indikatorfunktion sollte das entsprechende Kennzeichen nicht unbedingt an ein Sicherheitsfenster angehängt werden. Auch der technische Indikatorfunktionsaufruf aus einem Applikationsprogramm führt nicht zum Anhängen eines entsprechenden Indikators an ein Sicherheitsfenster. Das Anhängen eines technischen Indikators an ein Sicherheitsfenster führt auch nicht zu einem technischen Indikationsaufruf in einem Anwendungsprogramm. Eine Reihe von technischen Indikatoren ist in der Client-Terminal des Online-Handelssystem MetaTrader 4 enthalten. Wir können einige von ihnen zu analysieren. Gleitender Durchschnitt, MA Technischer Indikator Gleitender Durchschnitt, MA zeigt den Mittelwert des Instrumentenpreises für einen bestimmten Zeitraum an. Der Indikator spiegelt die allgemeine Marktentwicklung - kann einige Schwankungen in der Nähe von einigen Preis zu erhöhen, zu senken oder zeigen. Um Werte der MA-Indikatorzeile zu einem bestimmten Zeitpunkt zu erhalten, verwenden Sie die Standardfunktion: Symbol - Symbolname eines Wertpapiers, auf dessen Daten der Indikator berechnet wird. NULL bedeutet das aktuelle Symbol. Zeitrahmen. Kann eine von Diagrammperioden sein. 0 bedeutet die Periode des aktuellen Diagramms. Zeitraum - Zeitraum der Mittelung für MA Berechnungen. Mashift - Indikatorverschiebung relativ zu einem Kursdiagramm. Mamethod - Methode der Mittelung. Kann einer der MA Methodenwerte sein. Angewandter Preis - gebrauchter Preis. Kann jede der Preiskonstanten sein. Der von einem Indikatorarray (Umschalten relativ zu einem aktuellen Balken um eine angegebene Anzahl von Balken) erfaßt wird. Nachfolgend sehen Sie ein Beispiel für den Aufruf einer technischen Indikatorfunktion von Expert Advisor callindicator. mq4: In der EA callindicator. mq4 wird die Funktion iMA () verwendet (Funktion des technischen Indikators Moving Average). Dieser Programmteil kann im Detail analysiert werden: NULL bezeichnet die Berechnung eines gleitenden Durchschnitts für ein Sicherheitsfenster, an das das EA angehängt ist (in diesem Fall ist es EA, im allgemeinen kann es jedes Anwendungsprogramm sein) 0 - es ist Berechnet für den im Sicherheitsfenster eingestellten Zeitrahmen, an dem das EA angeschlossen ist PeriodMA - Mittelungsperiodenwert wird in einer externen Variablen gesetzt, wenn nach der EA-Zuordnung zu einem Sicherheitsfenster ein Benutzer diesen Wert nicht in den Einstellungen der externen EA-Variablen verändert , Ist der Wert gleich 5 0 - Indikatorarray ist nicht relativ zu einem Diagramm verschoben, dh Werte von Indikatorarrayelementen enthalten MA-Werte, die für Balken berechnet werden, auf denen die Indikatorzeile gezeichnet wird MODESMA - Methode eines einfachen gleitenden Mittelwertes Berechnungen PRICECLOSE - Barschlusspreis wird für Berechnungen verwendet 0 - Indikatorarray-Elementindex, für den der Wert erfasst wird - in diesem Fall ist er Null-Element. Unter Berücksichtigung, dass das Indikatorarray nicht relativ zum Diagramm verschoben ist, wird der MA-Wert für den Null-Balken erhalten. Die Funktion iMA () gibt einen Wert zurück, der der Variablen MA zugeordnet ist. In weiteren Programmlinien wird dieser Wert mit dem aktuellen Bid-Preis verglichen. Wenn der aktuelle Preis höher oder niedriger als der erhaltene MA-Wert ist, wird eine Warnung angezeigt. Die Verwendung der Variablen FactUp und FactDn ermöglicht es, die Warnung erst nach dem ersten Übergang der MA-Linie zu zeigen (Beachten Sie, dass die blaue Anzeigezeile in einem Sicherheitsfenster nicht gezeichnet wird, weil die technische Indikatorfunktion aus dem Programm aufgerufen wurde, sondern weil ein Benutzer angeschlossen ist Der Indikator für das Diagramm, Abb. 104). Hierbei ist anzumerken, dass beim Erscheinen der neuen Balken-Indizes der Historienbalken die Zunahme der aktuell gebildeten Balken immer den 0-Index aufweist. Im Expertenratgeber callindicator. mq4 gibt die technische Indikatorfunktion iMA () den für den Nullbalken berechneten Wert zurück. Obwohl der Indexwert während der EA-Ausführung nie geändert wird (d. h. Berechnungen werden immer für auf dem aktuellen Balken durchgeführt), entspricht der von iMA () zurückgegebene Wert immer dem zuletzt berechneten, d. H. Für den aktuellen Null-Balken berechneten Wert. Wenn bei einigen Berechnungen im Programm der Wert eines technischen Indikatorwerts nicht für den aktuellen Bar, bur für einen historischen Wert ermittelt werden soll, so sollte im Funktionsaufruf der notwendige Indikator-Array-Index angegeben werden. Hier sehen Sie ein Beispiel für EA historybars. mq4. In dem MA auf dem vierten Balken berechnet wird: In den EA-Historybars. mq4 werden MA-Werte für den aktuellen Balken (Index 0) und für den vierten Balken (Index 4) berechnet. Die angezeigten Indizes 0 und 4 ändern sich während dieses Programmiervorgangs nicht, und das Programm kann unendlich lang jedes Mal die MA-Werte für den Null - und den vierten Balken berechnen. Denken Sie daran, obwohl Berechnungen für MA auf Stäben mit denselben Indizes durchgeführt werden, wird MA geändert, d. H. Entspricht aktuellen MA-Werten auf dem aktuellen Null-Balken und dem aktuellen vierten Balken. In Fig. 106 ist es klar, dass, wenn die Preise auf den las Bars wachsen, geht MA auf. Die Differenz zwischen den MA-Werten auf der Null - und der vierten Spur wächst ebenfalls, was sich in den angezeigten Warnungen widerspiegelt. Technische Indikatoren können nicht nur eine, sondern auch zwei oder mehr Indikatorlinien widerspiegeln Technische Indikator Stochastischer Oszillator vergleicht den aktuellen Schlusskurs mit der Preisspanne für einen ausgewählten Zeitraum. Der Indikator wird in der Regel durch zwei Indikatorlinien dargestellt. Die Hauptlinie wird K genannt. Die zweite D-Signalleitung ist der gleitende Durchschnitt von K. Üblicherweise wird K als durchgezogene Linie gezeichnet, D-gestrichelt. Nach einer der Erläuterungsvarianten der Indikatoren sollten wir kaufen, falls K größer als D ist und verkauft, falls K niedriger als D ist. Der günstigste Zeitpunkt für die Ausführung einer Handelsoperation wird als der Zeitpunkt der Übereinstimmung der Linien angesehen. Symbolsymbolname eines Wertpapiers, auf dessen Daten der Indikator berechnet wird. NULL bedeutet das aktuelle Symbol. Zeitrahmen. Kann eine von Diagrammperioden sein. 0 bedeutet die Periode des aktuellen Diagramms. Kperiod - Periode (Anzahl der Balken) zur Berechnung von K. Dperiod - Periode der Mittelung von D. Verlangsamung - Wert der Verlangsamung. Methode - Mittelwertbildung. Kann einer der MA Methodenwerte sein. Pricefield - Parameter der Auswahl der Preise für Berechnungen. Kann einer der folgenden Werte sein: 0 - Low / High oder 1 - Close / Close. Modus - Index der Anzeigelinien. Einer der folgenden Werte kann sein: MODEMAIN oder MODESIGNAL. Verschiebungsindex des erhaltenen Wertes aus einem Indikatorpuffer (Umschalten relativ zu einem aktuellen Balken um eine vorgegebene Anzahl von Balken). Die Verwendung des stochastischen Oszillators bietet die Notwendigkeit, die relativen Linienpositionen zu analysieren. Für die Berechnung, welche Trade-Entscheidung durchgeführt werden soll, muss der Wert jeder Zeile des aktuellen und vorherigen Balken berücksichtigt werden (siehe Abb. 107). Wenn sich die Zeilen im Punkt A kreuzen (grüne Linie kreuzt die rote nach oben), sollte die Verkaufsreihenfolge geschlossen sein und die Bestellung bestellt werden. Während des Teils A - B (keine Linienkreuzung, grüne Linie ist höher als die rote Linie) Kaufauftrag sollte offen gehalten werden. In Punkt B (grüne Linie kreuzt die rote nach unten) Kauf sollte geschlossen werden und Verkauf sollte geöffnet werden. Dann sollte der Verkauf bis zur nächsten Kreuzung offen bleiben (keine Kreuzung, grüne Linie unter der roten Linie). Feige. 107. Übereinstimmung der Haupt - und der Signalleitungen des Stochastischen Oszillators. Das nächste Beispiel enthält die Implementierung eines einfachen Algorithmus, der veranschaulicht, wie notwendige Werte jeder Zeile erhalten werden können und Handelskriterien gebildet werden können. Dazu werden im EA callstohastic. mq4 Werte der technischen Indikatorfunktionen iStochastic () verwendet: Um einen K-Zeilenwert (solid green) auf der Nullleiste zu erhalten, wird folgende Rechenzeile verwendet: Hier zeigt der Parameter MODEMAIN die Zeile, den Wert an Von denen gefragt wird, ist der letzte Parameter 0 der Balkenindex, für den der Zeilenwert berechnet werden soll. In den drei folgenden Programmzeilen werden analog zu anderen Variablen - für D-Zeile (rote gestrichelte Linie, Parameter MODESIGNAL) für die Null - und die erste Leiste berechnet. Im nächsten Block wird die Korrelation der erhaltenen Werte analysiert und der EA berichtet über den aktuellen Zustand bei jedem Tick. Zum Beispiel in Linien: die Tatsache, dass eine rote Linie von der grünen nach oben gekreuzt wird, wird erkannt. Wenn auf der vorherigen Leiste die grüne Linie unter der roten (dh der Ausdruck M1 lt S1 ist wahr) und auf der aktuellen Leiste die grüne Linie über die rote steigt oder ihre Werte gleich sind (dh der Ausdruck M0 gt S0 ist True), bedeutet das, dass von der vorherigen Balkenbildung bis zum aktuellen Moment die grüne Lone die rote nach oben gekreuzt hat. Somit wird die Bedingung berechnet, wenn der Operator wahr ist, weshalb die Kontrolle an den Operator-Körper übergeben wird, wodurch Alert () ausgeführt wird, um die entsprechende Meldung anzuzeigen. In einem Expert Advisor, der für den Handel bestimmt ist, sollte eine Handelsfunktion zur Eröffnung eines Kaufauftrags angegeben werden. In diesem Fall führt die analysierte Variante der Zeilenkreuzung zur Bildung eines Handelsauftrags und schließlich zur Ausführung einer Handelsoperation. Für die Variante, wenn die grüne Linie kreuzt die rote nach unten, in wenn Körper eine Handelsfunktion zum Öffnen einer Verkauf Reihenfolge sollte angegeben werden. Feige. 108 zeigt das Ergebnis der callstohastic. mq4-Operation. Mit Funktionen der technischen Indikatoren zu schaffen, Handel Expert Advisors und Skripte ist sehr bequem. Die Anzahl der technischen Indikatorfunktionen eines Expertenberaters ist unbegrenzt. Ein Trading-Strategie-Entwickler kann entscheiden, verschiedene Trading-Kriterien auf der Kombination der technischen Indikatorwerte zu definieren. Beispiel für einen einfachen Trade Expert Advisor, dessen Tradingkriterien auf technischen Indikatoren basieren, wird im Abschnitt Simple Expert Advisor analysiert.
Comments
Post a Comment