Zentrierte Gleitende Durchschnittliche Einfache Sprache


Lernen EasyLanguage amp PowerLanguage 8211 Lektion 05: Text und Trendlinien Aufzeichnen der täglichen Extremwerte mit einem Indikator Das Ziel für diese Lektion ist, etwas mehr Programmierung zu tun und eine Studie zu erstellen, die die täglichen Extremwerte eines Symbols verfolgt. Wenn Sie haven8217t lesen Sie die vorherigen Lektionen, schlage ich vor, Sie beginnen am Anfang mit Lektion 01. wie diese Lektion Grundlagen in früheren Sitzungen abgedeckt werden. Wie ich das Ziel schrieb, ist eine Studie, die in der Lage ist, die täglichen Extreme zu verfolgen und sie auf dem Chart anzuzeigen. Wir wollen in der Lage sein, die aktuellen Extreme für den Tag zu sehen und zeigen auch gestern8217s Extreme auf today8217s Daten. Let8217s nehmen einen Moment in Anspruch, um zu prüfen, was wir für diese Studie brauchen und wie wir die Ziele am besten behandeln wollen: Wir müssen in der Lage sein, den höchsten und niedrigsten Tiefstand für jeden Tag zu finden, den die Studie Trendlinien verwenden sollte, um die Extremwerte von gestern zu zeigen In der Lage sein, das Erscheinungsbild auf dem Diagramm über Eingänge zu ändern, sollte die Studie Text auf dem Diagramm anzeigen, das die Zeilen beschriftet. Das gibt Ihnen schon eine Vorstellung davon, was wir heute sehen müssen. Abgesehen davon, dass eine nützliche Studie oder Rahmen für zukünftige Änderungen, Zeichnung Text und Trendlinien und Aktualisierung werden sie im Mittelpunkt dieser Studie. Multicharts und Tradestation bieten Funktionen, die die täglichen High-und Low, aber aus verschiedenen Gründen, das ist nicht das, was wir hier verwenden möchten. Stattdessen erstellen wir zwei Tracking-Variablen, die den aktuellen höchsten und niedrigsten Wert speichern. An einem neuen Tag müssen diese Variablen zurückgesetzt und ihr Wert in einem zweiten Satz von Variablen gespeichert werden. Wir müssen dies tun, um die neuen Extreme verfolgen zu können und die Trendlinien, die die Werte von gestern8217 zeigen, zu zeichnen. Simple Program Logic Wir haben skizziert, was das Programm tun sollte, let8217s erstellen eine kurze Liste mit den Schritten, die wir für leichtere Referenz tun müssen: verfolgen täglich hoch und niedrig mit einer Variablen im Laufe des Tages speichern die vorherigen täglichen Extreme an einem neuen Tag und Reset Die Tracking-Variablen zeichnen Text und Trendlinien für die vorherigen Extreme auf today8217s Daten und aktualisieren Sie es mit jeder neuen Bar hinzufügen Eingänge, um in der Lage, bequem ändern Sie den Text und Trendlinie sieht (Farbe, Größe etc.) Diese doesn8217t aussehen wie zu viel Arbeit, so Let8217s damit beginnen, indem Sie einen neuen Indikator in PowerLanguage Editor. Geben Sie ihm einen aussagekräftigen Namen, also können Sie ihn leicht später finden. Ich werde mit dem grundlegenden Code für das Zeichnen von Text und Trendlinien beginnen und ich werde dafür sorgen, dass der Code in beiden Multicharts und Tradestation funktioniert. Dies bedeutet, dass ich einige reservierte Worte für Text und Trendlinie Manipulation, die speziell Multicharts bietet weglassen, aber wir können einen Blick auf diese später, da sie nicht benötigt werden, um die gewünschten Ergebnisse hier zu produzieren. Let8217s einen Blick auf den Code für die Erstellung von Trendlinien und Text jetzt. Trendlinien Jede Trendlinie, die Sie per Code erstellen, verfügt über eine eindeutige trendline-spezifische ID, mit der Sie die Trendlinie später ändern können. Sie don8217t haben Sorgen über die Schaffung der IDs wie die Software wird das für Sie tun. Das einzige, was wir tun müssen, ist, speichern Sie die Trendline-ID in eine Variable, so können wir es später im Code abrufen. Trendlinien werden mit dem reservierten Wort 8220TLNew8221 gezeichnet, dem in Klammern sechs Trendlinienparameter folgen. Wenn Sie eine Trendlinie in Echtzeit oder in einem Programmiercode zeichnen wollen, müssen Sie mindestens zwei Ankerpunkte 8211 einen Startpunkt und einen Endpunkt haben. Sie sind jedoch nicht darauf beschränkt, die Trendlinie innerhalb dieser beiden Punkte zu halten, sondern können sie nach links und rechts auf unendlich erweitern. Warum benötigt 8220TLNew8221 sechs Parameter Die sechs Trendline-Parameter sind erforderlich, um diese beiden Ankerpunkte in einem Diagramm anzugeben. Beim Betrachten eines Diagramms kann der Ort jedes Wertes mit drei Parametern beschrieben werden: Datum, Uhrzeit und Preis des Wertes. Da Sie zwei Ankerpunkte benötigen, hat das reservierte Wort 8220TLNew8221 also sechs Parameter. 8220TLID8221 ist eine Variable, die die trendline-spezifische ID enthält, die anderen sechs Variablen werden ordnungsgemäß benannt, um zu zeigen, welcher Parameter das repräsentiert. Let8217s erstellen einen einfachen Code, der eine Trendlinie zeichnet und das Ergebnis auf dem Diagramm betrachtet. Ich habe den Trendline-Code innerhalb einer einmal-Anweisung, um sicherzustellen, dass der Code nur eine Trendlinie erstellt. Das ist, was der oben genannte Code auf meinem Diagramm zieht: Sie müssen zum Anfang des Diagramms gehen und Sie sollten die Trendlinie dort finden. Die Farbe wird wahrscheinlich orange, da dies die Standard-Farbe, die das Programm verwenden wird, aber don8217t Sorge, wenn Sie eine andere Farbe auf Ihrem Ende sehen sollten. Mit ein paar zusätzlichen reservierten Wörtern werden wir die Farbe, Größe und Stil der Trendlinie ändern. Der erste Parameter für die reservierten Wörter, die die Trendlinie ändern, ist immer die trendline-spezifische ID 8211, sonst würde das Programm nicht wissen, welche Trendlinie Sie ändern möchten. 8220TLSetColor8221 ändert die Trendlinienfarbe, 8220TLSetSize8221 wird verwendet, um die Trendlinienbreite von 0 bis 6 zu ändern, und 8220TLSetStyle8221 legt den Stil entsprechend der folgenden Liste fest. Während es doesn8217t Angelegenheit, wenn Sie die Zahlen oder die reservierten Wörter wie 8220ToolSolid8221, 8220ToolDashed8221 und so weiter für das Ändern des Stils verwenden, benutze ich die Zahlen während dieser Lektion. Das Hinzufügen der drei reservierten Wörter und ihrer Parameter zu dem grundlegenden Trendline-Code wird dies ändern: Die Codezeilen von oben erzeugen dieses Ergebnis, aber spielen Sie bitte mit dem Code ein wenig, indem Sie die Farbe, die Größe und den Stil der Trendlinie ändern. Versuchen Sie auch, den Anfangs - oder Endwert zu ändern, um eine absteigende und aufsteigende Trendlinie zu erzeugen. Ähnlich wie bei Trendlinien benötigt Text einen Ankerpunkt, aber Sie brauchen nur einen für einen Text anstelle von zwei für eine Trendlinie. Neben den drei Parametern für Datum, Uhrzeit und Preis der Textposition hat das reservierte Wort 8220TextNew8221 einen vierten Parameter für die Textzeichenkette, die im Diagramm erstellt werden soll. Eine weitere Ähnlichkeit besteht darin, dass jedes Textobjekt eine text-spezifische ID aufweist, mit der Sie die Textausrichtung, ihre Position oder die Textzeichenfolge ändern können. In seiner Grundform sieht der EasyLanguage-Code zum Erstellen eines neuen Textobjekts in einem Diagramm wie folgt aus: Let8217s fügen einen einfachen Text neben der grundlegenden Trendlinie hinzu, die wir oben erstellt haben. Dies ist, wie es auf Ihr Ende schauen könnte: Das erste Ergebnis ist nicht sehr ansprechend, da der Text auf der Mitte der Leiste platziert wird und daher it8217s auf der Trendlinie. Mit einigen reservierten Worten für die Textmanipulation können wir das Ergebnis ändern und die Sichtbarkeit erhöhen. Neben dem Ändern der Farbe und Größe können wir auch die Textplatzierung in Bezug auf die Bar und den Preis, auf den sie gesetzt sind, ändern. Dies geschieht unter Verwendung des reservierten Wortes 8220TextSetStyle8221, das aus drei Parametern 8211 die text-spezifische ID und die horizontale und vertikale Platzierung des Textes, den Sie haben wollen, hat. Der horizontale Platzierungsparameter kann drei Werte haben: 0 8211 platziert den Text rechts von der Leiste 1 8211 platziert den Text links von der Leiste 2 8211 Der Text wird auf die Leiste zentriert Der vertikale Platzierungsparameter kann drei haben Auch andere Werte: 0 8211 platziert den Text unter dem angegebenen Preis 1 8211 wird der Text über dem Preiswert liegen 8211 wird den Text auf den Preis zentrieren Hinzufügen der reservierten Wörter, um Farbe, Größe und Stil zu verändern, verändert das Erscheinungsbild Und ermöglichen ein klareres Ergebnis. Wenn Sie in Tradestation arbeiten, werden Sie feststellen, dass 8220TextSetSize8221 nicht unterstützt wird. Die Studie wird jedoch gut funktionieren, ohne es, so einfach don8217t es in Ihrem Code. Der obige Code wird den Text rechts von der Trendlinie ausrichten, seine Farbe in Rot ändern und ihn durch Vergrößern der Textgröße besser sichtbar machen. Erstellen des Indikators Nachdem wir nun wissen, wie man Text und Trendlinien in einem Diagramm richtig formatieren kann, können wir zurück zum Aufbau des Indikators gehen, der die täglichen Extreme verfolgt. Gemäß der oben beschriebenen Logik müssen wir in der Lage sein, den höchsten und niedrigsten Tiefpunkt in der Tabelle zu finden. Eine ordentliche Methode, dies zu tun, ist die Verwendung von zwei Variablen, die aktualisiert werden, wenn das Diagramm eine neue hoch oder niedrig macht. Der Trick ist, dass bei Deklaration und Reset stellen wir einfach den Wert der Variable auf 8220High8221 und 8220Low8221 der Leiste. Für den Reset-Teil verwenden wir eine einfache Anweisung 8220if8230then begin8230end8221. Die Auswertungsbedingung wird wahr, wenn das Datum auf dieser Leiste anders ist als das Datum für die vorhergehende Leiste. Dies ist der Fall für die erste Bar von jedem Tag. Wenn ein neuer Balken mit einem 8220High8221, der höher ist als der Wert 8220DayHigh8221, kommt, wird die Variable 8220DayHigh8221 mit dem neuen Wert aktualisiert. Auf diese Weise können wir leicht verfolgen die höchste hoch und niedrigste niedrig, wie der Tag entwickelt. Das Hinzufügen von zwei Diagrammen zur Ausgabe des Werts für die beiden Tracking-Variablen zeigt, ob der Code wie beabsichtigt funktioniert. Nach dem obigen Bild scheint das tägliche Tracking zu funktionieren. Let8217s beenden diese Studie durch das Entfernen der Plots und die Schaffung von zwei Trendlinien, die die bisherigen täglichen Extremwerte auf today8217s Daten anzeigen. Darüber hinaus wollen wir zwei Textobjekte erstellen, die die beiden Trendlinien beschriften und korrekt ausrichten. Ich habe ein paar Eingaben, die verwendet werden, um den Text und Trendlinie Aussehen auf einem Diagramm ändern können erstellt. Auf diese Weise ist das Ergebnis einfacher zu ändern und Sie don8217t müssen immer Änderungen im Code direkt vornehmen. Wir werden nur die Eingaben später im Code verweisen, wenn wir den Text und die Trendlinien erstellen. Neben den Variablen, die wir vorher verwendet haben und Sie bereits wissen, habe ich vier Variablen für die Text - und Trendline-IDs hinzugefügt. Die beiden Variablen 8220PrevDayHigh8221 und 8220PrevDayLow8221, die verwendet werden, um den Wert der täglichen extremen Tracking-Variablen zu speichern, bevor sie zurückgesetzt werden. Die Namen, die ich verwendete, sind willkürlich und Sie können verschiedene verwenden, natürlich. Ich verwendete sie gerade, weil der Name mir eine Idee über den Zweck der Variablen bereits gibt und hilft mir mit der Lesbarkeit meines Codes. Die boolesche Variable 8220HaveTextAndLines8221 wird im Code verwendet, um zu prüfen, ob mindestens ein Satz von Text - und Trendlinien auf dem Diagramm vorhanden ist. Sie wird mit der ersten Datumsänderung auf true gesetzt, und dies ist auch der Punkt, an dem die ersten Trendlinien und Texte erstellt werden. Nachdem die Eingänge und Variablen vorhanden sind, können wir mit dem Reset-Bedingungsteil beginnen. Wenn die Reset-Bedingung auf dem ersten Balken von jedem Tag wahr wird, müssen wir die Tracking-Variablen von gestern8217s in 8220PrevDayHigh8221 und 8220PrevDayLow8221 speichern, damit wir diese für unsere Trendlinien verwenden können. Der Code setzt den booleschen Wert 8220HaveTextAndLines8221 auf true und erzeugt zwei Trendlinien und zwei Textobjekte mit den Eingaben von oben. Jeder Text und Trendlinie hat seine eigene spezifische ID, die wir später im Code verwenden können, um die Endpunkte und den Speicherort für die aktuelle Leiste zu aktualisieren. Der endgültige Codeteil verarbeitet die tägliche extreme Verfolgung und Aktualisierung der Textposition und der Trendlineendpunkte. Die Aktualisierung des Trendline-Endpunkts erfolgt über 8220TLSetEnd8221. Dieses reservierte Wort hat vier Eingaben: Eines für die Trendline-spezifische ID, die Sie aktualisieren möchten, gefolgt von Datum, Uhrzeit und Preis für den Endpunkt. Der neue Textort wird über 8220TextSetLocation8221 festgelegt. Dieses reservierte Wort kommt auch mit vier Parametern. Der erste Parameter ist die text-spezifische ID. Die verbleibenden drei sind das Datum und die Uhrzeit der Leiste, wo Sie den Text platzieren möchten, und den Preis, an dem sich der Text befinden soll. Wir verwenden die boolesche Variable 8220HaveTextAndLines8221, um sicherzustellen, dass wir nur versuchen, einen Text oder eine Trendlinie zu aktualisieren, wenn it8217s sichergestellt haben, dass mindestens ein Satz von Text und Trendlinien vorhanden ist. Der Versuch, nicht vorhandene Text - oder Trendlinien zu aktualisieren, kann zu Problemen führen, so dass es besser ist, ein Sicherheitsnetz zu erstellen. Let8217s überprüfen, ob der Code tut, was wir beabsichtigten, es zu tun. Laden Sie die Anzeige in ein Diagramm und überprüfen Sie, ob zwei Trendlinien und Textobjekte für jeden Tag (außer dem ersten Tag auf dem Diagramm) zu sehen sind, die die vorherigen Tag-Extremwerte korrekt anzeigen. Fazit und Hausaufgaben Nach dem Bild oben scheint der Code zu tun, was wir im Sinn hatten. Es gibt zwei Trendlinien und Textobjekte für jeden Tag und sie werden korrekt die vorherigen day8217s Extreme angezeigt. Dies schließt diese Lektion über Text und Trendlinien und ich hoffe, Sie haben es genossen und etwas gelernt, die Sie in Ihrer eigenen Programmierung verwenden können. Als eine Ergänzung zu dieser Lektion und als eine gute Übung ändern diesen Code, so dass die aktuelle tägliche Extrem ist richtig mit dem Text und Trendlinien angezeigt. Als Tipp müssen Sie das 8220TLSetBegin8221 reservierte Wort dafür verwenden. Dies funktioniert ähnlich wie das reservierte Wort 8220TLSetEnd8221, nur dass Sie den Trendline-Startpunkt mit diesem reservierten Wort angeben. Ein weiterer Tipp ist, dass Sie möglicherweise das Startdatum und die Uhrzeit für die aktuellen day8217s Trendlinien mit Variablen speichern müssen. Sie müssen auch einige Positionen innerhalb des Codes zu ändern, so dass die Text-und Trendlinien den richtigen Wert für die Extreme und don8217t leiden unter einer Verzögerung von einer Bar. Das Ergebnis der Änderungen könnte so aussehen: Falls Sie Schwierigkeiten mit der Änderung der Arbeit haben, können Sie hier posten oder senden Sie mir Ihren Code und ich gebe Ihnen einen Hinweis. Wie immer freue ich mich auf Feedback oder Eindrücke der von Ihnen erstellten Indikatoren. Wir sehen uns in der nächsten Lektion. Ich habe versucht, dies in Tradesation 9.1 aber nicht woking. Bitte raten, was HighTLColor fehlt (dunkelgrün), LOwTLColor (rot), TLStyle (1), HighTextColor (dunkelgrün), LowtextColor (rot), Textsize (10) Variablen: VertTxtP1 (2), 0-unten. 1-oben, 2-Mitte des angegebenen Wertes HorizTxtPl (0), 0-rechts. 1 links. 2 8211 Zentrum auf dem angegebenen bar TxtID (-1), TLID (-1) eine Trendlinie die sich über 11 bar HaveTextAndLines (false), DayHigh (hoch), DayLow (niedrig), PrevDayHigh (0), PrevDayLow (0) zeichnen , HiTxt (-1), LoTxt (-1), HITL (-1), Lotl (-1) Wenn Datum Datum 1 dann speichern vorherigen Daus Extremen beginnen, bevor sie PrevDayHigh DayHigh PrevDayLow DayLow DayHigh hoch DayLow niedrig HITL Tlnew (Datum restting, Zeit, PrevDayLow) Tlsetstyle (LoTL, TLStyle) Tlsetstyle (HiTL, TLStyle) Tlsetstyle (HiTL, TLStyle) TTLTeTLT (TTL, TLStyle) TextNeu (Datum, Uhrzeit, PrevDayLow. Datum, Uhrzeit, PrevDayLow) Textsetcolor (HiTxt. HighTextColor) Textsetstyle (HiTxt. HorizTxtPl. TextNew) LoTxt. HorizTxtPl. VertTxtP1 Wenn HaveTextAndLines dann Tlsetend (HITL, Datum, Uhrzeit, PrevDayHigh) Tlsetend (Lotl, Datum, Uhrzeit, PrevDayLow) Textsetlocation (HiTxt. Datum, Uhrzeit, PrevDayHigh) Textsetlocation (LoTxt, Datum, Uhrzeit, PrevDayHigh) Wenn High gt DayHIgh dann DayHigh High Wenn Low lt DayLow dann DayLow Niedrig Ich glaube, ich habe es .. Bitte sehen Sie korrigiert. 9.1 HighTLColor (dunkelgrün), LOwTLColor (rot), TLStyle (1), HighTextColor (dunkelgrün), LowtextColor (rot), Textsize (10) Variablen: VertTxtP1 (2), 0-unten. 1-oben, 2-Mitte des angegebenen Wertes HorizTxtPl (0), 0-rechts. 1 links. 2, 8211 Mitte auf der angegebenen Leiste HashTextAndLines (false), DayHigh (high), DayLow (low), PrevDayHigh (0), PrevDayLow (0), HiTxt (-1), LoTxt (-1) Lotl (-1) Wenn Datum Datum 1 dann speichern vorherigen Daus Extremen beginnen, bevor restting sie PrevDayHigh DayHigh PrevDayLow DayLow DayHigh hoch DayLow niedrig HITL Tlnew (Datum, Uhrzeit. PrevDayHigh. Datum, Zeit, PrevDayHigh) Tlsetcolor (HITL, HighTLColor) Tlsetstyle (HITL (LoTL, TLStyle) LTL TLNew (Datum, Uhrzeit, PrevDayHigh. 8220PrevDayHi8221) TexTextColor (HiTxt, HighTextColor) LoTLT TextNew (Datum, Uhrzeit, (LoTL, Datum, Uhrzeit, PrevDayLow) Textsetlocation (HiTxt, Datum, Uhrzeit, PrevDayLow) Textsetlocation (LoTxt , Datum, Uhrzeit, PrevDayLow) Wenn High gt DayHIgh dann DayHigh High Wenn Low lt DayLow dann DayLow Low Phanu, in Ihrem ersten Code gibt es mehrere Tippfehler, die Fehlermeldungen im Compiler zu erhöhen. Der zweite Code hat nur ein Problem, die Zeile 8220If Datum Datum 1 dann8221 in Ihrem Code sollte 8220If Datum Datum 1 dann8221. Aber das konnte einfach beim Kopieren und Einfügen geschnitten werden. Grüße, ABC Tole Sag 18. November 2014 um 9:50 Uhr - Antwort Thx für die info8230.just fragen, ob jemand die Trendlinie weg von der genauen Position (zZ) wie highlow 8211 zeichnen möchte, zum Beispiel, um Trendlinien 2 oder 3 Punkte anzuzeigen (Eine bestimmte Entfernung), was die Parameter sollten dann aussehen, Bitte lassen Sie mich wissen. Freue mich von Dir zu hören. Ja, Sie können den aktuellen Preis einer bestimmten Trendlinie mit TLGetValue (TLID, Datum, Uhrzeit) erhalten. Dabei ist TLID die ID für die Trendlinie und Datum und Uhrzeit sind die Werte für die zu prüfende Leiste. Wenn Sie mit Multicharts arbeiten, können Sie auch TLGetValueBN (TLID, CurrentBar) verwenden, um den Preis Ihrer Trendlinie an der aktuellsten Leiste zu erhalten. Jetzt müssen Sie nur überprüfen, ob die Schließung innerhalb von X-Zecken erfolgt (was auch immer Sie als nahe legen) Ihres Trendline-Wertes, um einen Alert mit dem reservierten Wort Alert auszulösen (8220Die Warnmeldung würde in die Anführungszeichen setzen8221). Tole Sag 26. November 2014 um 05:07 - Antworten Ich habe eine Frage zu TLNew (TrendLine). I8217m fragen, was die andere Option (zur Verfügung) anstelle von TL MultiCharts verwenden, um eine Zeile (auf einem Diagrammfenster über PowerLanguage) angezeigt wird, die es doesn8217t get removeddeleted erhalten, wenn jemand 8220Remove alle Drawings8221 auf dem Diagramm verwendet. Lass es mich wissen, bitte. Hallo, I8217m frage mich, wie kann ich Feiertage oder SamstagSonntag (schreiben Sie es in PL), so dass, wenn der Markt offen nach dem schließenden Tag, versteht es, wie Highlow korrekt zu zeichnen ( Herauszufinden, ob der Tag zuvor war eine regelmäßige Arbeitssitzung oder nicht, dh Thanksgiving). Lass es mich wissen, bitte. Thx, Noch einmal, ich möchte Ihnen für alle Ihre Ratschläge amp Lehre danken in diesem Jahr Frohe Feiertage für Sie amp family8230. Hi Tole, Dank für die Wünsche und frohe Feiertage zu Ihnen und zu Ihrer Familie auch. DayOfWeek ist das reservierte Wort, das Sie Samstage oder Sonntage erkennen lässt. Für Ferien wird es komplexer, da Sie höchstwahrscheinlich erstellen komplexen Code, um mit allen potenziellen Feiertagen (entweder hart Code die Termine oder die Regeln für jeden Urlaub). Grüße, ABC I8217m frage mich nur, wenn Sie können Sie bitte lassen Sie mich bitte wissen, wie ein TEXT oder LABEL, die zu einer PLOT-Zeile auf der linken Seite der PLOT angezeigt wird angezeigt werden soll. Thx Hinweis 8211 Ich don8217t wollen TEXTNEW verwenden. Tole, kann dieses can8217t ohne Textbeschriftung und TextNew erfolgen. Es sei denn, Sie möchten den Namen nur in der Statuszeile anzeigen. Für diesen Blick, wie man Zeichenfolgen in der Multicharts Hilfe. Hallo, vor allem danke für den kostenlosen Unterricht, den ich Powerlanguage MC verwende und folgendes kopierte: Value1 TLNEW (Datum 10, Uhrzeit 10, Schließen, Datum, Uhrzeit, Schließen) plot1 (Wert1) Allerdings statt der schönen 10-Balken-Linie Ich erhalte 3 horizontale Linien ausgehend von den verschiedenen Stäben und eine andere 4. eine, die wie eine gleitende mittlere Linie wirkt. Würden Sie wissen, was das Problem sein könnte Vielen Dank im Voraus :), Hallo Wouter, sind Sie herzlich willkommen. Der Code Sie posted würde zeichnen eine neue Trendlinie auf jeder Bar und you8217d auch die ID der letzten gezeichnet Trendlinie. So wird die Handlung höchstwahrscheinlich um eins mit jeder Bar vorrücken. Wenn Sie herausfinden könnten, was Sie zu erreichen versuchen, könnte ich in der Lage, Sie in die richtige Richtung zeigen. Grüße, ABC Hallo ABC, vielen Dank für die Antwort Meine Hauptsache ist, Zeichnung Trendlinien vollständig zu verstehen, um das ganze Konzept zu bekommen. Scheint es kompliziert, eine gute Trendlinie zu zeichnen. Ich kopierte mehr von Ihrem Code Beispiele in dieser oben genannten Lektion, aber nichts passiert in meinem MC. Für den Code in meinem Beispiel, sagen wir, wenn es eine längerfristige Ausbruch Ich wünsche für eine horizontale Linie die Größe der höchste High-Funktion. Wert1 TLNEW (Datum 15, Uhrzeit 15, Schließen, Datum, Uhrzeit, Schließen) TLSetcolor (Wert1, rot) TLSetize (Wert1, 2) TLSetstyle (Wert1, 2) IF C gt Höchstwert, Ps Das oben genannte kompiliert gut in meinem powerlanguage Herausgeber aber gibt kein Resultat in meinen Diagrammen. Dank sehr muchh wieder für das Helfen ich, sind Plot1 und TLNew nicht korreliert, sie sind zwei unabhängige reservierte Wörter für zwei total verschiedene Sachen. Aus Ihrem Code scheint es, dass Sie versuchen, die Trendlinie mit Plot1 zu zeichnen, aber dies ist nicht möglich. Allerdings könnten Sie Ihren Code ändern, um die Trendlinie zu zeichnen, wenn die Bedingung 8220if c höchsten (High, 10) 18221 wird mit einer 8220if8230 dann begin8230end8221 Anweisung erfüllt, die hier in PowerLanguage Lektion 4 erklärt wird. Wenn ich den Code ohne die letzte Zeile verwende, zeichnet er Trendlinien auf jeder Leiste (auch einschließlich der letzten Zeile, die es tun wird, aber dann wird es auch eine Linie zeichnen), also bin ich nicht sicher, was Sie mit 8220doesn8217t geben irgendwelche Ergebnisse 8221 bedeuten . Hinterlassen Sie einen Kommentar Abbrechen replyCopy 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 Summierung 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 der Faktor auf 0,5 gesetzt ist, addiert er 50 des langsamen Mittelwerts bis 50 des schnellen Durchschnitts und erzeugt einen gemischten Durchschnitt der beiden Perioden. Um die maximalen Werte des langsamen Durchschnittsfaktors auf 1 zu sehen, können Sie den Gesamtfaktor des Faktors auf 0 setzen, um die Gesamtheit des schnelleren Mittels zu sehen. Sie können mit Werten wie 0,1 und 0,9 experimentieren, um die Auswirkungen der 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 man 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 Nr. 5 (Einfache Längenanpassung gewichteter gleitender Mittelwert) wenn nah am höchsten (Schließen, Basislänge) oder nahe am niedrigsten (Schließen, Basislänge) und dann Monitormonitor starten1-1 Ende sonst Monitormonitor10.5 Wenn Monitor lt Min. Leitung dann Min Monitor maxlength Sie können sehen, dass eine andere Variable hinzugefügt wurde, die ein gewichteter gleitender Durchschnitt ist und der Trick hier ist, das übliche Feld der Länge durch den Algorithmusmonitor zu ersetzen, der die angewandte Länge anpasst. 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. Der Beispielcode no4 befindet sich in Teil 2. 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 (Verhinderung einer Division durch Null-Fehler) Division durch Null ist ein häufiges Problem bei der Programmierung. 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 value1 0 dann value1value10.0000000001 So fügen wir einfach eine kleine Zahl hinzu, die so klein ist, dass es nicht zu viel Unterschied zu den Ausgängen macht. Wenn value1 ltgt 0, dann value2 value3 Wert1 Dies zwingt den Computer zu fragen, ob der Wert1 0 ist oder nicht, bevor Sie seine Berechnungen. 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 Nr. 7 (Verwendung von Fisher Transform) EasyLanguage amp PowerLanguage Tutorial 8211 Lektion 02: Codierung ein gleitender Durchschnitt Erstellen der ersten realen Anzeige und Ausweiten der Grundlagen Nachdem Sie sich mit dem PowerLanguage Editor im vorherigen PowerLanguage Tutorial 8211 Lektion 01 vertraut gemacht haben, Aufbau auf dieser Grundlage. 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 gibt. 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. We don8217t want to write code for every possible length input for the summation. This means the code needs to be able to calculate all possible length inputs on its own. Do you already have an idea how we could accomplish this The answer is that we need an iteration statement that can be executed repeatedly each bar for a specific number of times (our length input). I know this sounds complicated, but it will be quite simple. We will use the 8220for loop8221 for this task. This loop repeats one or more statements for a user defined, specific number of iterations. EasyLanguage code is executed from top to bottom and usually from left to right. Once one code line is executed, the next line is executed and so on. In case the code line is the beginning of a loop, the code lines within the loop will be executed for the specified amount. Only when the loop is finished the next code line after the loop is executed. A for loop looks and works the following way: A numerical variable will be incremented (or decremented) with every cycle through the loop from its start value to its end value. This image displays a basic for loop with a numeric counter variable (ii in this case) and the initial value of 0. The iterations will be done ten times until the counter has reached the value of 9. Then the loop block is executed the last time and exited. You don8217t have to increment the counter value yourself, the loop code takes care of that. The current counter value will be stored in the counter variable. So you can access it for every loop cycle and use it for your calculations. This will come in handy for calculating our average. The for loop can also decrement the counter with every iteration. The initial value in this example is 9, but the loop is executed ten times until it is exited, too. The counter simply decreases with every iteration by one until it reaches 0. In Easylanguage you can reference data-related reserved words, variables and functions from a previous bar very easy. Using a number within square brackets following the reserved word, calculation or variable will return the value for this particular bar. The number grows from the current bar (which you reference with 0) in increments of one. When you want to store the value of the previous bar8217s close within a variable called PrevCloseValue you can do it like this: We want to build our average using the Close for the last X bars. Where X is an input to allow for more flexibility. You already know that we want to use a loop for that and we just found out how we can reference Close values for the previous bars. This should be enough to write the code for the main part of our indicator. Let8217s continue by creating the input and variable sections. You might recall from the last lesson that using meaningful variable names is a good coding practice and can save you a lot of troubles later. We need to declare one input so we are able to change the length for our average on the chart. Besides that we want one variable that holds the summation, one to hold the counter value and a last one to store the average value. For outputting the value on the chart we will use the reserved word Plot. This is followed by a number so you are able to distinguish between different plots. Which is needed as you can use up to 999 plots in Multicharts. The plot reserved word can have several parameters like color, plot size and some more. We will keep it simple here and use Plot1 with just two parameters 8211 the first for the numerical expression to be plotted and a second one for the name we want to assign to the plot. The final code will look something like this: After compiling this code we are almost ready to load our indicator to a chart in Multicharts. Let8217s just take a look at the properties of the indicator first. You can find them under - gt File - gt Properties or by clicking on the Properties symbol in the menu (it should be the one left to Compile). Under the Style tab you can change the color, line style and thickness for the plot you created. If you go to the properties tab there are several options to set or check, but for now you might only want to make sure the option 8220Same As Symbol8221 is checked. This will make sure the indicator is applied directly on your chart rather than a subchart. Now you are ready to apply the indicator to a chart of your choice. When you have a chart open in the Multicharts main window you can simply insert the indicator to this chart. When the indicator is applied the outcome should be similar to the above screenshot. However this doesn8217t seem right as this doesn8217t look like a moving average at all. The price series is almost a flat line and the plot coming from our indicator is only rising. With the E-Mini SampP 500 being in the area of 18217800 a 10 bar moving average value for this market of 182179528217647 is obviously not correct. This points towards a problem in our calculations. Do you have an idea what the code is missing It actually is just a little, but very important detail we forgot to add. We need to add something in front of the for loop. The loop simply keeps on adding the values for the previous ten bars with every new bar. This is fine and we want it to do exactly this, but we don8217t want it to add the new values to the old values. In other words you need to make sure CloseValueSum doesn8217t still hold the old values when the for loop starts. With adding one line to the code the outcome is exactly what we wanted to achieve. We can also change the indicator8217s appearance on the chart. Using the style tab under 8220Format Study8221 we can alter the visual outcome like line style, color and thickness. Under the 8220Inputs8221 tab you will find the input you created and the default setting for the length. By loading a second instance of the study and using a different color and length you can confirm that the study gives a different outcome with a different length input. If you are having trouble finding the correct fix feel free to contact us with your solution and we will try to help you in a timely manner. I am afraid just asking for the solution won8217t work though, you need at least be able to show that you put some effort into finding the solution, too. As a last hint you can take a look at other average indicators or functions and find some inspiration for the missing link there. I hope you enjoyed this Powerlanguage tutorial lesson and I am looking forward to working with you in the next one.

Comments