Moving Average Einfach Code
MetaTrader 4 - Experts Moving Average - Experte für MetaTrader 4 Der Moving Average Experte für die Bildung von Handelssignalen verwendet einen gleitenden Durchschnitt. Das Öffnen und Schließen von Positionen erfolgt, wenn der gleitende Durchschnitt den Preis an der kürzlich gebildeten Bar erfüllt (Barindex entspricht 1). Die Losgröße wird nach einem speziellen Algorithmus optimiert. Der Gutachter analysiert die Übereinstimmung zwischen dem gleitenden Durchschnitt und dem Marktpreisdiagramm. Die Überprüfung wird von der Funktion CheckForOpen () durchgeführt. Wenn der gleitende Durchschnitt auf die Bar trifft, so dass der erste höher ist als der offene Preis, aber niedriger als der Schlusskurs, wird die BUY-Position geöffnet. Wenn der gleitende Durchschnitt auf die Bar trifft, so dass ersterer niedriger ist als der offene Preis, aber höher als der Schlusskurs, wird die SELL-Position geöffnet. Das im Experten verwendete Money Management ist sehr einfach, aber effektiv: Die Kontrolle über jedes Positionsvolumen wird in Abhängigkeit von den bisherigen Transaktionsergebnissen durchgeführt. Dieser Algorithmus wird durch die Funktion LotsOptimized () implementiert. Die Basis-Losgröße wird auf Basis des maximal zulässigen Risikos berechnet: Der Parameter MaximumRisk zeigt für jede Transaktion den Grundrisikoprozentsatz an. Sie besitzt üblicherweise einen Wert zwischen 0,01 (1) und 1 (100). Wenn beispielsweise die freie Marge (AccountFreeMargin) 20.500 beträgt und die Regeln des Kapitalmanagements das Risiko von 2 verwenden, wird die Grundlosgröße 20500 0,02 1000 0,41 betragen. Es ist sehr wichtig, die Losgrößengenauigkeit zu kontrollieren und das Ergebnis mit den zulässigen Werten zu normalisieren. Normalerweise sind Fraktionen mit einer Stufe von 0,1 erlaubt. Eine Transaktion mit einem Volumen von 0,41 wird nicht durchgeführt. Zur Normalisierung wird die NormalizeDouble () - Funktion mit Genauigkeit bis zu einem Zeichen nach dem Punkt verwendet. Dies führt zu der Grundmenge von 0,4. Die Basispreisberechnung auf Basis der freien Marge erlaubt es, die Betriebsvolumina je nach Handelserfolg zu erhöhen, d. h. den Handel mit Reinvestitionen zu handeln. Dies ist der grundlegende Mechanismus mit obligatorischem Kapitalmanagement zur Steigerung der Effizienz des Handels. DecreaseFactor ist das Ausmaß, in dem die Losgröße nach dem unrentablen Handel reduziert wird. Normale Werte sind 2,3,4,5. Wenn die vorhergehenden Transaktionen unrentabel waren, verringern sich die nachfolgenden Volumina um einen Faktor von DecreaseFactor, um durch die unrentable Periode zu warten. Dies ist der Hauptfaktor im Kapitalmanagementalgorithmus. Die Idee ist sehr einfach: Wenn der Handel erfolgreich wächst, arbeitet der Experte mit dem Grundposten, der maximalen Profit macht. Nach der ersten unrentablen Transaktion wird der Experte die Geschwindigkeit reduzieren, bis eine neue positive Transaktion erfolgt. Der Algorithmus erlaubt es, die Geschwindigkeitsreduzierung zu deaktivieren, dafür muss man DecreaseFactor 0 angeben. Die Höhe der letzten aufeinanderfolgenden unrentablen Transaktionen wird in der Handelsgeschichte berechnet. Das Basislos wird auf dieser Basis neu berechnet: Der Algorithmus erlaubt es also, das durch eine Reihe von unrentablen Transaktionen auftretende Risiko effektiv zu reduzieren. Die Losgröße wird am Ende der Funktion obligatorisch auf die minimal zulässige Losgröße überprüft Können die zuvor durchgeführten Berechnungen zu Los 0 führen: Der Experte ist hauptsächlich für den täglichen Arbeitsablauf und im Testmodus bestimmt - für die Durchführung zu engen Preisen. Es wird nur beim Öffnen einer neuen Bar handeln, deshalb werden die Modi der Tick-Modellierung nicht benötigt. Die Messergebnisse sind im Bericht dargestellt. MetaTrader 4 - Indikatoren Gleitende Mittelwerte, MA - Indikator für MetaTrader 4 Der Indikator Moving Average zeigt den mittleren Instrumentenpreis für einen bestimmten Zeitraum an. Wenn man den gleitenden Durchschnitt berechnet, berechnet man den Instrumentenpreis für diesen Zeitraum. Wenn sich der Preis ändert, steigt oder fällt sein gleitender Durchschnitt. Es gibt vier verschiedene Arten von gleitenden Durchschnitten: Simple (auch Arithmetik genannt), Exponential, Smoothed und Linear Weighted. Bewegungsdurchschnitte können für jeden sequentiellen Datensatz berechnet werden, einschließlich der Eröffnungs - und Schlusskurse, der höchsten und niedrigsten Preise, des Handelsvolumens oder anderer Indikatoren. Es ist oft der Fall, wenn doppelte gleitende Durchschnitte verwendet werden. Das Einzige, wo sich verschie - dende Durchschnittswerte verschiedener Typen erheblich voneinander unterscheiden, ist, wenn Gewichtskoeffizienten, die den letzten Daten zugeordnet sind, unterschiedlich sind. Wenn wir von einem einfachen gleitenden Durchschnitt sprechen, sind alle Preise des fraglichen Zeitraums gleich wertig. Exponentielle und linear gewichtete Bewegungsdurchschnitte legen mehr Wert auf die neuesten Preise. Der gängigste Weg zur Interpretation des gleitenden Durchschnitts ist es, seine Dynamik mit der Preisaktion zu vergleichen. Wenn der Instrumentenpreis über seinem gleitenden Durchschnitt steigt, erscheint ein Kaufsignal, wenn der Preis unter den gleitenden Durchschnitt fällt, was wir haben, ist ein Verkaufssignal. Dieses handelnde System, das auf dem gleitenden Durchschnitt basiert, ist nicht entworfen, um Eintritt in den Markt direkt in seinem niedrigsten Punkt und seinem Ausgang direkt auf dem Höhepunkt zur Verfügung zu stellen. Es erlaubt, nach dem folgenden Trend zu handeln: bald zu kaufen, nachdem die Preise den Boden zu erreichen, und zu verkaufen, bald nachdem die Preise ihren Höhepunkt erreicht haben. Simple Moving Average (SMA) Ein einfacher, dh arithmetisch gleitender Durchschnitt wird berechnet, indem die Preise des Instrumentenschlusses über eine bestimmte Anzahl von Einzelperioden (z. B. 12 Stunden) zusammengefasst werden. Dieser Wert wird dann durch die Anzahl dieser Perioden dividiert. SMA SUM (CLOSE, N) N wobei: N die Anzahl der Berechnungsperioden ist. Exponential Moving Average (EMA) Der exponentiell geglättete gleitende Durchschnitt wird berechnet, indem der gleitende Durchschnitt eines bestimmten Anteils des aktuellen Schlusskurses auf den vorherigen Wert addiert wird. Bei exponentiell geglätteten gleitenden Durchschnitten sind die neuesten Preise von mehr Wert. P-Prozentsatz des exponentiellen gleitenden Durchschnitts wird wie folgt aussehen: Wo: CLOSE (i) der Preis des laufenden Periodenabschlusses EMA (i-1) Exponentiell bewegender Durchschnitt des vorherigen Periodenabschlusses P der Prozentsatz der Verwendung des Preiswerts. Gleitender gleitender Mittelwert (SMMA) Der erste Wert dieses geglätteten gleitenden Mittelwertes wird als einfacher gleitender Mittelwert (SMA) berechnet: SUM1 SUM (CLOSE, N) Der zweite und nachfolgende gleitende Mittelwert wird gemäß dieser Formel berechnet: wobei: SUM1 die ist Summe der Schlusskurse für N Perioden SMMA1 ist der geglättete gleitende Durchschnitt des ersten Balkens SMMA (i) ist der geglättete gleitende Durchschnitt des aktuellen Balkens (mit Ausnahme des ersten) CLOSE (i) der aktuelle Schlusskurs N ist Glättungszeitraum. Linearer gewichteter gleitender Durchschnitt (LWMA) Bei gewichteten gleitenden Mittelwerten sind die letzten Daten von größerem Wert als frühere Daten. Der gewichtete gleitende Durchschnitt wird berechnet, indem jeder der Schlusskurse innerhalb der betrachteten Reihe mit einem gewissen Gewichtskoeffizienten multipliziert wird. (I, N) SUM (i, N) wobei: SUM (i, N) die Gesamtsumme der Gewichtskoeffizienten ist. Bewegungsdurchschnitte können auch auf Indikatoren angewendet werden. Das ist, wo die Interpretation der Indikatorbewegungsdurchschnitte ähnlich der Interpretation der Preisbewegungsdurchschnitte ist: wenn der Indikator über seinem gleitenden Durchschnitt steigt, bedeutet das, dass die aufsteigende Indikatorbewegung wahrscheinlich fortfährt: wenn der Indikator unter seinen gleitenden Durchschnitt fällt, dieses Bedeutet, dass es wahrscheinlich weiter nach unten gehen wird. Hier sind die Arten von gleitenden Mittelwerten im Diagramm: Einfacher Moving Average (SMA) Exponentieller Moving Average (EMA) Geschliffener Moving Average (SMMA) Linearer gewichteter Moving Average (LWMA) Kopieren und fügen Sie den Code oben in Ihre Entwicklungsumgebung in Tradestation oder MultiCharts ein Als Anzeige. 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 Minuten-Charts gesetzt werden und die close1 bezieht sich auf die vorherige Bar oder am vorherigen Tag) Wenn Sie getippt close2 es würde 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 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 Minolänge und Monitor dann minlength, wenn Monitor gt maxlength dann 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 no7 (Verwendung von Fisher Transform)
Comments
Post a Comment