Monday 16 October 2017

Exponential Moving Average Code Beispiel


Exponential Moving Average Der Exponential Moving Average Der Exponential Moving Average unterscheidet sich von einem Simple Moving Average sowohl nach Berechnungsmethode als auch in der gewichteten Preislage. Der Exponential Moving Average (verkürzt auf die Initialen EMA) ist effektiv ein gewichteter gleitender Durchschnitt. Mit der EMA ist die Gewichtung so, dass die letzten Tage Preise mehr Gewicht als ältere Preise gegeben werden. Die Theorie dahinter ist, dass jüngere Preise als wichtiger als ältere Preise angesehen werden, zumal ein langfristiger einfacher Durchschnitt (zum Beispiel ein 200-tägiger Tag) gleiches Gewicht auf Preisdaten hat, die über 6 Monate alt sind und gedacht werden könnten Von so wenig veraltet. Die Berechnung der EMA ist ein wenig komplexer als die Simple Moving Average, hat aber den Vorteil, dass eine große Aufzeichnung von Daten, die jeden Schlusskurs der letzten 200 Tage abdeckt (oder aber viele Tage betrachtet werden) nicht beibehalten werden muss . Alles was Sie brauchen sind die EMA für den Vortag und den heutigen Schlusskurs, um den neuen Exponential Moving Average zu berechnen. Berechnen des Exponenten Anfänglich muss für die EMA ein Exponent berechnet werden. Um zu beginnen, nehmen Sie die Anzahl der Tage EMA, die Sie berechnen möchten und fügen Sie ein, um die Anzahl der Tage, die Sie in Erwägung ziehen (zum Beispiel für einen 200-Tage gleitenden Durchschnitt, fügen Sie einen zu 201 als Teil der Berechnung zu erhalten). Nennen Sie diese Tage1. Dann, um den Exponenten zu erhalten, nehmen Sie einfach die Zahl 2 und teilen sie durch Days1. Zum Beispiel wäre der Exponent für einen 200 Tage gleitenden Durchschnitt: 2 201. Das entspricht 0,01 Vollberechnung, wenn der exponentielle gleitende Durchschnitt Nachdem wir den Exponenten erhalten haben, brauchen wir nur noch zwei weitere Informationen, um die vollständige Berechnung durchführen zu können . Die erste ist gestern Exponential Moving Average. Wir gehen davon aus, dass wir das schon wissen, wie wir es gestern berechnet haben. Allerdings, wenn Sie arent bereits Kenntnis von gestern EMA, können Sie durch die Berechnung der Simple Moving Average für gestern starten, und verwenden Sie diese anstelle der EMA für die erste Berechnung (dh heute Berechnung) der EMA. Dann können Sie morgen die EMA verwenden, die Sie heute berechnet haben, und so weiter. Die zweite Information, die wir brauchen, ist der heutige Schlusskurs. Wir gehen davon aus, dass wir die heutigen 200 Tage Exponential Moving Average für eine Aktie oder Aktie, die eine vorhergehende Tage EMA von 120 Pence (oder Cent) und einem aktuellen Tag Schlusskurs von 136 Pence hat zu berechnen. Die vollständige Berechnung ist immer wie folgt: Heutige Exponential Moving Average (aktuelle Tage Schlusskurs x Exponent) (vorherige Tage EMA x (1- Exponent)) Also, mit unserem Beispiel Zahlen oben, heute 200 Tage EMA wäre: (136 x 0,01 ) (120 x (1- 0,01)) Was ist eine EMA für heute von 120.16.I im Wesentlichen eine Reihe von Werten wie folgt: Das obige Array ist vereinfacht, Im sammeln 1 Wert pro Millisekunde in meinem realen Code und ich muss verarbeiten Die Ausgabe auf einem Algorithmus, den ich schrieb, um die engste 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 durchschnittlichen Sequenz wird ein bisschen durch Randeffekte springen, aber Sie erhalten die 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. Beantwortet Feb 8 12 at 20:41 Deine Antwort 2017 Stack Exchange, Inc

No comments:

Post a Comment