Thursday, 21 September 2017

Variable Gleit Durchschnitt Multicharts


Multicharts Tutorial 8211 Lektion 04: Wenn Aussagen und bedingte Verzweigung Erfahren Sie, wie Sie Codeausdrücke auf der Grundlage von Bedingungen ausführen. In der heutigen Unterrichtsstunde erfahren Sie, wie Sie Ihren Programmablauf steuern und die Teile nur dann ausführen können, wenn bestimmte Bedingungen erfüllt sind. Hier werden if-Anweisungen verwendet. Sie finden sie im Grunde jeden High-Level-Programmiersprache und sie sind der Motor, der jedes Programm fährt. Wenn Aussagen zum Beispiel bei der Färbung eines gleitenden Durchschnitts unterschiedlich verwendet werden können, basierend auf seiner Beziehung zum Ende eines Balkens. Wenn du nach einer gewissen Zeit alle offenen Positionen schließen möchtest, wird eine if-Anweisung ins Spiel kommen. Falls Sie eine Warnung auslösen möchten, wenn eine vordefinierte Bedingung erfüllt ist, verwenden Sie auch eine if-Anweisung dafür. Diese Liste könnte für einige Zeit weitergehen, aber ich denke, Sie verstehen schon, dass, wenn Aussagen nicht nur sehr nützlich, sondern auch sehr wichtig sind. Kein Programmier-Tutorial könnte komplett sein, ohne über sie zu gehen und ein gutes Verständnis ist wichtig, bevor wir uns auf komplexere Dinge bewegen können. If8230then8230 Die Anweisung 8220if8230then82308221 ist die einfachste Form einer bedingten Aussage. Die Bedingung wird getestet und wenn it8217s true die folgende Code-Anweisung ausgeführt wird. Wenn der Test falsch ist, wird nichts ausgeführt, da die folgende Code-Anweisung nicht ausgeführt wird. Wenn ich sage, der Test ist wahr, don8217t sich verwirrt und denke, Sie sind auf Testbedingungen beschränkt, die nur 8220true8221 enthalten. Im Fall 8220ii8221 ist eine numerische Variable und 8220MyCondition18221 und 8220MyCondition28221 sind boolesche Variablen diese sind drei gültige 8220if8230then82308221 Anweisungen. Im Falle der ersten Anweisung prüft der Code auf 8220MyCondition1 false8221. Wenn 8220MyCondition18221 tatsächlich falsch ist, wird das Testergebnis tatsächlich 8220true8221 sein (weil der zu prüfende Ausdruck abgeglichen ist). Dies kann ein bisschen verwirrend auf den ersten, aber wenn Sie sich erinnern, haben wir ähnliche Kontrollen in der letzten Lektion mit der 8220while loop8221 gemacht. Sie können das Ergebnis für einen Test an die PL Editor-Ausgabeleiste mit dem Druckbefehl ausdrucken. Die Code-Anweisung nach der Anweisung 8220if8230then82308221 wird nur ausgeführt, wenn die Prüfbedingung übereinstimmt. Falls der Test falsch zurückgibt, wird der Code mit dem nächsten Teil fortgesetzt. Wenn Sie möchten, dass Ihr Code eine Anweisung ausführt, wenn die Testbedingung wahr ist und eine andere, wenn it8217s false ist, können Sie zwei 8220if8230then82308221 Anweisungen verwenden oder einen anderen Typ von Anweisung verwenden. If8230then8230else8230 Die Anweisung 8220if8230then8230else82308221 führt eine Codeanweisung aus, wenn der Prüfbedingungstest wahr ist und eine zweite Anweisung, wenn der Test falsch ist. Zurück zu unserem gleitenden durchschnittlichen Beispiel können wir die Farbe des Durchschnitts entsprechend dem Verhältnis des Schlusspreises zum Durchschnitt ändern. Wenn die Schließung über dem Durchschnitt liegt, dann sollte der Durchschnitt grün gefärbt sein, wenn es nicht sollte, sollte es rot sein. Beachten Sie, dass dies bedeutet, dass der Durchschnitt auch rot gefärbt wäre, falls das Schließen dem Durchschnitt entspricht. Mit der Anweisung 8220if8230then8230else8221 und dem reservierten Wort 8220SetPlotColor8221 wird hier der Trick ausgeführt. SetPlotColor hat zwei Parameter: Die erste ist die Nummer des Plots, die du die Farbe ändern möchtest (it8217s 1 für Plot1 und 5 für Plot5 etc.) und die zweite ist für die Farbe, die du die Handlung verwenden möchtest. Wie geplant, wird der Durchschnitt seine Farbe jetzt entsprechend der Beziehung der Bar in der Nähe des Durchschnitts ändern. Wie ich schon erwähnt habe, würde der Fall, wo der Abschluss gleich dem Durchschnitt ist, auch in Rot gefärbt werden. Eine sehr nützliche Funktion für 8220if82308221 Aussagen ist, dass man sie kombinieren oder verschachteln kann, um komplexere Logikbäume zu schaffen. Wir könnten etwas ändern die 8220if8230then8230else8221 Anweisung in den Code oben verwendet und fügen Sie eine dritte Farbe für den Fall, wo die engen entspricht dem Durchschnitt. Das Code-Stück Gruppen eine 8220if8230then82308221 und eine 8220if8230then8230else82308221 Anweisung, um die Aufgabe durchzuführen. Bitte beachten Sie, dass nur die letzte Codezeile in einer einzigen 8220if8221 oder mehrere gruppierte 8220if8221 Aussagen von einem Semikolon gefolgt werden muss. If8230then begin8230end Die Anweisungen 8220if8230then8221 und 8220if8230then8230else82308221 sind großartig, wenn man nur einen Codeausdruck hat, der ausgeführt werden soll. Für komplexere Codeblöcke müssen Sie Blockaussagen verwenden. Die Block-Anweisung von 8220f8230die begin8230end8221 ähnelt der Anweisung 8220if8230then8221, erlaubt aber mehrere Codeausdrücke zwischen den 8220begin8221 und 8220end8221. Die 8220begin8221 und 8220end8221 sind für Blockaussagen üblich, so starten und enden sie. Beim Vergleich mit den regulären 8220if8230then82308221 oder 8220if8230then8230else8221 Aussagen in einem 8220if8230then begin8230end8221 Block alle komplette Aussagen innerhalb der 8220begin8230end8221 muss ein Semikolon folgen. Let8217s fügen Sie eine einfache Block-Anweisung zu unserem Durchschnitt, dass ein Kreuz (für diese müssen Sie die Handlung ändern, um in den Eigenschaften zu überqueren) und gibt uns eine Warnung, wenn die volle Bar unter dem Durchschnitt ist. If8230then begin8230end sonst begin8230end Natürlich gibt es auch ein 8220if8230then begin8230end else begin8230end8221 Block-Anweisung, wenn du mehr Code-Anweisungen in einem bedingten Zweig verwenden willst. Mit diesem und dem anderen 8220begin8230end sonst. 8221 gibt es eine Sache zu beachten: Die 8220end8221 nach dem ersten 8220begin8221 wird nicht von einem Semikolon gefolgt, nur die letzten 8220end8221, die die Anweisung vervollständigt braucht das Semikolon. Sie können auch zwei 8220if8230then begin8230end8221 Aussagen zusammen wie diese, um die Bars, die vollständig über dem Durchschnitt zu markieren. After8230begin8230end Für den Rest von today8217s Session haben wir zwei weitere Aussagen zu gehen. Wir haben eine dieser Aussagen schon ein paar Mal benutzt, also bist du schon mit ihr vertraut. Wie Sie vielleicht erraten haben it8217s die 8220once8230begin8230end8221 Anweisung. Wir haben es sogar zu Beginn dieser Session benutzt, nur ohne eine Auswertung. Der Vorteil dieser Aussage ist, sobald der boolesche Ausdruck zum allerersten Zeitpunkt wahr wird, hat es nie wieder getestet. Es wird einfach in den Code übersprungen, nachdem es einmal ausgeführt wurde. Dies ist zum Beispiel großartig, um Variablen zu initialisieren und einige Berechnungen durchzuführen, die du nur einmal machen musst. Im Allgemeinen startet 8220once8221 eine Anweisung, die so aussieht: Der boolesche Ausdruck nach 8220once8221 ist optional und kann im nächsten Beispiel als you8217ll angezeigt werden. Falls Sie nur einmal eine Anweisung ausführen müssen, können Sie auch die reservierten Wörter 8220begin8221 und 8220end8221 verlassen. Das Bild unten enthält drei Beispiele, wie 8220once8221 verwendet werden könnte. Das erste Beispiel löscht die Ausgabeleiste und löscht dort alle alten Druckinformationen. Die zweite Code-Anweisung wird das gleiche tun, aber da der Code für 8220if CurrentBar 18221 überprüft, wird diese Überprüfung bei jeder Codeausführung erneut durchgeführt. Mit der Anweisung 8220once8221 wird der Code einmal ausgeführt und dann noch nicht überprüft. Mit anderen Worten, das gibt Ihnen auch eine etwas bessere Leistung. Das zweite Beispiel zeigt, wie man die Zeckenbewegung und die Dezimalzeichen eines Symbols berechnet und die Ergebnisse in zwei Variablen speichert. Das letzte Beispiel zeigt, ob der Tag auf dem Diagramm ein Montag ist. Sobald dies der Fall ist, wird das Ausgabe-Druckprotokoll gelöscht und ein neuer Text wird gedruckt. Switchcase Die 8220switchcase8221-Anweisung ist die abschließende Aussage, die wir heute sehen werden. Die Switch - und Case-Anweisung ist nützlich bei der Verwaltung komplexerer bedingter Verzweigungsoperationen. Anstatt mehrere 8220if8230else8221 oder andere Anweisungen zu verschachteln, können mehrere Fallabschnitte basierend auf dem switch-Ausdruck ausgeführt werden. Das klingt viel härter als es wirklich ist. Let8217s werfen einen Blick auf ein einfaches Codebeispiel, das hilft, die 8220switchcase8221 Anweisung zu klären. Erstellen Sie die unten angezeigte Anzeige und laden Sie sie in ein Diagramm. Dann überprüfen Sie verschiedene Zahlen für die Eingabe und das Druckergebnis in der Ausgabeleiste. Die Druckaussagen werden nur über zwei Zeilen aufgeteilt, um hier besser lesbar zu sein, normalerweise würde ich sie in einer Zeile verlassen, wenn sie nicht zu lange werden. Der Code übergibt den Eingang 8220Number8221 über die switch-Anweisung an den ersten Matching-Case-Ausdruck und führt die folgende Anweisung aus. Wenn ein übereinstimmender Fallausdruck gefunden wird, werden alle Anweisungen für diesen Ausdruck ausgeführt und der Code wird nach der Anweisung 8220switchcase8221 fortgesetzt. That8217s warum die Aussage für den Fall 2 bis 5 nie ausgeführt wird 8211 der Fall ist in 2 bis 10 bereits enthalten. Tauschen Sie die Position für die beiden Fälle aus und beide können abhängig von der Zifferneingabe ausgeführt werden. Die Anweisung 8220default8221 ist optional und Sie können es verwenden, um sicherzustellen, dass eine Anweisung ausgeführt wird, auch wenn kein Fallausdruck übereinstimmt. Sie können auch mehrere verschiedene Anweisungen für jeden Fall verwenden, ich habe nur eine Druckanweisung für jeden Fall in diesem Beispiel verwendet. Die Aussagen, die wir während dieser Lektion betrachteten, haben gemeinsam, dass man sie für eine komplexere Logik nisten und gruppieren kann. Manchmal musst du ganz kreativ sein, um zu erreichen, was du im Sinn hast. Das ist eine gute Umrisse Ihrer Logik, die so wichtig ist. Nehmen Sie sich etwas Zeit, bevor Sie mit der Codierung beginnen, vielleicht ziehen Sie ein Flußdiagramm oder einen Logikbaum. Dies kann Ihnen wirklich helfen, sparen Sie viel Zeit am Ende. Ich weiß, dass ich das schon einmal betont habe und ich werde es nochmal sagen, wie es wichtig ist. Lernen etwas Neues ist viel einfacher als eine schlechte Angewohnheit zu erlernen. Wenn Sie mit dem Lernen beginnen, wie man in EasyLanguage oder PowerLanguage Code macht es Ihre gute Gewohnheit, ordnungsgemäß planen Sie Ihre Programmierung, bevor Sie beginnen. Dies schließt die Lektion über, wenn Aussagen und bedingte Verzweigung. Es markiert auch das Ende der ersten Grundstunden und mit den folgenden Lektionen werden wir mehr in die Programmierung tauchen und einen Blick auf neue Ideen und Theorien auf dem Weg. EasyLanguage amp PowerLanguage Tutorial 8211 Lektion 02: Coding A Moving Average Erstellen der ersten Real Indikator und Erweiterung der Grundlagen Nachdem Sie sich mit dem PowerLanguage Editor in der vorherigen PowerLanguage Tutorial 8211 Lektion 01 vertraut gemacht haben, werden wir nun auf diesem Fundament aufbauen. Wenn du die letzte Lektion lasst, würde ich es vorschlagen, das zuerst zu tun, da es dir auch helfen kann, diese Lektion zu verstehen. Let8217s beginnen mit today8217s Lektion jetzt. Öffnen Sie den PowerLanguage Editor und erstellen Sie eine neue Indikatorstudie. Ich werde meine nennen ABCPowerLanguage Lektion 02 8211 Moving Average so kann ich es leicht in meinem Editor später finden. Der Name ist ganz bis zu dir natürlich und man könnte es sogar später ändern. Wie der letzte Teil des Indikatornamens nahelegt, werden wir heute einen gleitenden Durchschnitt erstellen und abgeben. Sie haben wahrscheinlich einen gleitenden Durchschnitt auf einem Diagramm gesehen, bevor oder erinnern Sie sich den Begriff Durchschnitt von 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, die ein sehr glattes Ergebnis gibt. Der Nachteil dieser Glätte ist, dass Sie mehr Verzögerung vorstellen Dies bedeutet, dass der Durchschnitt weniger auf Preisänderungen reagiert. Wenn du einen Blick auf das nächste Bild werdest, wirst du sehen, wie unterschiedlich das Verhalten eines 200 Perioden einfachen gleitenden Durchschnitt ist, wenn man es mit dem grünen 10 Perioden Durchschnitt vergleicht. 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 Durchschnittswerten, die sich hauptsächlich in den Auswirkungen unterscheiden, die jeder Datenpunkt auf das Ergebnis des Durchschnitts hat. Ein 200 Perioden einfacher gleitender Durchschnitt berechnet einfach eine Summierung der letzten 200 Datenpunkte und teilt sie mit 200. Das Ergebnis ist ein Durchschnitt, der jedem Datenpunkt denselben Einfluss (denselben Wert) auf das Ergebnis gibt. Die erste Bar und die letzte Bar, die Teil des Durchschnitts sind, werden beide gleich für das Ergebnis gewichtet. Zwei weitere prominent und häufig verwendete Durchschnittswerte sind der Exponential Moving Average und der gewichtete 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 Durchschnitt wird es exponentiell abnehmen, daher der Name. Das wird so theoretisch wie heute. Wenn Sie einige Details über Mittelwerte lesen möchten, können Sie mit diesem Wikipedia-Artikel beginnen. Für weiteres Verständnis dieser Lektion, die du gewohnt hast, benötigst du diese zusätzlichen Informationen. Let8217s beginnen mit Codierung unseren Durchschnitt. Unser Indikator sollte nicht nur einen Durchschnitt berechnen, sondern er sollte das Ergebnis in ein Diagramm ausgeben. EasyLanguage hat das 8220Plot8221 reserviertes Wort dafür und wir werden es benutzen, um das zu tun. Bevor Sie mit der Programmierung etwas beginnen it8217s immer eine gute Idee, einen Schritt zurück zu gehen und darüber nachzudenken, was Sie versuchen zu erreichen und wie Sie es tun werden. Da diese Studie nicht sehr komplex ist, gibt es nur ein paar Dinge zu durchdenken. Wenn Studien komplexer werden, können Sie viel Zeit mit guter Planung im Voraus sparen. Das Ziel ist eine Studie, die einen einfachen gleitenden Durchschnitt berechnet und abgibt. Wir wollen in der Lage sein, die Länge für den Durchschnitt mit einem Eingang so it8217s einfach anpassen zu ändern. Für den Durchschnitt müssen wir die Menge der Werte addieren, die mit der Längeneingabe korrelieren. Wir wollen keinen Code für jede mögliche Längeneingabe für die Summierung schreiben. Das bedeutet, dass der Code alle möglichen Längeneingaben selbst berechnen muss. Hast du schon eine Ahnung, wie wir das erreichen können. Die Antwort ist, dass wir eine Iterationsanweisung benötigen, die jedes Mal für eine bestimmte Anzahl von Zeiten wiederholt ausgeführt werden kann (unsere Längeneingabe). Ich weiß, das klingt kompliziert, aber es wird ganz einfach sein. Wir verwenden die 8220for loop8221 für diese Aufgabe. Diese Schleife wiederholt eine oder mehrere Anweisungen für eine benutzerdefinierte, spezifische Anzahl von Iterationen. EasyLanguage Code wird von oben nach unten und in der Regel von links nach rechts ausgeführt. Sobald eine Codezeile ausgeführt wird, wird die nächste Zeile ausgeführt und so weiter. Falls 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 Loop 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 Basis für Schleife mit einer numerischen Zählervariablen (in diesem Fall) und dem Anfangswert von 0. Die Iterationen werden zehnmal durchgeführt, bis der Zähler den Wert von 9 erreicht hat. Dann wird der Schleifenblock zuletzt ausgeführt Zeit und verlassen. Du musst den Zählerwert selbst inkrementieren, der Loopcode kümmert sich darum. Der aktuelle Zählerwert wird in der Zählervariable gespeichert. So können Sie für jeden Loop-Zyklus darauf zugreifen und ihn für Ihre Berechnungen verwenden. Dies wird für die Berechnung unseres Durchschnitts nützlich sein. 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 auch verlassen wird. Der Zähler fällt einfach mit jeder Iteration um eins ab, bis er 0 erreicht. In Easylsprache können Sie auf datenbezogene reservierte Wörter, Variablen und Funktionen aus einer vorherigen Leiste sehr einfach verweisen. Wenn Sie eine Zahl innerhalb von eckigen Klammern nach dem reservierten Wort verwenden, wird die Berechnung oder die Variable den Wert für diese bestimmte Leiste zurückgeben. Die Zahl wächst aus der aktuellen Bar (die Sie mit 0 bezeichnen) in Schritten von einem. Wenn du den Wert des vorherigen bar8217s in einer Variablen namens PrevCloseValue speichern möchtest, kannst du es so machen: Wir wollen unseren Durchschnitt mit dem Schließen für die letzten X-Balken aufbauen. Wo X ein Eingang ist, um mehr Flexibilität zu ermöglichen. Sie wissen bereits, dass wir eine Schleife dafür verwenden wollen und wir haben gerade herausgefunden, wie wir uns auf die Schiebewerte für die vorherigen Takte beziehen können. Das sollte genug sein, um den Code für den Hauptteil unseres Indikators zu schreiben. Let8217s wird fortgesetzt, indem die Eingabe - und Variablenabschnitte erstellt werden. Sie erinnern sich vielleicht an die letzte Lektion, die mit aussagekräftigen Variablennamen eine gute Codierungspraxis ist und Ihnen später viele Schwierigkeiten ersparen kann. Wir müssen einen Eingang deklarieren, damit wir die Länge für unseren Durchschnitt auf dem Chart ändern können. Daneben wollen wir eine Variable, die die Summation hält, man den Zählerwert und einen letzten, um den Mittelwert zu speichern. Für die Ausgabe des Wertes auf dem Diagramm verwenden wir das reservierte Wort Plot. Darauf folgt eine Nummer, so dass man zwischen verschiedenen Parzellen unterscheiden kann. Was benötigt wird, da man bis zu 999 Plots in Multicharts verwenden kann. Das Plot reservierte Wort kann mehrere Parameter wie Farbe, Plot Größe und einige mehr haben. Wir werden es hier einfach halten und Plot1 mit nur zwei Parametern verwenden 8211 die erste für den numerischen Ausdruck zu plotten und eine zweite für den Namen, den wir dem Plot zuordnen wollen. Der endgültige Code wird so aussehen: Nach dem Kompilieren dieses Codes sind wir fast bereit, unseren Indikator auf ein Diagramm in Multicharts zu laden. Let8217s werfen Sie einen Blick auf die Eigenschaften des Indikators zuerst. Sie finden sie unter - gt File - gt Eigenschaften oder durch Klicken auf das Eigenschaften-Symbol im Menü (es sollte das übrige zu Compile sein). Unter der Registerkarte Stil können Sie die Farbe, den Linienstil und die Dicke für die von Ihnen erstellte Pläne ändern. Wenn du auf die Registerkarte Eigenschaften gehst, gibt es mehrere Optionen zum Festlegen oder Prüfen, aber jetzt solltest du nur noch die sicherstellen, dass die Option 8220Same As Symbol8221 aktiviert ist. Dadurch wird sichergestellt, dass der Indikator direkt auf Ihrem Diagramm und nicht auf einem Subchart angewendet wird. Jetzt sind Sie bereit, den Indikator auf ein Diagramm Ihrer Wahl anzuwenden. Wenn Sie im Hauptfenster von Multicharts ein Diagramm öffnen, können Sie das Kennzeichen einfach in dieses Diagramm einfügen. Wenn der Indikator angewendet wird, sollte das Ergebnis dem obigen Screenshot ähnlich sein. Allerdings scheint das nicht richtig zu sein, denn das sieht nicht wie ein gleitender Durchschnitt aus. Die Preisreihe ist fast eine flache Linie und die Handlung, die von unserem Indikator kommt, steigt nur. Mit dem E-Mini SampP 500 im Bereich von 18217800 ist ein 10 bar gleitender Mittelwert für diesen Markt von 182179528217647 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 wichtiges Detail haben wir vergessen zu addieren. Wir müssen etwas vor der for-Schleife hinzufügen. Die Schleife fügt einfach die Werte für die letzten zehn Takte mit jeder neuen Leiste hinzu. Das ist gut und wir wollen es genau das tun, aber wir wollen es nicht, die neuen Werte den alten Werten hinzuzufügen. Mit anderen Worten, Sie müssen sicherstellen, dass CloseValueSum doesn8217t noch die alten Werte hält, wenn die for-Schleife beginnt. Mit dem Hinzufügen einer Zeile zum Code ist das Ergebnis genau das, was wir erreichen wollten. Wir können auch das display8217s Aussehen auf dem Diagramm ändern. Mit dem Style Tab unter 8220Format Study8221 können wir das visuelle Ergebnis wie Line Style, Farbe und Dicke ändern. Unter der Registerkarte 8220Inputs8221 finden Sie die von Ihnen erstellte Eingabe und die Standardeinstellung für die Länge. Durch das Laden einer zweiten Instanz der Studie und mit einer anderen Farbe und Länge können Sie bestätigen, dass die Studie gibt ein anderes Ergebnis mit einer anderen Länge Eingang. Wenn Sie Schwierigkeiten haben, das richtige Update zu finden, fühlen Sie sich frei, mit uns mit Ihrer Lösung in Verbindung zu treten und wir werden versuchen, Ihnen in einer fristgerechten Weise zu helfen. Ich habe Angst, nur um die Lösung zu bitten, die Sie aber auch in der Lage haben zu zeigen, dass Sie sich bemühen, die Lösung zu finden. Als letzter Hinweis können Sie einen Blick auf andere durchschnittliche Indikatoren oder Funktionen werfen und finden Sie einige Inspiration für die fehlende Link gibt. Ich hoffe, Sie haben diese Powerlanguage Tutorial Lektion genossen 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. Dann klicken Sie auf Kompilieren, oder überprüfen Sie. Dieser Code erkennt, ob der Schlusskurs heute größer als oder weniger der Schlusskurs von gestern ist. (Dies kann auf Tages-Diagramme oder Minuten-Charts gesetzt werden und die Close1 bezieht sich auf die vorherige Bar oder am vorherigen Tag) Wenn Sie schickte close2 würde es auf die enge 2 Tage oder Stäbe stattdessen verweisen. Dann haben wir die Summe der letzten (Länge 20) Takte. Um zu sehen, wie es funktioniert, können Sie diese Zeile des Code plot1 (summove, quotup-downcountquot) zu diesem Plot1 (move, quotup-downcountquot) ändern. Dann klicken Sie auf kompilieren. Sie können dann sehen, dass Ihr Indikator eine Zeile anzeigt, die entweder 1, -1 oder 0 ist. Die Eingaben, die oben geschrieben werden, repräsentieren Werte, die vom Benutzer beim Plotten des Indikators auf dem Diagramm geändert werden können. Sobald Sie den Indikator in seiner ursprünglichen Form zeichnen, können Sie die Länge auf 50 oder 20 oder 100 ändern, um zu sehen, wie es die Handlung beeinflusst. Variablen werden hier als quotvarsquot angezeigt und diese sind Werte, die ich erstellt habe, um die Werte zu speichern, die von den 3 Zeilen Code ausgegeben werden, wenn sie schließen. Und die Summvariable. Summation (Verschiebung, Länge) Das bedeutet, dass die Variable summove aus der Addition der Summe der letzten 20 Balken (oder Längenperioden) mit allen 1 und -1 und 0 Werten erzeugt wird. Sie können experimentieren, indem Sie mit verschiedenen Werten herumspielen. Anfänger Beispiel Nr2 (Einstellbare Gewichtung Prozent gemischter gleitender Durchschnitt) Langsamer Durchschnitt (nahe, Länge1) schneller Durchschnitt (nah, Länge2) if value1lt0 dann value10 if value1gt1 then value11 Sie können den obigen Code zuerst lesen, bevor Sie dieses Kennzeichen erstellen und sehen, ob 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, die Eingabe, die Faktor ist, ist einstellbar, um jedem Gewicht eine Gewichtung zuzuordnen. Wenn der 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 Maximalwerte des langsamen Mittelwert-Einstellfaktors auf 1 zu sehen, um das vollständig aus dem schnelleren Mittel gebildete Diagramm zu sehen, kannst du den Faktor auf 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, dann müssen Sie die Namen dieser Felder nicht im oberen Teil deklarieren. Value2 1-Faktor ist ein sehr ordentlicher Weg, um 2 Variablen zu erhalten, um automatisch 1 von einem Teil und 99 des anderen Teils zuzuweisen, so dass beim Hinzufügen wird sie immer 100 Begrenzen Sie den Benutzerfehler, indem Sie Eingaben einschränken, indem Sie die Variablen lesen. (Der Code für value1 tut dies nach dem Lesen der Faktor-Eingabe) Code-Tricks zu versuchen Wenn Sie sich die langsamen und schnellen Variablen sehen Sie sehen sie beide verwenden Mittelwerte (Durchschnitt ist dieser Code bedeutet einfacher Durchschnitt). Sie können versuchen, die langsame in einen gewichteten Durchschnitt oder einen exponentiellen Durchschnitt und mischen diese bis zu Ihrem eigenen gemischten durchschnittlichen Kombination zu machen. Anfänger Beispiel Nr. 3 (Einfache Binär-Trend-Indikator) Wenn durchschnittlich (nahe, fastlength) gt Durchschnitt (nah, langsamer) dann beginnen binarytrend1 end else binarytrend -1 Dieser Indikator entscheidet den quinziellen Trendquot, was bedeutet, dass er ihn in eine Zahl umwandelt. So uptrend 1 Abwärtstrend -1 und der Anfangswert wird als 0 zugewiesen. Wenn Sie den 80 Perioden-Gleitender Durchschnitt und den 12 Perioden-Gleitender Durchschnitt auf dem Diagramm zeichnen, können Sie überprüfen, ob die Trendanzeige funktioniert. Verwenden von End-else-Anweisungen, um die Codelänge zu reduzieren. EG oben geht davon aus, dass, wenn der Trend nicht 1 ist, dann muss es -1 sein. Code-Tricks zu versuchen Wenn Sie versuchen, eine andere Methode, um den Trend zuzuweisen ist nach oben oder unten und ersetzen Sie den Code mit Ihrer Idee. Z. B. Sie verwenden den stochastischen Oszillator mit über 50 Aufwärtstrend und unter 50 werden unten Trend. Das Gleiche von 50 kann gefangen werden, indem man das sagt. Wenn stochastisch ist gt50 dann zählen als Aufwärtstrend (Psuedo-Code) Anfänger Beispiel Nr4 (Einfache Längenanpassung Algorithmus), wenn nahe am höchsten (schließen, Basislänge) oder niedrigste (schließen, Grundlänge) dann beginnen Monitor Monitor1-1 Ende sonst Monitormonitor10.5 wenn Monitor Lt minlength dann überwachen minlength wenn Monitor gt maxlength dann überwachen maxlength Dies ist die erste Stufe der Herstellung eines Algorithmus, um die Länge auf einen Indikator angewendet zu kontrollieren. Sie können sehen, dass, wenn Sie dieses Kennzeichen in Teilgraphen 2 zeichnen, es zwischen 50 und 10, die die max und min Längen erlaubt sind. (Aber das sind einstellbare Eingänge) Wenn der Preis für die Grundlängenperiode einen neuen Hoch - oder Tiefstand macht, verlangsamt er für jede Leiste um 1 Längeninkrement, so dass die Bedingung wahr ist. Wenn der Preis nicht ein neues hoch oder niedrig für den gleichen Zeitraum wird es reduzieren Länge um 0,5 Längeninkrement für jede Bar die Bedingung ist wahr. Code-Tricks zu versuchen Wenn Sie versuchen, die Werte der -1 und die 0,5 zu größeren oder kleineren Mengen ändern können Sie es an Ihre Anforderungen anpassen. Im Folgenden werde ich Ihnen zeigen, wie man diesen Code in eine Länge ändern Indikator zu bauen. Anfänger Beispiel Nr. 5 (Einfache Längeneinstellung gewichteter gleitender Durchschnitt) bei nahezu höchster (nahe, einfacher Länge) oder nahe niedrigster (nahe, Grundlänge) dann anfangen Monitor Monitor1-1 Ende sonst Monitormonitor10.5 wenn Monitor lt minlength dann minderlth überwachen, wenn Monitor gt maxlength dann Überwachen maxlength Sie können sehen, dass eine andere Variable hinzugefügt wurde, die ein gewichteter gleitender Durchschnitt ist und der Trick hier ist, um das übliche Feld der Länge durch den Algorithmusmonitor zu ersetzen, der die angelegte Länge anpasst. Code-Tricks zu versuchen Wenn Sie eine 20-Periode gewichteten Durchschnitt neben ihm auf dem Subgraphen ein. Sie können sehen, wie der Code über Länge ändernden Durchschnitt ist langsamer an einem bestimmten Zeitraum und schneller in anderen Perioden. Der obige Indikator ist Platz in Teilgraphen Nr. 1 überlagert mit dem Preis. Beispielcode no4 wird in Sub 2 platziert. Sie können den Längenänderungsalgorithmus in Aktion beobachten und sehen, wie er die Geschwindigkeit des gewichteten Durchschnitts beeinflusst. Anfänger Beispiel Nr. 6 (Vermeidung von Division durch Null Fehler) Division durch Null ist ein häufiges Problem in der Programmierung erlebt. Die Antwort ist immer Unendlichkeit, also müssen wir verhindern, dass irgendetwas durch null an erster Stelle geteilt wird. Es gibt zwei Methoden, dies zu tun. Wenn value1 0 dann value1value10.0000000001 Also fügen wir einfach eine winzige Nummer hinzu, die so klein ist, dass es nicht zu viel Unterschied zu den Ausgängen macht. Wenn value1 ltgt 0 dann value2 value3 value1 Dies zwingt den Computer zu fragen, ob der Wert1 0 ist oder nicht, bevor er seine Berechnungen durchführt. 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 Nr7 (Wie benutzt man Fisher Transform)

No comments:

Post a Comment