Thursday, 6 April 2017

Variabel Gleitende Multicharts


Funktionen in Multicharts und Tradestation: Lektion 06 Arbeiten mit Multicharts und Tradestation 8211 Lektion 06: Funktionen Erfahren Sie, wie Sie Funktionen in Multicharts und Tradestation erstellen und nutzen können. Sehen wir uns an, welche Funktionen und wie sie verwendet werden. Wir können dies als Grundlage für eine weitere Lektion verwenden, wenn wir einen Blick auf, wie die Funktion, die mit unserer freien Value Area Indicator kommt zu betrachten. In früheren Lektionen haben wir die Moving Averages in verschiedenen Formen betrachtet. Die Studien, die wir schrieben, hatten alle Berechnungen innerhalb des Hauptcodeblocks. Dies ist gut, um Dinge zu demonstrieren oder wenn Sie nur mit ein paar Zeilen Code arbeiten. Allerdings Handhabung zehn verschiedene gleitende Durchschnitte in Ihrem Code würde es erforderlich, dass Sie den gleichen Code zehnmal hinzufügen. Dies würde Ihren Code viel schwerer zu lesen und die Code-Wartung würde härter zu werden. Denken Sie über einen logischen Fehler, den Sie reparieren möchten, oder eine Änderung in der durchschnittlichen Formel, die Sie machen möchten. Ein Fehler in der durchschnittlichen Logik ist wahrscheinlich in allen zehn Codeblöcken enthalten. Die Änderung der Formel müsste an zehn Stellen innerhalb des Codes erfolgen. Was sind Funktionen Funktionen können hier hilfreich sein. Als Entwickler können Sie Ihren Code an einem Ort, innerhalb einer Funktion zu halten. Sie können diese Funktion nun verwenden, um die Ergebnisse der Berechnung mit einem beliebigen anderen Code zu versehen. Im Falle eines Logikfehlers im Code kann dies eine große Hilfe sein. Der Fehler muss nur an einer Stelle korrigiert werden. Gleichzeitig bewirkt diese Korrektur alle anderen Codes, die Ihre Funktion aufrufen. Es doesn8217t müssen sogar so ernst wie ein Fehler sein. Wenn Sie einfach die Logik ändern möchten, müssten Sie das nur an einem Ort machen. Sie müssen auch den gleichen Codeblock mehrere Male hinzufügen, da Sie nur die Funktion anrufen können. Dies allein kann dazu beitragen, Ihre Arbeit zu minimieren. Durch den Abbau komplexer Logik in kleinere Teile kann es auch die Lesbarkeit Ihres Codes zu verbessern. Minimierte Komplexität, verbesserte Lesbarkeit und weniger Arbeit klingt groß, aber was sind Funktionen Einfach ausgedrückt, ist eine Funktion eine Reihe von Code-Anweisungen, die einen oder mehrere Werte zurückgeben. Funktionen haben einen Namen und unter Verwendung dieses Namens, eine Anzeige, Signal oder andere Funktion kann es aufrufen. Werfen Sie einen Blick auf, wie Sie Funktionen erstellen, indem Sie die gleitende durchschnittliche Logik aus Lektion 2 in eine. Dies sollte die Dinge ein wenig klarer. Eine neue Funktion erstellen Falls der PL-Editor noch nicht läuft, starten Sie ihn bitte. Gehen Sie zu - gt 8220File8221 und klicken Sie auf - gt 8220New8221, um eine neue Funktion zu erstellen. Setzen Sie das Optionsfeld auf 8220Function8221 und klicken Sie auf 8220OK8221. Im nächsten Fenster müssen wir unserer neuen Funktion einen Namen geben. Nach der Namensgebung aus früheren Lektionen rufe ich die Funktion 8220ABCMovingAverageLesson68221 auf. Ich verwende Unterstriche innerhalb des Namens, da Funktionsnamen keine Leerzeichen und nicht alphanumerische Zeichen enthalten dürfen. Der Unterstrich ist die einzige Ausnahme, dass8217s, warum ich es anstelle des Raumes verwende. Bitte geben Sie Ihrer Funktion einen anderen Namen. Denken Sie daran, dass Sie Ihren Code später etwas anpassen müssen. Der 8220Return-Typ8221 gibt den Typ des Ergebnisses an, das die Funktion an den Aufrufer zurückgibt. Für den gleitenden Durchschnitt geben wir einen numerischen Wert zurück. Also setzen wir es auf 8220Numeric8221. Falls Ihre Funktion ein boolesches Ergebnis zurückgibt, sollte der Rückgabetyp TrueFalse sein. Schließlich würden Sie die letzte Option verwenden, falls die Funktion einen String zurückgibt. Setzen Sie die 8220Function Storage8221 auf Auto-Erkennung und haben die PL-Editor kümmern sich um die richtige Speicherung. Im Allgemeinen wäre eine Funktion 8220Simple8221, es sei denn, Sie beziehen sich auf vorherige Bars Werte in ihm (mit eckigen Klammern) in diesem Fall würde es 8220Series8221 werden. Funktionseingaben Unsere Idee ist, den gleitenden mittleren Code aus Lektion 2 in eine Funktion umzuwandeln. Wir wollen auch in der Lage sein, rufen Sie es einfach mit unterschiedlicher Länge oder mit einem anderen Preis für den Durchschnitt später. Wie die Anzeige hat die Funktion zwei Eingänge. Diese können Sie die Länge und den Preis für den Durchschnitt festgelegt. Wir werden ähnliche Eingaben in dem Code erstellen, der die Funktion später aufruft. Auf diese Weise können wir die Ergebnisse, die die Funktion zurückgibt, ändern. Sie müssen einen Vorgabewert in einem Kennzeichen angeben. Im Funktionscode hingegen müssen Sie den Typ der einzelnen Eingaben angeben. Dadurch wird sichergestellt, dass das Programm weiß, welcher Eingangswert zu erwarten ist, während der Code ausgeführt wird. Meistens arbeiten Sie mit drei Typen von Funktionseingabeparametern 8211 Numeric, TrueFalse oder String (Text). Jeder Parameter kann eine von zwei Haupt-Untertypen 8211 Serie und einfach. Obwohl dies klingt ein bisschen komplexer, es ist sehr einfach, wenn Sie die folgenden im Auge behalten. Wenn der jeweilige Eingangsparameter seine 8220simple8221 konstant ist. Eine gleitende mittlere Länge wäre zum Beispiel 8220NumericSimple8221. Eingaben, die sich auf Werte beziehen, die geändert werden können, sind der Subtyp-Serie. Das8217s, warum eine Preisreihe Eingang (wie 8220Close8221 für den gleitenden Durchschnitt) wäre 8220NumericSeries8221. Die Faustregel ist, wenn der Eingang konstant bleibt bar von Bar seine 8220Simple8221, ansonsten seine 8220Series8221. Funktionsausgänge Sie können auch Eingaben verwenden, um Werte aus Funktionen zu empfangen. Diese 8220outputs8221 werden auch als Eingaben im Code behandelt. Mit diesen Eingängen können Sie dem Anrufer Werte (Anzeige, Signal oder Funktion) zuordnen. Auf diese Weise können Sie eine Funktion erstellen, die alle Werte vieler verwandter Berechnungen zurückgibt. Die Stochastische Funktion kommt hier als Beispiel zum Tragen. It8217s nicht nur eine, sondern vier Werte (zusätzlich zur normalen Funktion Rückgabewert): Slow K, Slow D, Fast K und Fast D. Sie deklarieren eine Referenz-Eingabe ähnlich einer regulären Eingabe, der einzige Unterschied ist, dass Sie müssen Fügen Sie 8220Ref8221 dem Typ hinzu. Die meisten Funktionen in Multicharts und Tradestation, die Referenzeingänge verwenden, verwenden den Buchstaben o vor dem Eingabe-Namen. Auf diese Weise können Sie sofort sehen, dass ein Inputoutput (also die 8220o8221) auf Werte für den Anrufer verweist. Ich würde vorschlagen, diese Gewohnheit zu behalten, da es helfen kann, Ihren Code klarer und besser zu lesen. Die Eingabeparameter sind numerisch, truefalse und string. Das ist, warum die Referenzeingänge als numericref, truefalseref und stringref deklariert werden. Rückgabewert Diese Ausgabewerte sind zusätzlich zu dem normalen Rückgabewert der Funktion. Letzteres ist vom Typ, der bei der Erstellung der Funktion als Rückgabetyp angegeben wurde. Der normale Rückgabewert wird dem Funktionsnamen im Code zugewiesen. Alle Tradestationsfunktionen müssen dem Funktionsnamen einen Rückgabewert zugeordnet werden. Während Multicharts auf der anderen Seite nicht erfordern, dass. Sie sollten es Ihre Gewohnheit, als gute Praxis, um immer eine (auch wenn seine nur ein Dummy-Wert wie 1), though. Dieser Dummy-Wert kann auch später verwendet werden, um einen erfolgreichen Funktionsaufruf zu überprüfen. Sie können auch Arrays an und von Funktionen übergeben und referenzieren. Dies geschieht mit NumericArray, NumericArrayRef, TrueFalseArray, TrueFalseArrayRef, StringArray oder StringArrayRef. Wir werden dieses Thema in einer anderen Lektion betrachten. Für heute, nur im Hinterkopf behalten, dass Sie Pass-und Referenz-Arrays, auch. Welche Teile benötigen wir? Wir wollen, dass unsere Funktion einen gleitenden Durchschnitt berechnet und das Ergebnis zurückgibt. Dies geschieht, indem dem Funktionsnamen der Wert zugewiesen wird. Von dem Betrachten des Codes, den wir in Lektion 02 schufen, benötigen wir zwei Eingänge: Ein für den Preis, der gemittelt werden sollte. Aus dem, was wir oben gelernt haben, wird dies eine 8220NumericSeries8221 Art Eingang sein. Ein Eingang für die Länge. Da dies für den gleitenden Durchschnitt konstant bleibt, wird es vom Typ 8220NumericSimple8221 sein. Wir verwenden dieselben Namen für die Eingänge wie in der Lektion 02. Funktionscode Der Hauptfunktionscode ist der Anzeige sehr ähnlich. Unsere Funktion erfordert eine Variable, die als Zähler für die Schleife verwendet wird. Eine weitere Variable, die das Ergebnis der Summation und schließlich eine Variable enthält, um das Ergebnis der Division (das tatsächliche Durchschnittsergebnis) zu halten. Während es wäre möglich, die gleiche Variable für die beiden Ergebnisse verwenden, wird der Code mehr lesbar mit zwei. Wir können auch den Großteil des Hauptcodes, den wir für den gleitenden Durchschnittsindikator geschrieben haben, wiederverwenden. Es verwendet das 8220for loop8221, um die Preiswerte über die letzten X-Balken (wobei X der AverageLength-Eingabewert ist) zu summieren. Um das tatsächliche Durchschnittsergebnis zu erhalten, müssen wir das Ergebnis der Summation durch die AverageLength dividieren. Wie Sie sehen können, gibt es nur wenige Unterschiede im Hauptcodeblock. Wir können nicht das Plot reservierte Wort in einer Funktion verwenden und wir müssen die Variable AverageValue dem Funktionsnamen statt zuweisen. Auf diese Weise kann er an den Code zurückgegeben werden, der die Funktion aufruft. Klicken Sie nun im Editor auf Kompilieren (oder drücken Sie F3), und Sie haben Ihre erste Funktion angelegt. Gut gemacht. Wie nennen wir eine Funktion Wir sollten unsere Funktion als nächsten Schritt verwenden und überprüfen, ob es tatsächlich tut, was wir wollen. Der einfachste Weg, dies zu tun ist, um die Funktion in einem Indikator aufzurufen und den Wert, den es zurückgibt. Auf diese Weise können wir es leicht mit dem Indikatorcode vergleichen, den wir in Lektion 02 erstellt haben. Um den Indikator im Diagramm leicht anpassen zu können, wollen wir den Preis für den gleitenden Durchschnitt und die Länge über Eingaben festlegen können. Da das schwere Heben innerhalb des Funktionscodes erfolgt, benötigt unser Indikator nur eine Variable, die den Rückgabewert der Funktion speichert. Um das Ergebnis zu erhalten, weisen Sie einfach den Funktionsnamen der Variablen zu, die Sie verwenden möchten. Auf den Funktionsnamen folgt eine Öffnungsklammer und die erste Funktionseingabe. Wenn die Funktion mehr als einen Eingang hat, wird jeder Eingang durch ein Komma getrennt. Nach der letzten Eingabe schließen Sie die Klammer und beenden die Code-Anweisung mit einem Semikolon. Falls Sie eine Funktion ohne Eingaben haben, bleibt die Klammer leer. Die Vollanzeige mit dem Funktionsaufruf könnte so aussehen. Ergebnisse vergleichen Wir können diese Studie mit derjenigen vergleichen, die wir in Lektion 02 erstellt haben und prüfen, ob die Ergebnisse übereinstimmen. Vorausgesetzt, wir verwenden die gleichen Eingaben und Einstellungen, sollten sie, wenn wir einen Fehler in unserer Codierung. Die Funktionsanzeige wird auf der Karte als grüne Linie angezeigt. Die rote Linie darunter zeigt das Ergebnis des Codes, den wir in Lektion 2 erstellt haben. Wir haben eine exakte Übereinstimmung und haben nun eine Funktion, die einen einfachen gleitenden Durchschnitt berechnen kann. Ich würde vorschlagen, ein wenig mehr Praxis, wie zu nennen und behandeln Funktionen. Sie können beispielsweise den Indikator erweitern, der unsere Funktion aufruft, so dass er zwei verschiedene gleitende Durchschnitte darstellen kann. Die Studie sollte in der Lage sein, zwei Mittelwerte, gleiche Länge, aber unterschiedliche Preise anzuzeigen. Oder abhängig von den Eingängen, gleichen Preisen, aber unterschiedlicher Länge. EasyLanguage amp PowerLanguage Tutorial 8211 Lektion 02: Coding A Moving Average Erstellen Sie die erste reale Indikator und erweitern Sie die Grundlagen Nachdem Sie vertraut mit dem PowerLanguage Editor in der vorherigen PowerLanguage Tutorial 8211 Lektion 01 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. Das bedeutet, dass der Code alle möglichen Längeneingaben selbst berechnen kann. 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 bei 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 auch den Zähler 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 werden und eine zweite 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 sie 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 haben diese Powerlanguage Tutorial-Lektion und ich freue mich auf die Zusammenarbeit mit Ihnen in der nächsten one. Copy und fügen Sie den Code oben in Ihre Entwicklungsumgebung in Tradestation oder MultiCharts als Indikator. Klicken Sie dann auf Kompilieren oder überprüfen. Dieser Code erkennt, ob der Schlusskurs heute größer oder kleiner ist als der Schlusskurs von gestern. (Dies kann auf Tages-Charts oder Minute-Charts und die close1 bezieht sich auf die vorherige Bar oder am vorherigen Tag) Wenn Sie getippt close2 würde es sich auf die schließen 2 Tage oder Bars statt. Dann haben wir die Summation der letzten (Länge 20) Balken. Um zu sehen, wie es funktioniert, können Sie diese Zeile von Code plot1 (summove, quotup-downcountquot) zu diesem Plot1 (move, quotup-downcountquot) ändern. Klicken Sie dann auf compile. Sie sehen dann, dass Ihr Indikator eine Linie darstellt, die entweder 1, -1 oder 0 ist. Die Eingaben, die oben geschrieben werden, repräsentieren Werte, die vom Benutzer geändert werden können, wenn die Anzeige auf dem Diagramm geplottet wird. Sobald Sie das Kennzeichen in seiner ursprünglichen Form plotten, können Sie die Länge auf 50 oder 20 oder 100 ändern, um zu sehen, wie es das Diagramm beeinflusst. Variablen werden hier als "quotes" dargestellt, und diese Werte sind die Werte, die ich erstellt habe, um die Werte zu speichern, die von den 3 Zeilen Code ausgegeben werden, wenn sie geschlossen sind. Und die summove-Variable. Summieren Summieren (Verschieben, Länge) Das bedeutet, dass die Variable Summierung erzeugt wird, indem die Summe der letzten 20 Balken (oder Längenperioden) Balken mit allen Werten 1 und -1 und 0 addiert wird. Sie können experimentieren, indem Sie mit verschiedenen Werten spielen. Anfänger Beispiel Nr. 2 (Einstellbare Gewichtung Prozentsatz gemischter gleitender Durchschnitt) langsamer Durchschnitt (nah, Länge1) schneller Durchschnitt (schließen, Länge2) wenn Wert1lt0 dann Wert10 wenn Wert1gt1 dann Wert11 Sie können den obigen Code zuerst lesen, bevor Sie dieses Kennzeichen sehen und sehen, wenn Sie sehen können Was es tut. Es gibt zwei gleitende Durchschnitte, die mit langsamer Länge von 50 und einer schnellen Länge von 20 verwendet werden, der Eingang, der Faktor genannt wird, ist einstellbar, um jedem eine Gewichtung zuzuweisen. Wenn Faktor auf 0,5 gesetzt ist, fügt er 50 des langsamen Mittels zu 50 des schnellen Durchschnitts hinzu und erzeugt einen gemischten Durchschnitt der beiden Perioden. Um die maximalen Werte des langsamen mittleren Einstellfaktors auf 1 zu sehen, können Sie den Faktor, der vollständig aus dem schnelleren Mittel konstruiert wurde, auf den Wert 0 setzen. Sie können mit Werten wie 0,1 und 0,9 experimentieren, um die Auswirkungen von Anpassungen auf die Gewichtung zu sehen. Wenn Sie den Namen value1 oder value2 oder value 99 als Variablen verwenden, müssen Sie die Namen nicht im oberen Teil deklarieren. Value2 1-Faktor ist ein sehr gepflegter Weg, um 2 Variablen zuzuweisen, um automatisch 1 eines Teils und 99 des anderen Teils zuzuweisen, also, wenn hinzugefügt, werden sie immer 100 Begrenzen Sie den Benutzerfehler, indem Sie Eingaben beschränken, indem Sie die Variablen sie lesen. (Der Code für Wert1 tut dies nach dem Lesen der Faktor-Eingang) Code Tricks zu versuchen Wenn Sie sich die langsamen und schnellen Variablen sehen Sie sie beide Mittelwerte (Durchschnitt ist dieser Code bedeutet einfach Durchschnitt). Sie können versuchen, die langsame in eine gewichtete durchschnittliche oder eine exponentielle durchschnittliche und mischen diese bis zu Ihrer eigenen gemischte durchschnittliche Kombination zu machen. Anfänger Beispiel nr3 (Einfache binäre Trendanzeige) wenn Mittelwert (nah, fastlength) gt Mittelwert (close, slowlength) dann begin binarytrend1 Ende else binarytrend -1 Dieser Indikator entscheidet das quotbinary Trendquot, dh es wandelt es in eine Zahl um. Somit wird der Aufwärtstrend 1 Abwärtstrend -1 und der Anfangswert als 0 zugewiesen. Wenn Sie den 80 Perioden gleitenden Durchschnitt und den zwölf Perioden gleitenden Durchschnitt auf dem Diagramm platzieren, können Sie überprüfen, ob die Trendanzeige funktioniert. Verwenden von End-else-Anweisungen, um die Code-Länge zu reduzieren. ZB oben geht davon aus, dass, wenn der Trend nicht 1 ist, dann muss es -1 sein. Code-Tricks zu versuchen Wenn Sie versuchen, mit einer anderen Methode, um den Trend zuzuordnen, ist oben oder unten und ersetzen Sie den Code mit Ihrer Idee. Z. B. Sie verwenden den stochastischen Oszillator mit über 50 Aufwärtstendenz und unter 50 abwärts Trend. Das Gleiche von 50 kann durch das Sagen gefangen werden. Wenn stochastisch ist gt50 dann zählen als Aufwärtstrend (psuedo-Code) Anfänger Beispiel Nr. 4 (Einfache Länge Anpassung Algorithmus), wenn die höchste (schließen, basiclength) oder nahe am niedrigsten (schließen, basiclength) beginnen dann Monitor monitor1-1 Ende sonst monitormonitor10.5 wenn Monitor Lt minlength dann Überwachung minlength, wenn Monitor gt maxlength dann überwachen maxlength Dies ist die erste Stufe, um einen Algorithmus, um die Länge auf eine Anzeige angewendet kontrollieren. Sie können sehen, dass, wenn Sie dieses Zeichen in Untergraphen 2 plotten, es zwischen 50 und 10, die die max und min Längen erlaubt sind. (Aber diese sind einstellbare Eingänge) Wenn der Preis eine neue hoch oder niedrig für die grundlegende Länge Zeitraum wird es verlangsamen, um 1 Länge Inkrement für jede Bar, dass die Bedingung wahr ist. Wenn der Preis nicht eine neue hoch oder niedrig für den gleichen Zeitraum wird es die Länge um 0,5 Länge Inkrement für jede Bar reduziert die Bedingung ist wahr. Code-Tricks zum ausprobieren Wenn Sie versuchen, die Werte der -1 und der 0,5 zu größeren oder kleineren Mengen zu ändern, können Sie sie an Ihre Anforderungen anpassen. Im folgenden werde ich Ihnen zeigen, wie man diesen Code in eine Längenänderung Indikator zu bauen. Anfänger Beispiel no5 (Einfache Länge Einstellung gewichteter gleitender Durchschnitt), wenn der Nähe höchsten (in der Nähe, basiclength) oder in der Nähe niedrigsten (in der Nähe, basiclength) dann Monitor monitor1-1 Ende sonst monitormonitor10.5 beginnen, wenn der Monitor lt minlength dann minlength wenn Monitor gt maxlength überwachen dann überwachen maxlength Sie können sehen, dass eine weitere Variable hinzugefügt worden, die einen gewichteten gleitenden Durchschnitt ist und der Trick hier ist die übliche Feld der Länge mit dem Algorithmus Monitor zu ersetzen, die die Länge ist die Anpassung angewendet. Code-Tricks zum ausprobieren Wenn Sie einen 20-Perioden-gewichteten Durchschnitt daneben auf dem Untergraphen eins zeichnen. Sie können sehen, wie der Code über Längenänderung Durchschnitt ist langsamer zu einem bestimmten Zeitpunkt und schneller in anderen Perioden. Der obige Indikator befindet sich im Untergraphen no1, der mit dem Preis überlagert ist. Beispielcode no4 wird in Unter platziert 2. Sie die Länge ändernden Algorithmus in Aktion beobachten und sehen, wie es um die Geschwindigkeit des gewichteten Durchschnitts auswirkt. Anfänger Beispiel no6 (Wie zu verhindern Division durch Null-Fehler) Division durch Null ist ein häufiges Problem bei der Programmierung erfahren. Die Antwort ist immer unendlich, also müssen wir verhindern, dass etwas durch Null geteilt wird an erster Stelle. Es gibt zwei Methoden, dies zu tun. Wenn Wert1 0 dann value1value10.0000000001 So fügen wir einfach eine kleine Nummer zu, die so winzig ist, wird es nicht zu viel Unterschied zu den Ausgängen zu machen. Wenn Wert1 ltgt 0 dann Wert2 Wert3 Wert1 Dies zwingt den Computer zu fragen, ob der Wert 1 0 ist oder nicht, bevor die Berechnungen zu tun. Wenn es 0 ist, gibt es den Standardwert zurück, der dem Wert1 in den Variablen zugewiesen wurde, als Sie ihn erstellt haben. Anfänger Beispiel no7 (Verwendung von Fisher Transform)

No comments:

Post a Comment