EasyLanguage amp PowerLanguage Tutorial 8211 Lektion 02: Codierung ein gleitender Durchschnitt Erstellen der ersten realen Indikator und Ausweiten der Grundlagen Nachdem Sie sich mit dem PowerLanguage Editor im vorherigen PowerLanguage Tutorial 8211 Lektion 01 vertraut gemacht haben, werden wir nun auf dieser Grundlage aufbauen. Wenn Sie haven8217t lesen Sie die letzte Lektion, würde ich vorschlagen, dass erste, wie es Ihnen beim Verständnis dieser Lektion helfen kann, zu. Let8217s beginnen mit today8217s Lektion jetzt. Öffnen Sie den PowerLanguage Editor und erstellen Sie eine neue Indikatorstudie. Ich benutze meine ABCPowerLanguage Lektion 02 8211 Moving Average, so kann ich es leicht finden, in meinem Editor später. Der Name ist völlig bis zu Ihnen selbstverständlich und Sie konnten ihn sogar später ändern. Wie der letzte Teil des Indikatornamens vermuten lässt, werden wir heute einen gleitenden Durchschnitt kreieren und gliedern. Sie haben wahrscheinlich einen gleitenden Durchschnitt auf einem Diagramm gesehen, bevor oder erinnern Sie den Begriff Durchschnitt aus Mathe. Die Hauptnutzung für Mittelwerte ist als Filter, um die eingegebenen Daten zu glätten. Das Bild zeigt eine 200 Periode einfachen gleitenden Durchschnitt, der ein sehr glattes Ergebnis ergibt. Der Nachteil dieser Glätte ist, dass Sie mehr Lag bringen. Das bedeutet, dass der Durchschnitt weniger auf Preisänderungen reagiert. Wenn Sie einen Blick auf das nächste Bild sehen Sie, wie unterschiedlich das Verhalten eines 200-Periode einfachen gleitenden Durchschnitt ist, wenn Sie es mit dem grünen 10 Periodendurchschnitt vergleichen. Letzteres ist viel schneller in Reaktion auf Preisänderungen, aber im Gegenzug gibt es viel mehr 8220noise8221 im Durchschnitt. Es gibt viele verschiedene Arten von Mittelwerten, die hauptsächlich in der Auswirkung jedes Datenpunktes auf das Ergebnis des Durchschnitts variieren. Ein einfacher gleitender Durchschnitt von 200 Perioden berechnet einfach eine Summation der letzten 200 Datenpunkte und dividiert sie durch 200. Das Ergebnis ist ein Durchschnitt, der jedem Datenpunkt denselben Einfluß (denselben Wert) auf das Ergebnis gibt. Der erste Balken und der letzte Balken, die Teil des Durchschnitts sind, werden beide gleich gewichtet für das Ergebnis. Zwei weitere prominente und häufig verwendete Mittelwerte sind der Exponential Moving Average und der Weighted Moving Average. Beide haben höhere Gewichtungsfaktoren für die neueren Datenpunkte. In einem gewichteten gleitenden Durchschnitt wird die Gewichtung in der arithmetischen Progression abnehmen. Für den exponentiellen Mittelwert nimmt er exponentiell ab, daher der Name. Das wird so theoretisch sein wie heute. Wenn Sie mehr Details über Mittelwerte lesen möchten, können Sie mit diesem Wikipedia-Artikel beginnen. Für weiteres Verständnis dieser Lektion brauchen Sie diese zusätzliche Information allerdings. Let8217s beginnen mit Codierung unserer Durchschnitt. Unser Indikator sollte nicht nur einen Durchschnitt berechnen, sondern es sollte das Ergebnis auf ein Diagramm ausgeben. EasyLanguage hat das 8220Plot8221 reservierte Wort für das und wir werden es verwenden, um das zu tun. Bevor Sie mit der Programmierung etwas beginnen, ist es immer eine gute Idee, einen Schritt zurückzugehen und darüber nachzudenken, was Sie zu erreichen versuchen und wie Sie es tun werden. Da diese Studie nicht sehr komplex ist, gibt es nur ein paar Dinge zu denken. Wenn Studien komplexer werden, können Sie viel Zeit mit guter Planung im Voraus sparen. Das Ziel ist eine Studie, die berechnet und zeigt einen einfachen gleitenden Durchschnitt. Wir wollen in der Lage sein, die Länge für den Durchschnitt mit einem Eingang zu ändern so it8217s einfach, besonders anzufertigen. Für den Durchschnitt müssen wir die Menge der Werte zusammenfassen, die mit der Längeneingabe korrelieren. Wir wollen für jede mögliche Längeneingabe für die Summe Code schreiben. Der Code muss also alle möglichen Längeneingaben selbst berechnen können. Haben Sie bereits eine Idee, wie wir dies erreichen könnte? Die Antwort ist, dass wir eine Iteration-Anweisung, die wiederholt ausgeführt werden kann jeder Balken für eine bestimmte Anzahl von Malen (unsere Längeneingabe). Ich weiß, das klingt kompliziert, aber es wird ganz einfach. Wir verwenden die 8220for loop8221 für diese Aufgabe. Diese Schleife wiederholt eine oder mehrere Anweisungen für eine benutzerdefinierte, spezifische Anzahl von Iterationen. Der EasyLanguage-Code wird von oben nach unten und normalerweise von links nach rechts ausgeführt. Sobald eine Codezeile ausgeführt wird, wird die nächste Zeile ausgeführt und so weiter. Wenn die Codezeile der Anfang einer Schleife ist, werden die Codezeilen innerhalb der Schleife für den angegebenen Betrag ausgeführt. Erst wenn die Schleife beendet ist, wird die nächste Codezeile nach der Schleife ausgeführt. A für Schleife sieht und arbeitet folgendermaßen: Eine numerische Variable wird mit jedem Zyklus durch die Schleife von ihrem Startwert zu ihrem Endwert inkrementiert (oder dekrementiert). Dieses Bild zeigt eine Grundschleife mit einer numerischen Zählervariable (ii in diesem Fall) und dem Anfangswert von 0 an. Die Iterationen werden zehnmal durchgeführt, bis der Zähler den Wert von 9 erreicht hat. Dann wird der Schleifenblock als letzter ausgeführt Zeit und beendet. Sie müssen den Zählerwert selbst inkrementieren, der Loop-Code kümmert sich darum. Der aktuelle Zählerwert wird in der Zählervariable gespeichert. So können Sie es für jeden Schleifenzyklus zugreifen und es für Ihre Berechnungen verwenden. Dies wird praktisch für die Berechnung unserer durchschnittlichen kommen. Die for-Schleife kann den Zähler auch mit jeder Iteration dekrementieren. Der Anfangswert in diesem Beispiel ist 9, aber die Schleife wird zehnmal ausgeführt, bis sie ebenfalls verlassen wird. Der Zähler verringert sich einfach mit jeder Iteration um eins, bis er 0 erreicht. In Easylanguage können Sie auf datenbezogene reservierte Wörter, Variablen und Funktionen aus einer vorherigen Leiste ganz einfach Bezug nehmen. Wenn Sie eine Zahl in eckigen Klammern nach dem reservierten Wort verwenden, gibt die Berechnung oder Variable den Wert für diesen speziellen Balken zurück. Die Zahl wächst von der aktuellen Leiste (die Sie mit 0 bezeichnen) in Schritten von eins. Wenn Sie den Wert des vorherigen bar8217s innerhalb einer Variablen mit dem Namen PrevCloseValue schließen möchten, können Sie dies wie folgt ausführen: Wir wollen unseren Durchschnitt mit dem Schließen für die letzten X-Balken erstellen. Wo X eine Eingabe ist, um mehr Flexibilität zu ermöglichen. Sie wissen bereits, dass wir eine Schleife für das verwenden möchten, und wir haben gerade herausgefunden, wie wir Referenzwerte für die letzten Balken referenzieren können. Dies sollte ausreichen, um den Code für den Hauptteil unseres Indikators zu schreiben. Let8217s weiterhin durch die Erstellung der Eingabe-und variablen Abschnitten. Sie könnten daran erinnern, aus der letzten Lektion, dass die Verwendung von aussagekräftigen Variablennamen ist eine gute Kodierung Praxis und sparen Sie eine Menge Schwierigkeiten später. Wir müssen einen Eingang deklarieren, damit wir die Länge für unseren Durchschnitt auf dem Chart ändern können. Abgesehen davon, dass wir eine Variable, die die Summation, eine hält den Zählerwert und eine letzte, die den Mittelwert zu speichern hält. Für die Ausgabe des Wertes im Diagramm verwenden wir das reservierte Wort Plot. Es folgt eine Zahl, so dass Sie zwischen verschiedenen Diagrammen unterscheiden können. Welche benötigt wird, wie Sie bis zu 999 Plots in Multicharts verwenden können. Das Plot reservierte Wort kann mehrere Parameter wie Farbe, Plot Größe und einige mehr haben. Wir halten es einfach hier und verwenden Plot1 mit nur zwei Parametern 8211 die erste für den numerischen Ausdruck geplottet und ein zweiter für den Namen, den wir dem Diagramm zuweisen möchten. Der endgültige Code sieht so aus: Nach dem Kompilieren dieses Codes sind wir fast bereit, unseren Indikator auf ein Diagramm in Multicharts zu laden. Let8217s nur einen Blick auf die Eigenschaften der Anzeige zuerst. Sie finden diese unter - gt Datei - gt Eigenschaften oder durch Klicken auf das Eigenschaften-Symbol im Menü (es sollte das übrige zum Kompilieren sein). Unter der Registerkarte Stil können Sie die Farbe, den Linienstil und die Dicke für die von Ihnen erstellte Zeichnung ändern. Wenn Sie auf die Registerkarte Eigenschaften zu gelangen, gibt es mehrere Optionen zu setzen oder zu überprüfen, aber jetzt möchten Sie vielleicht nur sicherzustellen, dass die Option 8220Same As Symbol8221 aktiviert ist. Dadurch wird sichergestellt, dass der Indikator direkt auf dem Diagramm und nicht auf dem Subchart angewendet wird. Jetzt können Sie die Anzeige auf ein Diagramm Ihrer Wahl anwenden. Wenn Sie ein Diagramm im Multicharts-Hauptfenster geöffnet haben, können Sie einfach die Anzeige in dieses Diagramm einfügen. Wenn das Kennzeichen angewendet wird, sollte das Ergebnis ähnlich dem obigen Screenshot sein. Jedoch scheint dieses doesn8217t recht, da dieses doesn8217t wie ein gleitender Durchschnitt überhaupt aussieht. Die Preis-Serie ist fast eine flache Linie und das Grundstück von unserem Indikator kommt nur steigt. Mit dem E-Mini SampP 500 im Bereich von 18217800 ein 10 bar gleitender Durchschnittswert für diesen Markt von 182179528217647 ist offensichtlich nicht korrekt. Dies deutet auf ein Problem in unseren Berechnungen hin. Haben Sie eine Idee, was der Code fehlt Es ist eigentlich nur ein wenig, aber sehr wichtige Details, die wir vergessen haben, hinzuzufügen. Wir müssen etwas vor der for-Schleife hinzufügen. Die Schleife hält einfach die Werte für die vorherigen zehn Takte mit jedem neuen Balken an. Das ist gut und wir wollen es genau dies tun, aber wir don8217t wollen, dass es die neuen Werte auf die alten Werte hinzufügen. Mit anderen Worten, Sie müssen sicherstellen, dass CloseValueSum doesn8217t immer noch die alten Werte hält, wenn die for-Schleife startet. Mit dem Hinzufügen einer Zeile zum Code ist das Ergebnis genau das, was wir erreichen wollten. Wir können auch das display8217s-Erscheinungsbild auf dem Chart ändern. Mit dem Style Tab unter 8220Format Study8221 können wir das visuelle Ergebnis wie Linienstil, Farbe und Dicke ändern. Unter der Registerkarte 8220Inputs8221 finden Sie die erstellte Eingabe und die Standardeinstellung für die Länge. Durch das Laden einer zweiten Instanz der Studie und Verwendung einer anderen Farbe und Länge können Sie bestätigen, dass die Studie gibt ein anderes Ergebnis mit einer anderen Länge Eingabe. Wenn Sie Schwierigkeiten haben, die richtige Lösung zu finden, fühlen Sie sich frei, uns mit Ihrer Lösung zu kontaktieren, und wir werden versuchen, Ihnen rechtzeitig zu helfen. Ich habe Angst, nur um die Lösung zu bitten, aber du musst wenigstens zeigen können, dass du auch die Lösung gefunden hast. Als letzten Hinweis können Sie einen Blick auf andere durchschnittliche Indikatoren oder Funktionen und finden Sie einige Inspiration für die fehlende Link gibt. Ich hoffe, Sie genossen diese Powerlanguage Tutorial Lektion und ich freue mich auf die Zusammenarbeit mit Ihnen in der nächsten. RibbonsPlotter Indicator RibbonsPlotter ist ein Superindikator, der eine Vielzahl von Band-oder Band-Funktionen auf einem Chart aus einer einzigen Indikator, ähnlich wie die Diagramm unten: Dieses Bollinger Band (Band). Ist beispielsweise ein Typ eines bekannten Indikators, bei dem die Mittellinie als ein einfacher gleitender Durchschnitt definiert ist und die vertikale Verschiebung, die verwendet wird, um die Bänder oberhalb und unterhalb dieses gleitenden Durchschnitts zu berechnen, ein Vielfaches der Standardabweichung ist. Die Flexibilität von RibbonPlotters ergibt sich aus der Tatsache, dass der Benutzer die Mittellinienfunktion unabhängig von der Verschiebungsfunktion, die beim Erstellen des Bandes verwendet wird, spezifizieren kann. Es erlaubt auch viele Bands anstatt ein einzelnes Band über und unter dem Preis Aktion gezeichnet werden, damit der Name quotribbonquot Plotter. Die Mittellinie oder Referenz wird vom Benutzer durch einen Eingabeparameter RefID spezifiziert. Und kann eine beliebige der folgenden Funktionen sein: Verwenden Sie UpperBandRef und LowerBandRef als Mittellinien für Abweichungsbänder (erlaubt die Angabe von benutzerdefinierten Formeln). Einfacher Arithmetischer Moving Average (AMA) Linearer Regressionstrend (LR) Kaufman Adaptiver Moving Average (KAMA) Tillson T3 Triple Exponential Moving Average (T3) Jurik Moving Average (JMA) Volumengewichteter Durchschnittspreis (VWAP) Festwert (Null, zum Beispiel, wird die Abweichung Bänder um die Null-Achse, ohne vertikale Preis-Aktion) Die Jurik Moving Average-Funktion erfordert, dass der Benutzer dieses Tradestation Add-on von Jurik Research kaufen. Der Aufruf dieser Funktion wird kommentiert, da die meisten Benutzer nicht für die Nutzung dieser Funktion lizenziert werden. Diejenigen, die lizenziert sind, können den entsprechenden Codeabschnitt in der lokalen Methode RibbonsCalc auskommentieren, um diese Funktion zu implementieren. Die feste Wertmittellinie ermöglicht es dem Benutzer, die Abweichungskomponente der Bänder ohne die durch die Preisaktion induzierte vertikale Bewegung zu betrachten. Mit einem festen Wert von Null zeichnet RibbonPlotter die Abweichungsbänder um die Nullachse auf und kann in einem Unterdiagramm unterhalb des Hauptdiagrammsymbols platziert werden. Der Benutzer kann die Abweichungsfunktion, die verwendet wird, um die Bänder unabhängig von der Mittellinien - (Referenz-) Funktion zu erzeugen, spezifizieren, indem ein Eingabeparameter DevID spezifiziert wird. Die Abweichungsfunktion kann eine der folgenden sein: Standardabweichung (Bollinger Bands) Standardfehler (Jon Andersen Bands) Durchschnittlicher True Range - ATR (Keltner Bands) Jurik Durchschnittlicher True Range JATR (ATR mit Jurik Moving Average) Prozentpunkte Warum den RibbonPlotter verwenden Indikator Der RibbonPlotter-Indikator konsolidiert die Fähigkeit, eine große Bandbreite von Bändern in einem einzigen Indikator darzustellen. Dieses Kennzeichen kann dann mehrere andere Indikatoren ersetzen und bietet eine konsistente Benutzeroberfläche für diese Auflistung von Funktionen. Es nutzt Features von OOEL wie lokale Methoden für mehr Effizienz. RibbonsPlotter2 ist eine ältere Version von RibbonsPlotter, die die Funktion RibbonsCalc2 verwendet, um alle Werte für die Bänder zu berechnen, anstelle einer lokalen Methode RibbonsCalc. Dies macht RibbonsPlotter2 kompatibel mit Tradestation Versionen vor 9.0. Die Funktion RibbonsCalc2 kann auch aus einer Strategie aufgerufen werden. Da die gleiche Funktion Werte für die Strategie und den RibbonPlotter2-Indikator erzeugt, kann der Anwender sicher sein, dass die Werte gleich sind, sofern die Eingabeparameter übereinstimmen. Die einzige Multifunktionsbandfunktion RibbonsCalc2 hat viele Vorteile für den Entwickler automatisierter Handelsstrategien: Der Optimierer kann viele verschiedene Arten von Handelsstrategien testen, ohne die grundlegende Strategiecodierung zu ändern, da der Optimierungsprozess beispielsweise zwischen Bollinger Band, Keltner wechseln kann Band - und Percentage-Band-Tests, ohne dass eine manuelle Manipulation oder Duplizierung des Strategiecodes erforderlich ist. Code-Revisionen und Updates können an einem Ort durchgeführt werden, ohne dass die Änderungen in mehreren Indikatoren oder Strategien dupliziert werden müssen. Eine konsistente Benutzeroberfläche über viele separate Funktionen macht den Code benutzerfreundlicher und daher weniger anfällig für versehentliche Fehler. RibbonPlotter Beispiele RibbonPlotter ist in der Lage, eine Vielzahl von Bandplots zu produzieren. Einige der unten gezeigten Beispiele stellen die häufigsten und bekanntesten Band - oder Bandfunktionen dar. Eine oder zwei weniger häufige Variationen sind ebenfalls gezeigt. Bollinger-Bänder werden aus einer arithmetisch gleitenden mittleren Mittellinie und einer StdDev-Verschiebungsfunktion gebildet. Diese Tabelle zeigt Banden bei Verschiebungen von 1, 2 und 3 Standardabweichungen. Die Bänder zeichnen sich typischerweise aus, wenn der Preis sich während der Konsolidierung tendiert und schmal ist. Anderson Ribbons verwenden eine lineare Regressions-Mittellinie und eine StdErr-Abweichungsfunktion. Jedes Band repräsentiert ein Standardfehlerinkrement weg von der Mittellinie. Die lineare Regressions-Mittellinie umschließt den Preis genauer als ein gleitender Durchschnitt, und Standardfehlerbänder expandieren nicht signifikant, wenn die Preisaktion im Gegensatz zu Bollinger-Bändern im Trend ist. Stattdessen zeigen schmale Bänder, dass der Preis konsequent in der Nähe der Regressionslinie liegt. Wide Bands schlagen eine zunehmende Volatilität des Preises weg von der Regressionsgeraden vor und werden typischerweise während einer Pause im Trend gesehen. Dieses Band repräsentiert eine Mittellinie des Jurik Moving Average (JMA) und eine prozentuale Abweichung von der Mittellinie. Die Angemessenheit Jurik Moving Average ist wegen seiner Glätte und geringen Verzögerung beliebt. Es muss als Add-on für Tradestation erworben werden. Die Tillson T3 Moving Average ist ähnlich und hat fast die Glätte und niedrige Verzögerung des Jurik, und ist für Tradestation Benutzer als integrierte Funktion zur Verfügung. Diese Kaufman Adaptive Moving Average-Mittellinie zeigt die relative horizontale Tability-Mittellinie während der Konsolidierung. In Kombination mit den StdErr-Abweichungsbändern ist dies eine interessante Grundlage für eine Reversion auf den Mean-Typ des Handelssystems. Keltner Ribbons werden durch eine exponentielle gleitende mittlere (EMA) Mittellinie und eine mittlere echte Range (ATR) Verschiebungsfunktion gebildet. Eine Tillson T3 Mittellinie und Jurik Average True Range (JATR) Abweichungsfunktion ist eine interessante Variante. Im Vergleich zu den Keltnerbändern. Haben sowohl die Mittellinie als auch die Bänder etwas weniger Lärm. Dies ist eine Jurik Moving Average-Mittellinie mit prozentualen Abweichungsbändern. Diese Bänder behalten eine relativ stabile Bandbreite bei. Die Angabe einer Mittellinie von Null anstelle einer Funktion des Preises erlaubt es, diese StdDev-Verschiebungsfunktion ohne die Auswirkungen der Preisaktion zu sehen. Dies macht es leichter zu sehen, wie die Verschiebungsfunktion auf die Volatilität und die Trendlichkeit des Preises reagiert. Diese StdErr-Funktion wird auch mit einer Mittellinie von Null angezeigt. Diese Art von Anzeige ermöglicht einen sinnvolleren Vergleich mit der oben beschriebenen StdDev-Verschiebungsfunktion. Es ist einfacher, die einzigartigen Merkmale und Unterschiede zwischen Abweichungsfunktionen zu sehen, wenn sie über eine feste Referenz angezeigt werden, anstatt die Preisaktion zu verfolgen. RibbonPlotter Eingabeparameter UpperBandsRef und LowerBandsRef sind die Eingangspreise, die zur Berechnung der oberen und unteren Mittellinien verwendet werden. In der Regel sind diese gleich und erzeugen daher eine einzige Mittellinie. Der Benutzer kann jedoch separate Mittellinien für die oberen Bänder und die unteren Bänder definieren, daher die beiden Eingabeparameter. RefID wählt die Funktion aus, die verwendet werden soll, um die Mittellinie (s) zu berechnen. Ein Wert von 0 zeigt an, dass die Abweichungsfunktion um die Nullachse zentriert ist, anstatt dem Preis zu folgen. Die anderen Funktionen zur Berechnung der Mittellinie (AMA, EMA, LR, etc.) sind Zahlen in der Reihenfolge ihrer Länge Parameter nach RefID. Um beispielsweise eine exponentielle gleitende mittlere Mittellinie auszuwählen, würde der Benutzer 2 eingeben, da EMALength in der zweiten Position nach RefID erscheint. Der Benutzer würde eine RefID von 3, 4 oder 5 angeben, um eine Mittellinie zu wählen, die aus einer linearen Regressionslinie, einem Kaufman-gleitenden Durchschnitt oder einem Tillson T3-gleitenden Durchschnitt besteht, da dies die Reihenfolge ist, in der ihre entsprechenden Längenparameter in der Eingabe erscheinen Parameterliste. NBands ist die Anzahl der Banden (Bänder) oben und unten, die aufgetragen werden sollen. StartMult ist der Multiplikator, der für das erste Band verwendet wird. Die nachfolgenden Bänder bis zu einer Gesamtheit von NBands werden durch Addieren von Increment zum Anfangsmultiplikator für das erste Band gezeichnet. ShowCenterLine erlaubt dem Benutzer, die Mittellinie für die Bänder anzuzeigen oder nicht anzuzeigen. DisplayParameters legt fest, ob die Parameterwerte für die Mittellinie und die Abweichungsfunktion wie in den angezeigten Proben auf dem Graphen im Text angezeigt werden. Diese Textbeschriftungen wurden von dem Indikator gezeichnet, anstatt sie nach dem Erstellen des Diagramms manuell hinzugefügt zu werden. CLVertPct, DevVertPct, CLHorizPct und DevHorizPct sind die vertikalen und horizontalen Verschiebungen (in Prozent des vertikalen oder horizontalen Diagrammbereichs), die verwendet werden, um die Position der Textbeschriftungen auf dem Diagramm zu positionieren. Weiterhin umfasst der Indikator eine quadratische Positionierung der Markierungen. Wenn die Preisaktion in der Nähe der unteren Kante des Diagramms liegt und der Benutzer angegeben hat, dass das Etikett in der Nähe des unteren Teils des Diagramms zu zeichnen ist, wird das Programm automatisch das Etikett an den oberen Rand des Diagramms drehen, um ein Überschreiben der Preisaktion zu vermeiden . Die vertikale Verschiebung von der unteren Kante des Diagramms, die durch den Benutzer spezifiziert wird, wird beibehalten, aber statt dessen wird dies die vertikale Verschiebung von der oberen Kante des Diagramms.
No comments:
Post a Comment