Sunday 5 February 2017

Einfache Gleitende Durchschnittliche Quellcode

Moving Average Der Moving Average Technical Indicator zeigt den durchschnittlichen 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: Einfach (auch als Arithmetik bezeichnet), Exponential. Geglättet und gewichtet. Der gleitende Durchschnitt kann 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. Falls wir von Simple Moving Average sprechen. Alle Preise des fraglichen Zeitraums gleich sind. Exponential Moving Average und Linear Weighted Moving Average 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 ansteigt, erscheint ein Kaufsignal, wenn der Kurs 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. 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 Durchschnittswerten im Diagramm: Einfacher Moving Average (SMA) Exponentieller Moving Average (EMA) Glatter Moving Average (SMMA) Linearer Gewichteter Moving Average (LWMA) Sie können die Handelssignale dieses Indikators testen, indem Sie einen Expertenratgeber erstellen Im MQL5-Assistenten. Berechnung Simple Moving Average (SMA) Ein einfacher, dh arithmetisch gleitender Durchschnitt wird berechnet, indem die Preise für den Instrumentenschluss ü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 (i), N) N SUM Summe CLOSE (i) aktuelle Periode enge Preis N Anzahl der Berechnungsperioden. Exponential Moving Average (EMA) Der exponentiell geglättete gleitende Durchschnitt wird durch Addition eines bestimmten Anteils des aktuellen Schlusskurses zum vorherigen Wert des gleitenden Durchschnitts berechnet. Bei exponentiell geglätteten gleitenden Durchschnitten sind die letzten engen Preise von mehr Wert. P-Prozentsatz exponentieller gleitender Durchschnitt wird folgendermaßen aussehen: EMA (CLOSE (i) P) (EMA (i - 1) (1 - P)) CLOSE (i) Einer vorherigen Periode P den Prozentsatz der Verwendung des Preiswertes. Gleitender gleitender Mittelwert (SMMA) Der erste Wert dieses geglätteten gleitenden Mittelwertes wird als einfacher gleitender Mittelwert (SMA) berechnet: SUM1 SUM (CLOSE (i), N) Der zweite gleitende Durchschnitt wird gemäß dieser Formel berechnet: SMMA (i) (I - 1) N SMMA (i) (PREVSUM - SMMA (i - 1) SCHLIESSEN (i)) N Nachfolgende gleitende Mittelwerte werden nach folgender Formel berechnet: N SUM Summe SUM1 Summe der Schlusskurse für N Perioden wird von der vorherigen Bar gezählt PREVSUM geglättete Summe der vorherigen Bar SMMA (i-1) geglättetes gleitendes Mittel der vorherigen Bar SMMA (i) geglättetes gleitendes Mittel der aktuellen Bar (Außer für die erste) SCHLIESSEN (i) gegenwärtig nahe Preis N Glättungsperiode. Nach arithmetischen Umrechnungen kann die Formel vereinfacht werden: SMMA (i) (SMMA (i - 1) (N - 1) CLOSE (i)) N Linearer gewichteter gleitender Durchschnitt (LWMA) Von mehr Wert als mehr frühe Daten. Der gewichtete gleitende Durchschnitt wird berechnet, indem jeder der Schlusskurse innerhalb der betrachteten Reihe mit einem gewissen Gewichtskoeffizienten multipliziert wird: LWMA SUM (CLOSE (i) i, N) SUM (i, N) SUM Summe CLOSE (i) aktueller Schlusskurs SUM (i, N) Gesamtsumme der Gewichtskoeffizienten N Glättungsperiode. Ich habe im Wesentlichen ein Array von Werten wie folgt: Das obige Array ist vereinfacht, Im sammeln 1 Wert pro Millisekunde in meinem realen Code und ich muss die Ausgabe auf einem verarbeiten Algorithmus Ich schrieb, um die nächste Spitze vor einem Zeitpunkt zu finden. Meine Logik schlägt fehl, weil in meinem Beispiel oben 0.36 die wahre Spitze ist, aber mein Algorithmus würde rückwärts schauen und sehen die sehr letzte Zahl 0.25 als die Spitze, als theres eine Abnahme zu 0.24 vor ihm. Das Ziel ist, diese Werte zu nehmen und einen Algorithmus auf sie, die glätten sie ein wenig, so dass ich mehr lineare Werte. (Dh: Id wie meine Ergebnisse curvy, nicht jaggedy) Ive wurde gesagt, um einen exponentiellen gleitenden durchschnittlichen Filter auf meine Werte anzuwenden. Wie kann ich dies tun Es ist wirklich schwer für mich, mathematische Gleichungen zu lesen, gehe ich viel besser mit Code. Wie verarbeite ich Werte in meinem Array, die Anwendung einer exponentiellen gleitenden Durchschnittsberechnung, um sie herauszufordern, um einen exponentiellen gleitenden Durchschnitt zu berechnen. Müssen Sie einige Zustand zu halten und Sie benötigen einen Tuning-Parameter. Dies erfordert eine kleine Klasse (vorausgesetzt, Sie verwenden Java 5 oder höher): Instantiate mit dem Decay-Parameter, die Sie wollen (kann Abstimmung sollte zwischen 0 und 1) und dann mit Average () zu filtern. Beim Lesen einer Seite auf einige mathematische Rekursion, alles, was Sie wirklich wissen müssen, wenn Sie es in Code ist, dass Mathematiker gerne Indizes in Arrays und Sequenzen mit Indizes schreiben. (Theyve einige andere Anmerkungen außerdem, die nicht helfen.) Jedoch ist die EMA ziemlich einfach, da Sie nur an einen alten Wert erinnern müssen, der keine komplizierten Zustandarrays erfordert. Beantwortet Feb 8 12 at 20:42 TKKocheran: Ziemlich viel. Isn39t es schön, wenn die Dinge einfach sein können (Wenn Sie mit einer neuen Sequenz beginnen, erhalten Sie einen neuen Mittelwert.) Beachten Sie, dass die ersten paar Begriffe in der gemittelten Sequenz um ein bisschen durch Randeffekte springen, aber Sie erhalten diese mit anderen gleitenden Durchschnitten auch. Allerdings ist ein guter Vorteil, dass Sie die gleitende durchschnittliche Logik in die Mittelung einwickeln und experimentieren können, ohne den Rest des Programms zu viel zu stören. Ndash Donal Fellows Ich habe eine harte Zeit, Ihre Fragen zu verstehen, aber ich werde versuchen, trotzdem zu beantworten. 1) Wenn Ihr Algorithmus 0,25 statt 0,36 gefunden hat, dann ist es falsch. Es ist falsch, weil es eine monotone Zunahme oder Abnahme (das ist immer nach oben oder immer nach unten). Wenn Sie ALLE Ihre Daten nicht klassifizieren, sind Ihre Datenpunkte - wie Sie sie darstellen - nichtlinear. Wenn Sie wirklich den maximalen Wert zwischen zwei Zeitpunkten finden wollen, dann schneiden Sie Ihr Array von tmin zu tmax und finden Sie das Maximum dieses Unterarrays. 2) Nun ist das Konzept der gleitenden Durchschnitte sehr einfach: vorstellen, dass ich die folgende Liste haben: 1.4, 1.5, 1.4, 1.5, 1.5. Ich kann es glätten, indem ich den Durchschnitt von zwei Zahlen: 1.45, 1.45, 1.45, 1.5. Beachten Sie, dass die erste Zahl ist der Durchschnitt von 1,5 und 1,4 (zweite und erste Zahlen) die zweite (neue Liste) ist der Durchschnitt von 1,4 und 1,5 (dritte und zweite alte Liste) die dritte (neue Liste) der Durchschnitt von 1,5 und 1,4 (Vierte und dritte), und so weiter. Ich könnte es Zeitraum drei oder vier gemacht haben, oder n. Beachten Sie, wie die Daten viel glatter sind. Ein guter Weg, um zu sehen, gleitende Durchschnitte bei der Arbeit ist, gehen Sie zu Google Finance, wählen Sie eine Aktie (versuchen Tesla Motors ziemlich volatil (TSLA)) und klicken Sie auf Technische Daten am unteren Rand des Diagramms. Wählen Sie Moving Average mit einer bestimmten Periode und Exponential gleitenden Durchschnitt, um ihre Differenzen zu vergleichen. Exponentielle gleitende Durchschnitt ist nur eine weitere Ausarbeitung dieser, aber Gewichte die älteren Daten weniger als die neuen Daten ist dies ein Weg, um die Glättung nach hinten auszugleichen. Bitte lesen Sie den Wikipedia-Eintrag. Also, dies ist eher ein Kommentar als eine Antwort, aber die kleine Kommentar-Box war nur zu klein. Viel Glück. Wenn Sie Probleme mit der Mathematik haben, könnten Sie mit einem einfachen gleitenden Durchschnitt statt exponentiell gehen. Also die Ausgabe erhalten Sie die letzten x-Terme durch x geteilt werden. Ungetestetes Pseudocode: Beachten Sie, dass Sie die Anfangs - und Endteile der Daten behandeln müssen, da deutlich, dass Sie die letzten 5 Ausdrücke nicht durchschnittlich sind, wenn Sie auf Ihrem 2. Datenpunkt sind. Außerdem gibt es effizientere Methoden, diesen gleitenden Durchschnitt (sum sum - älteste neueste) zu berechnen, aber dies ist, um das Konzept von dem, was passiert, zu bekommen. Antwort # 1 am: Mai 23, 2010, 07:48:25 am »Es ist möglich, einen gleitenden Durchschnitt in C ohne die Notwendigkeit für ein Fenster von Proben Ive gefunden, dass ich ein bisschen optimieren kann, indem Sie eine Fenstergröße, die eine Macht ist Zwei für Bit-Verschiebung statt zu teilen, aber nicht brauchen einen Puffer wäre schön. Gibt es eine Möglichkeit, ein neues gleitendes Durchschnittsergebnis nur als Funktion des alten Ergebnisses und des neuen Beispiels auszudrücken, definieren Sie einen beispielhaften gleitenden Durchschnitt in einem Fenster von 4 Proben: Add new sample e: Ein gleitender Durchschnitt kann rekursiv implementiert werden , Aber für eine exakte Berechnung des gleitenden Durchschnitts müssen Sie sich an die älteste Eingangsabfrage in der Summe (dh die a in Ihrem Beispiel) erinnern. Für einen N-gleitenden Durchschnitt berechnen Sie: wobei yn das Ausgangssignal und xn das Eingangssignal ist. Gl. (1) können rekursiv geschrieben werden, also müssen Sie sich stets an die Stichprobe xn-N erinnern, um (2) zu berechnen. Wie von Conrad Turner angemerkt, können Sie stattdessen ein (unendlich langes) exponentielles Fenster verwenden, mit dem Sie die Ausgabe nur aus dem vergangenen Ausgang und dem aktuellen Eingang berechnen können. Dies ist jedoch kein normaler (ungewichteter) gleitender Durchschnitt, sondern ein exponentieller Wert Gewogenen gleitenden Durchschnitt, wo die Proben in der Vergangenheit ein geringeres Gewicht erhalten, aber (zumindest in der Theorie) man nie etwas vergessen (die Gewichte nur kleiner und kleiner für Proben weit in der Vergangenheit). Ich habe einen gleitenden Durchschnitt ohne einzelnen Element-Speicher für ein GPS-Tracking-Programm, das ich geschrieben habe. Ich beginne mit 1 Probe und dividiere durch 1, um die aktuelle Durchschn. Ich füge dann anothe Probe und dividiere durch 2 zu den aktuellen Durchschn. Das geht so lange weiter, bis ich auf die Länge des Durchschnitts komme. Jedes Mal danach, füge ich in der neuen Probe, erhalten Sie den Durchschnitt und entfernen Sie diesen Durchschnitt aus der Gesamtmenge. Ich bin kein Mathematiker, aber das schien ein guter Weg, es zu tun. Ich dachte, es würde den Magen eines echten Mathematik-Kerl, aber es stellt sich heraus, es ist eine der akzeptierten Möglichkeiten, es zu tun. Und es funktioniert gut. Denken Sie daran, dass je höher Ihre Länge, desto langsamer folgt es, was Sie folgen wollen. Das kann nicht die meiste Zeit, aber wenn folgende Satelliten, wenn Sie langsam sind, könnte die Spur weit von der tatsächlichen Position und es wird schlecht aussehen. Sie könnten eine Lücke zwischen dem Sat und den nachfolgenden Punkten haben. Ich wählte eine Länge von 15 aktualisiert 6 mal pro Minute, um eine ausreichende Glättung und nicht zu weit von der tatsächlichen Sat-Position mit den geglätteten Spur Punkte erhalten. Antwort # 2 am: November 16, 2010, um 23:03 Uhr Initialisierung insgesamt 0, count0 (jedes Mal, wenn ein neuer Wert dann ein Eingang (scanf), ein add totalnewValue, ein Inkrement (count), ein dividieren Durchschnitt (totalcount) Dies wäre ein gleitender Durchschnitt über Alle Eingänge Um den Durchschnitt über nur die letzten 4 Eingänge zu berechnen, benötigen Sie 4 Inputvariablen, vielleicht kopieren Sie jeden Eingang zu einem älteren inputvariable und berechnen dann den neuen gleitenden Durchschnitt als Summe der 4 Inputvariablen, geteilt durch 4 (Rechtsverschiebung 2 wäre Gut, wenn alle Eingänge waren positiv, um die durchschnittliche Berechnung zu beantworten Februar 3 15 bei 4:06 Das wird tatsächlich berechnen den Gesamtdurchschnitt und nicht den gleitenden Durchschnitt. Wie Zähler wird größer wird der Einfluss eines neuen Eingangsbeispiel verschwindend kleiner ndash Hilmar Feb 3 15 um 13:53 Uhr Deine Antwort 2017 Stack Exchange, Inc


No comments:

Post a Comment