Monday 23 October 2017

Bewegungsanzeiger Separates Fenster


Indikatoren für die technische Analyse Ein technischer Indikator ist eine mathematische Manipulation eines Sicherheitspreises und / oder Volumina zur Prognose zukünftiger Preisänderungen. Entscheidungen darüber, wie und wann zu öffnen oder zu schließen Positionen können auf der Grundlage von Signalen von technischen Indikatoren vorgenommen werden. Je nach Funktionseigenschaften lassen sich Indikatoren in zwei Gruppen unterteilen: Trendindikatoren und Oszillatoren. Trendindikatoren helfen, die Kursrichtung zu bestimmen und die Umdrehungsmomente synchron oder verzögert zu erkennen. Oszillatoren erlauben es, die Wendepunkte im Voraus oder synchron zu finden. Der MetaTrader 5 für iPhone / iPad bietet 30 Indikatoren. Sie sind in folgende Gruppen unterteilt: Ein technischer Indikator kann in einem separaten Indikatorfenster mit einer eigenen vertikalen Skala (z. B. MACD) gezeichnet oder direkt auf eine Preistabelle (wie Moving Average) angewendet werden. Jeder Indikator hat einen bestimmten Satz von Parametern. Verwalten von Indikatoren Um zur Verwaltungsseite zu gelangen, tippen Sie auf die Anzeige eines Diagramms oder verwenden Sie den BefehlIndicatorsquot des Kontextmenüs. Hinzufügen von Indikatoren Um einen Indikator hinzuzufügen, tippen Sie auf die Kopfzeile des Diagrammfensters, z. B. "Main chartquot". Wenn die Indikatoren nur auf dem Hauptdiagramm oder überhaupt nicht angewendet werden, bietet das Fenster Optionen für das Hinzufügen / Entfernen von Indikatoren nur für das Hauptdiagramm. Wenn ein Indikator in einem separaten Fenster (z. B. MACD) gezeichnet wird, wird das Fenster automatisch erstellt. Nachdem ein zusätzliches Fenster erstellt wurde, können Sie Indikatoren hinzufügen. Ein Tippen auf die Kopfzeile des Diagrammfensters öffnet ein Fenster, aus dem ein Indikator ausgewählt werden kann. Nach Auswahl eines Indikators öffnet sich sein Eigenschaftsfenster. Einstellungen der Anzeigen Jede Anzeige hat einen bestimmten Satz von Parametern. Einer der gemeinsamen Parameter ist "Apply toquot". Indikatoren können anhand von Preisdaten und deren Derivaten (Median Price, Typical Price, Weighted Close) sowie auf Basis anderer Indikatoren aufgetragen werden. Beispielsweise kann ein Moving Average basierend auf MACD-Werten aufgebaut werden. Um dies zu tun, zuerst die MACD-Indikator, und dann in seinem Fenster MA hinzufügen, wählt im quotApply-toquot-Feld seiner Einstellungen die quotVorherige indicator39s dataquot Option. Wenn Sie das Attribut "First indicator39s" auswählen, wird MA auf der Basis des ersten Indikators erstellt, der nicht unbedingt der MACD ist. Es gibt neun Varianten der Indikator-Zeichnung: Schließen 150 auf der Grundlage der engen Preise. Open 150 basierend auf offenen Preisen. Hohe 150 basierend auf hohen Preisen. Niedrig 150 basierend auf niedrigen Preisen. Median Preis (HL / 2) 150 basiert auf dem Median Preis: (Hoch Niedrig) / 2. Typischer Preis (HLC / 3) 150 basierend auf dem typischen Preis: (High Low Close) / 3. Weighted Close (HLCC / 4) 150 basierend auf dem durchschnittlich gewichteten Schlusskurs: (High Low 2Close) / 4. Die ersten Indikatoren39sdaten 150 basierend auf den Werten des ersten angewandten Indikators. Die Option, die Daten des ersten Indikators zu verwenden, ist nur für Indikatoren in einem separaten Fenster verfügbar, da im Hauptdiagrammfenster der erste Indikator der Preis ist. Die vorherigen Indikatorindizes 150, basierend auf den Werten des vorhergehenden Indikators. Zusätzlich zu diesem Parameter können Sie Period, Method, Shift und viele andere Parameter von Indikatoren einstellen. Entfernen von Indikatoren Sie können Indikatoren wie folgt löschen: Tippen Sie oben rechts auf die Schaltfläche Ändern. Um einen Indikator oder ein zusätzliches Fenster zu entfernen, tippen Sie auf. Wischen Sie Ihren Finger von links nach rechts auf der Anzeigelinie. Um einen Indikator zu entfernen, verwenden Sie die Schaltfläche "Deletequot". Ändern von Indikatoren Um die Parameter eines Indikators zu ändern, tippen Sie darauf im Fenster "Indicatorsquot ".MetaTrader 4 - Indikatoren Multi Moving Average - Indikator für MetaTrader 4 Beschreibung: Multi Moving Average - ist ein Indikator, der die Informationen zu 4 Moving Averages in einer separaten Anzeige anzeigt Fenster. Sie können die Eingabeparameter im Fenster Indikatoreigenschaften für alle gleitenden Durchschnitte ändern: Mittelungsperiode (Periode). Mittelungsmethode (mamethod). Die für die Berechnung verwendete Preisart (angewandter Preis). Und viele Optionen für Text-Labels: Es wurde erstellt, um das Preis-Chart (insbesondere der Moving Averages) zu quotieren, aber die nützlichen Informationen zu speichern. 1. Er zeigt den aktuellen Zustand der gleitenden Mittelwerte an - steigen oder fallen (unter Verwendung der verschiedenen Farben für Kästen / Pfeil). 2. Er zeigt den aktuellen Zustand der gleitenden Mittelwerte relativ zum Preis an (oder gleitender Durchschnitt mit Punkt 1) (Unter Verwendung der verschiedenen Farben für Textetiketten) So, so dass die Moving-Averages-Perioden konfiguriert werden, ist es möglich, den Markttrend zu verstehen, ohne die gleitenden Mittelwerte auf dem Preisdiagramm zu verwenden Schick mir die private nachricht. Herausgeber Anmerkung: Wenn Sie irgendwelche Fragen an den Autor, Anregungen oder Kommentare haben, ist es besser, sie dort zu posten. Wenn Sie diesen Code nützlich für den Handel oder pädagogische Zwecke gefunden haben, vergessen Sie nicht, author. MetaTrader 4 zu danken - Beispiele Secrets des MetaTrader 4 Client-Terminal: Indikatoren Man kann sich nicht vorstellen, die Analyse der Finanzmärkte ohne technische Indikatoren zur Zeit. Sie können eigene Indikatoren erstellen oder die eingebetteten verwenden. Die eingebetteten Indikatoren arbeiten schneller als die benutzerdefinierten und verfügen über eine Reihe von Funktionen, die nicht in benutzerdefinierten Indikatoren implementiert werden können. Zum Beispiel gibt es Indikatoren, die sowohl im Hauptfenster als auch in einem Unterfenster an ein Diagramm angehängt werden können. Außerdem kann der Indikator nicht auf den Preis - und / oder Volumenwerten berechnet werden, sondern auf den Werten eines anderen Indikators. Clever Einsatz der eingebetteten Indikatoren wird dazu beitragen, weit zu gehen, ohne Tauchen in die Programmierung der eigenen. Es gibt dreißig eingebettete Indikatoren im MetaTrader 4 Client Terminal. Bedingt können alle Indikatoren in vier Gruppen aufgeteilt werden: Oszillatoren Trendindikatoren Bill Williams Indikatoren Volumen. Trendindikatoren helfen, Preisbewegungen in einer Richtung zuzuordnen und erkennen, synchron oder verzögert, die Momente, wenn Trends drehen. Oszillatoren können solche Windungen synchron oder im voraus erkennen. Bill Williams Indikatoren haben Eigenschaften von Oszillatoren und Trendindikatoren. Volumes analysieren nicht die Preisbewegungen, wie sie sind, aber die Menge der Zecken, die Einkommen während der Bar haben. Übersichtstabelle für eingebettete Indikatoren Merkmale Über die Verknüpfungen in der Tabelle können Sie die Codequelle eines benutzerdefinierten Indikators anzeigen, der mit dem eingebetteten übereinstimmt. Tabellenfeldbeschreibungen o Oszillator t Trendanzeiger b Bill Williams-Anzeige v Lautstärke. S-Indikator in einem Unterfenster angefügt ist, wird standardmäßig der m-Indikator im Hauptfenster standardmäßig angehängt. Vereinigung mit s / m. Unabhängig davon, ob die Anzeige mit dem in einem Unterfenster oder in dem Hauptfenster (m) bereits vorhandenen Indikator assoziiert ist oder nicht. Zusätzliche Zeilen. Zusätzliche Zeilen, vorherige Indikatoren Daten und erste Indikatoren Daten erscheinen im Feld Übernehmen auf im Fenster Eigenschaften der Indikatoren, wenn der Indikator gezogen wird. Bisherige Indikatoren Daten - Daten der letzten Anzeige am Hauptfenster oder an einem Unterfenster. Wenn keine angeschlossenen Indikatoren vorhanden sind, sind die vorherigen Indikatoren Daten die Diagrammdaten. Und der anzuzeigende Indikator basiert auf dem Schliessen-Preis des Diagramms. Erste Indikatoren Daten - Daten des Indikators, der als erster an das Hauptfenster oder an ein Unterfenster angehängt wurde. Wenn es keine angehängten Indikatoren gibt, sind die ersten Indikatoren Daten die Diagrammdaten. Und der anzuzeigende Indikator basiert auf dem Schliessen-Preis des Diagramms. Zeitraum / Schicht. Verfügbarkeit von Feldern mit entsprechenden Namen auf der Registerkarte Parameter des Eigenschaftenfensters der Indikatoren. Bewerben. Verfügbarkeit des Felds "Übernehmen" auf der Registerkarte "Parameter" des Eigenschaftenfensters "Indikatoren". Methode . Verfügbarkeit des gleichnamigen Feldes auf der Registerkarte Parameter (Auswahl der gleitenden durchschnittlichen Baumethode). Ebenen. Verfügbarkeit der Registerkarte "Ebenen". So fügen Sie Indikatoren zu einem Diagramm hinzu Anhand eines Hauptmenübefehls kann ein Indikator auf ein Diagramm angehängt werden: Doppelklicken Sie auf den Indikatornamen im Navigatorfenster und wählen Sie den Kontextmenübefehl des Navigatorfensters: Verwenden Sie die Preset-Hotkeys Die Anzeige mit der Maus in das Hauptfenster oder in die anderen Indikatoren Unterfenster (Drag & Drop). Die ersten fünf Möglichkeiten unterscheiden sich nicht grundlegend von einander. Lassen Sie uns nennen sie Standard-Modi der Indikatorbefestigung. Daraufhin wird der Indikator entweder in der Tabelle oder in einem separaten Unterfenster, wie standardmäßig gezogen werden. Die fünfte Methode, das Ziehen, ist interessanter. Einige Indikatoren können, wenn sie in das Diagramm gezogen werden, aus Werten eines anderen Indikators berechnet werden, die bereits im Diagramm enthalten sind. Es gibt sieben spezielle Indikatoren: Bollinger Bands Commodity Channel Index Umschläge Momentum Moving Average Relative Strength Index Standardabweichung. Eingebettete Indikatoren können mit anderen Indikatoren kombiniert oder auf Werten anderer Indikatoren berechnet werden. Beim Kombinieren wird die anzuzeigende Anzeige nur über den bereits angehängten Indikator angezeigt, hat aber eine eigene Skala und Rahmen. In diesem Fall werden die Werte des anzuhängenden Indikators aus den Diagrammpreiswerten berechnet. Ein eingebettetes Indikator, das standardmäßig in einem Unterfenster angezeigt wird, kann mit dem bereits im Unterfenster angezeigten Indikator kombiniert werden. Ein eingebettetes Indikator, das standardmäßig im Hauptfenster angezeigt wird, kann mit dem bereits im Hauptfenster angezeigten Indikator kombiniert werden. Die meisten eingebetteten Indikatoren können nur wie im Standardmodus angeschlossen werden. Diese sieben Sonderanzeigen können sowohl am Hauptfenster als auch an einem Unterfenster angebracht werden. Anschließen an das Hauptfenster Indikatoren, die in einem Unterfenster mit Standardwerten geöffnet werden, werden standardmäßig in einem Unterfenster geöffnet: Commodity Channel Index Momentum Relative Strength Index Standardabweichung Lassen Sie uns die Eigenschaften dieser Indikatoren am Beispiel des Commodity Channel Index untersuchen. Wie bereits oben erwähnt, wird dieses Kennzeichen standardmäßig in einem eigenen Fenster geöffnet: Um CCI dem Hauptfenster zuzuordnen, muss es in das Diagramm gezogen werden. Die Indikatoren Eigenschaften werden wie folgt aussehen: Tatsächlich ist das Diagramm gleichzeitig die Anzeige. Wenn also keine anderen Indikatoren verfügbar sind, sind erste Indikatoren und vorherige Indikatoren Daten Daten des Diagramms selbst, und die Zeichenmethode für die vorherigen Indikatorwerte unterscheidet sich nicht von den Werten der ersten Indikatoren in irgendeiner Weise. Um den Indikator im Chartfenster anzuhängen, muss man ihn per Drag-and-Drop in das Diagramm legen und erste Indikatoren Daten oder vorherige Indikatoren auswählen. Das erhaltene Ergebnis: Indikatoren Momentum, Relative Strength Index und Standardabweichung werden dem Diagrammfenster auf die gleiche Weise zugeordnet. So fügen Sie ein Unterfenster hinzu Indikatoren, die im Hauptfenster nach Standardwerten geöffnet werden Die Indikatoren dieser Gruppe sind im Folgenden aufgelistet: Nehmen wir als Beispiel den Moving Average in Betracht. Standardmäßig sieht dieser Indikator wie folgt aus: Anhängen der MA an einem separaten Unterfenster, ist es notwendig, einige weitere Aktionen als für das vorhergehende Beispiel vorzunehmen. Zuerst muss ein eigenes Fenster erstellt werden. Hierzu legen wir dem Indikator an, der in einem Unterfenster geöffnet werden kann. Zum Beispiel MACD. Nun können wir den Moving Average in das MACD-Fenster ziehen und die vorherigen Indicators Data oder First Indicators Data im Eigenschaftenfenster auswählen (da es im Unterfenster nur einen Indikator gibt, wird der MACD sowohl der erste als auch der letzte Indikator sein) . Wenn eine Anzahl von Indikatoren an einem Unterfenster befestigt ist, ist es immer möglich, zu erkennen, welche davon auf dem Unterfenster aufgebaut ist. Auswahl der vorhergehenden Indikatoren Die Daten werden als - gt angezeigt, die der ersten Indikatoren Daten - als gt. Wir haben MACD mit Moving Average überlagert. Wir können an diesem stoppen, aber wir können auch tun, damit nur beweglicher Durchschnitt im Fenster bleiben. Dazu muss MACD entfernt werden. Aber, wenn wir nur entfernen, wird der Moving Average, als Indikator auf die MACD-Werte gebaut, auch entfernt werden. Also, lassen Sie uns ziehen Moving Average von MACD zuerst. Berechnen wir z. B. Werte schliessen. Nun kann der MACD entfernt werden, der Moving Average bleibt im separaten Fenster. So kombiniert die Eigenschaften der verschiedenen Indikatoren, kann man ein ziemlich kompliziertes System zu bauen. Einige gemeinsame Eigenschaften von Indikatoren Anfügen Wenn das anzuzeigende Kennzeichen auf Werten des Indikators berechnet wird, die mehrere Zeilen (mehr als eins) aufweisen, wird er auf Werten der Nulllinie oder der Hauptlinie berechnet. Im Code wird diese Zeile mit Werten des ersten Parameters der Funktion SetIndexStyle erkannt. Wenn zum Beispiel der anzuzeigende Anzeiger auf dem MACD berechnet wird, werden die Histogrammwerte als Berechnungswerte verwendet, da er im MACD-Code bestimmt wird: SetIndexStyle (0, DRAWHISTOGRAM). Viele Indikatoren haben standardmäßig feste Höchst - und Mindestwerte, wie zB RSI. In diesem Fall können ihre Grenzen, nachdem sie an einen anderen Indikator, z. B. MACD, angehängt wurden, fehlausgerichtet sein, d. h. RSI stimmt einfach nicht mit dem MACD-Fenster überein. Um dies zu korrigieren, ist es notwendig, die Felder von Maximum und Minimum zu deaktivieren, und die Skalen der Indikatoren sind unabhängig voneinander. Wenn eine Anzahl von Indikatoren an einem Unterfenster befestigt ist, ist es immer möglich, zu erkennen, welche davon auf dem Unterfenster aufgebaut ist. Auswahl der vorherigen Indikatoren Die Daten werden als - gt, die der ersten Indikatoren Daten - wie gt angezeigt. Im obigen Beispiel werden die Indikatoren wie folgt aufgebaut: angehängte MACD berechnete MA auf den ersten Indikatoren Daten, dh auf Werte des MACD Berechnete RSI auf den ersten Indikatoren Daten, also wieder auf Werte der MACD kombiniert CCI mit MACD berechnet Momentum auf den vorherigen Indikatoren Daten, dh auf Werte des CCI. Eingebettete Indikatoren können nicht nur auf andere eingebettete Indikatoren, sondern auch auf individuelle Indikatoren überlagert werden. Die Befestigungsprinzipien sind die gleichen. Zum Beispiel: Wie man Levels baut Einige Indikatoren erlauben den Aufbau von Levels. Für MA, kann man einen Kanal mit Ebenen zu bauen. Dazu müssen Sie auf die Registerkarte "Ebenen" wechseln und mit der Schaltfläche Hinzufügen einige Werte festlegen. Nun, wenn wir die MA Linie gefärbt die gleiche wie der Hintergrund, erhalten wir Kanal auf dem gleitenden Durchschnitt gebaut. Registerkarte "Visualisierung" Im Endeffekt betrachten wir eine weitere Eigenschaft von Indikatoren im MetaTrader 4 Client Terminal. Alle Indikatoren, sowohl eingebettet als auch benutzerdefinierte, haben diese Eigenschaft. Darüber hinaus kann sie auch auf Objekte angewendet werden, d. h. auf graphische und technische Analysewerkzeuge. Es gibt kein Geheimnis, dass Daten, die auf verschiedene Zeitrahmen desselben Symbols analysiert werden, sich unterscheiden können. Verschiedene technische Werkzeuge können verwendet werden, einschließlich verschiedener Indikatoren mit unterschiedlichen Einstellungen. Folgende Schritte können durchgeführt werden, um Indikatoren bei der Umschaltung zwischen den Zeitfenstern nicht immer wieder neu anzupassen: Legen Sie im Fenster der Anzeigeeigenschaften den Zeitrahmen fest, an dem das ausgewählte Kennzeichen verankert werden soll. Und so weiter für alle Indikatoren und auf allen Zeitrahmen. In Zukunft können wir, wenn wir zwischen ihnen wechseln, verschiedene Indikatoren zu verschiedenen Zeitrahmen sehen. Es bleibt nur, um die Vorlage zu speichern, die in Zukunft für andere Symbole verwendet werden soll. Beispiel. Auf Zeitrahmen von H1 und M15 sind die gleichen Indikatoren, MACD und MA, angeschlossen, jedoch mit unterschiedlichen Perioden. Auf H1: MACD mit Werten von 12, 26, 9 MA mit der Periode von 7 wird auf der MACD MA berechnet, wobei die Periode 5 auf dem MA (7) berechnet wird. Auf M15: MACD mit Werten von 24, 52, 18 MA mit der Periode von 28 wird auf der MACD MA berechnet mit der Periode von 20 wird auf der MA berechnet (28). Erstellen von Custom Indicators Bei der Erstellung einer Trading-Strategie ein Entwickler oft Die Notwendigkeit, in einem Sicherheitsfenster grafisch 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 die folgenden 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 Geschichtsbalken 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 um 1 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 geöffnet ist, erhält automatisch den Index 1. Um die Indikatorlinie korrekt auf diesem Balken zu zeichnen, ä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 Strichs (der letzte, ausgehend von dem die Berechnungen durchgeführt werden sollen) gleich 299 ist. Alle Werte der Indikatorarrayelemente 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. Feige. Feige. Feige. Feige. Feige. Feige. Grinsen.

No comments:

Post a Comment