Gewichtsbewegungsdurchschnitt

Ich habe 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 die Ausgabe auf einem Algorithmus verarbeiten, den ich schrieb, um den nächstgelegenen Peak vor einem Zeitpunkt zu finden. Meine Logik scheitert, weil in meinem Beispiel oben, 0.36 ist die reale Spitze, aber mein Algorithmus würde nach hinten schauen und sehen die letzte Zahl 0,25 als die Spitze, als theres eine Abnahme auf 0,24 vor ihm. Das Ziel ist, diese Werte zu nehmen und einen Algorithmus an sie anzuwenden, der sie ein bisschen glättet, so dass ich mehr lineare Werte habe. (Dh: Id wie meine Ergebnisse zu curvy, nicht Jaggedy) Ive wurde gesagt, um einen exponentiellen gleitenden durchschnittlichen Filter auf meine Werte anzuwenden. Wie kann ich das tun? Es ist wirklich schwer für mich, mathematische Gleichungen zu lesen, ich mache viel besser mit Code. Wie verarbeite ich Werte in meinem Array, indem du eine exponentielle gleitende durchschnittliche Berechnung anwende, um sie herauszufordern, um den 8. Februar 12 um 20:27 zu bitten, um einen exponentiellen gleitenden Durchschnitt zu berechnen. Du musst einen Zustand halten und du brauchst einen Tuning-Parameter. Dies fordert eine kleine Klasse (vorausgesetzt, du bist mit Java 5 oder höher): Instantiieren Sie mit dem Zerfallsparameter, den Sie wollen (kann die Abstimmung zwischen 0 und 1) und dann mit durchschnittlichen () zu filtern. Beim Lesen einer Seite auf einige mathematische Wiederholung, alles, was Sie wirklich wissen müssen, wenn es in Code ist, dass Mathematiker gerne Indizes in Arrays und Sequenzen mit Indizes schreiben. (Sie haben auch ein paar andere Notationen, was nicht hilft.) Allerdings ist die EMA ziemlich einfach, da man sich nur an einen alten Wert erinnern muss, keine komplizierten Zustand Arrays erforderlich. Antwortete Feb 8 12 um 20:42 TKKocheran: Ziemlich viel. Isn39t es schön, wenn es einfach sein kann (wenn man mit einer neuen Sequenz beginnt, bekomme du einen neuen Mittelwert.) Beachten Sie, dass die ersten paar Begriffe in der gemittelten Sequenz ein bisschen wegen der Brenneffekte umgehen werden, aber man bekommt diese mit anderen gleitenden Durchschnitten auch. Allerdings ist ein guter Vorteil, dass man die gleitende durchschnittliche Logik in den Mittelalter einpacken und experimentieren kann, ohne den Rest deines Programms zu stark zu stören. Ndash Donal Fellows Feb 9 12 at 0:06 Ich habe eine harte Zeit, Ihre Fragen zu verstehen, aber ich werde versuchen, trotzdem zu antworten. 1) Wenn dein Algorithmus 0,25 statt 0,36 gefunden hat, dann ist es falsch Es ist falsch, weil es eine monotone Zunahme oder Abnahme annimmt (das geht immer nach oben oder immer nach unten). Es sei denn, du durchschnittst alle deine Daten, deine Datenpunkte - wie du sie präsentierst - sind nichtlinear. Wenn Sie wirklich wollen, um den maximalen Wert zwischen zwei Punkten in der Zeit zu finden, dann schneiden Sie Ihr Array von tmin zu tmax und finden Sie die max dieser Subarray. 2) Nun ist das Konzept der gleitenden Durchschnitte sehr einfach: Stellen Sie sich vor, dass ich die folgende Liste habe: 1.4, 1.5, 1.4, 1.5, 1.5. Ich kann es glatt machen, 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 hätte es mal drei oder vier machen können, oder n. Beachten Sie, wie die Daten viel glatter sind. Ein guter Weg, um gleitende Durchschnitte bei der Arbeit zu sehen, ist, zu Google Finance zu gehen, eine Aktie auszuwählen (Tesla Motors ziemlich flüchtig (TSLA) auszuprobieren) und klicken Sie auf die Technik am unteren Rand des Diagramms. Wählen Sie Moving Average mit einem bestimmten Zeitraum und Exponential gleitenden Durchschnitt, um ihre Unterschiede zu vergleichen. Exponentieller gleitender Durchschnitt ist nur eine weitere Ausarbeitung von diesem, aber gewichtet die älteren Daten weniger als die neuen Daten ist dies ein Weg, um die Glättung nach hinten voranzutreiben. Bitte lest den Wikipedia-Eintrag. Also, das ist mehr ein Kommentar als eine Antwort, aber die kleine Kommentar-Box war nur zu winzig. Viel Glück. Wenn du Schwierigkeiten mit der Mathematik hast, könntest du mit einem einfachen gleitenden Durchschnitt anstatt exponentiell gehen. Also die Ausgabe, die du bekommst, wäre die letzten x Begriffe geteilt durch x. Ungetesteter Pseudocode: Beachten Sie, dass Sie die Start - und Endteile der Daten behandeln müssen, da Sie deutlich die letzten 5 Begriffe haben, wenn Sie auf Ihrem 2. Datenpunkt sind. Auch gibt es effizientere Möglichkeiten, diesen gleitenden Durchschnitt zu berechnen (Summsumme - älteste neueste), aber das ist es, das Konzept zu bekommen, was passiert. Antwortete am 8. Februar 12 um 20: 41What039s der Unterschied zwischen gleitenden Durchschnitt und gewichteten gleitenden Durchschnitt Ein 5-Periode gleitenden Durchschnitt, basierend auf den oben genannten Preisen, würde nach folgender Formel berechnet werden: Basierend auf der obigen Gleichung, der durchschnittliche Preis über den Zeitraum Oben erwähnt war 90.66. Mit bewegten Durchschnitten ist eine effektive Methode zur Beseitigung starker Preisschwankungen. Die Schlüsselbegrenzung ist, dass Datenpunkte von älteren Daten nicht anders als Datenpunkte am Anfang des Datensatzes gewichtet werden. Hier kommen gewichtete Bewegungsdurchschnitte ins Spiel. Gewichtete Durchschnitte weisen den aktuellen Datenpunkten eine schwerere Gewichtung zu, da sie in der fernen Vergangenheit relevanter sind als Datenpunkte. Die Summe der Gewichtung sollte bis zu 1 (oder 100) addieren. Im Falle des einfachen gleitenden Durchschnitts sind die Gewichtungen gleichmäßig verteilt, weshalb sie in der obigen Tabelle nicht dargestellt sind. Schlusskurs des AAPLExponential Moving Average (EMA) Die klassische EMA Formel ist: Im Gegensatz zu Simple Moving Average. Wo das Gewicht aller vorherigen Balken gleich ist, macht der Exponential Moving Average die aktuellste Bar wichtiger. Das Gewicht jedes älteren Stabes verringert sich exponentiell. Unten ist ein Gewichtstabelle für N 10 (1 ist der aktuelle Preis, 2 der vorherige und so weiter): Die Gewichtsformel ist, wo ich ein Abstand zur letzten Bar bin. 0 bedeutet die jüngste, 1 die vorherige Bar und so weiter. Erster Wert Die Formel bezieht sich auf den vorherigen Wert und es gibt keine Standardvereinbarung, was der erste (älteste) Wert ist. Verschiedene Implementierungen von EMA nutzt: Der erste Preis (MT4, Marketscope) oder der Einfache Moving Average der ersten N Preise (Stockcharts). Anstelle von einfachem beweglichen Durchschnitt Der exponentielle bewegte Durchschnitt kann genau so verwendet werden, wie einfacher beweglicher Durchschnitt. Besonders in der Situation, in der die Inertheit von Simple Moving Average nicht ignoriert werden kann. Vergleichen Sie nur EMA (10) und MVA (10), die zu den gleichen Preisen angewendet werden: Einschränkungen Der Exponential Moving Average basiert auf allen bisherigen Werten, so dass das Indikatorergebnis für eine bestimmte Leiste davon abhängt, wieviel historische Daten berücksichtigt werden. In der Situation, in der mehr historische Daten geladen werden, kann sich der Wert des Indikators von dem zuvor berechneten unterscheiden. Indikatoren Dieser Artikel in anderen Sprachennet. sourceforge. openforecast. models Klasse WeightedMovingAverageModel Ein gewichtetes gleitendes durchschnittliches Prognosemodell basiert auf einer künstlich konstruierten Zeitreihe, in der der Wert für einen bestimmten Zeitraum durch den gewichteten Mittelwert dieses Wertes und die Werte für ersetzt wird Eine Anzahl von vorangegangenen Zeiträumen. Wie Sie vielleicht aus der Beschreibung erraten haben, eignet sich dieses Modell am besten für Zeitreihen-Daten, d. h. Daten, die sich im Laufe der Zeit ändern. Da der Prognosewert für einen bestimmten Zeitraum ein gewichteter Durchschnitt der Vorperioden ist, wird die Prognose immer wieder entweder in den beobachteten (abhängigen) Werten ansteigen oder abnehmen. Wenn zum Beispiel eine Datenreihe einen bemerkenswerten Aufwärtstrend aufweist, dann wird eine gewichtete gleitende Durchschnittsprognose im Allgemeinen eine Unterbewertung der Werte der abhängigen Variablen liefern. Das gewichtete gleitende Durchschnittsmodell, wie das gleitende Durchschnittsmodell, hat gegenüber anderen Prognosemodellen einen Vorteil, dass es in einer Reihe von Beobachtungen Gipfel und Tröge (oder Täler) glättet. Doch wie das gleitende Mittelmodell hat es auch mehrere Nachteile. Insbesondere erzeugt dieses Modell keine tatsächliche Gleichung. Daher ist es nicht so sinnvoll, dass es sich um ein Mittelprogramm handelt. Es kann nur zuverlässig verwendet werden, um ein paar Perioden in die Zukunft zu prognostizieren. Seit: 0.4 Autor: Steven R. Gould Felder aus der Klasse net. sourceforge. openforecast. models. AbstractForecastingModel WeightedMovingAverageModel () Erstellt ein neues gewichtetes gleitendes durchschnittliches Prognosemodell. WeightedMovingAverageModel (doppelte Gewichte) Konstruiert ein neues gewichtetes gleitendes durchschnittliches Prognosemodell unter Verwendung der angegebenen Gewichte. Prognose (double timeValue) Gibt den Prognosewert der abhängigen Variablen für den vorgegebenen Wert der unabhängigen Zeitvariablen zurück. GetForecastType () Gibt einen oder zwei Wortnamen dieser Art von Prognosemodell zurück. GetNumberOfPeriods () Gibt die aktuelle Anzahl von Perioden zurück, die in diesem Modell verwendet werden. GetNumberOfPredictors () Gibt die Anzahl der Prädiktoren zurück, die vom zugrunde liegenden Modell verwendet werden. SetWeights (doppelte Gewichte) Setzt die Gewichte, die von diesem gewichteten gleitenden Durchschnittsprognosemodell verwendet werden, auf die angegebenen Gewichte. ToString () Dies sollte überschrieben werden, um eine Textbeschreibung des aktuellen Prognosemodells zu liefern, einschließlich, soweit möglich, alle abgeleiteten Parameter. Methoden, die von der Klasse net. sourceforge. openforecast. models geerbt werden. AbstractTimeBasedModel WeightedMovingAverageModel Konstruiert ein neues gewichtetes gleitendes durchschnittliches Prognosemodell unter Verwendung der angegebenen Gewichte. Um ein gültiges Modell zu erstellen, sollten Sie init anrufen und einen Datensatz mit einer Reihe von Datenpunkten mit der Zeitvariablen initialisieren, um die unabhängige Variable zu identifizieren. Die Größe des Gewichts-Arrays wird verwendet, um die Anzahl der Beobachtungen zu bestimmen, die verwendet werden sollen, um den gewichteten gleitenden Durchschnitt zu berechnen. Zusätzlich wird die letzte Periode das Gewicht gegeben, das durch das erste Element des Arrays definiert ist, d. h. Gewichte0. Die Größe des Gewichts-Arrays wird auch verwendet, um die Menge der zukünftigen Perioden zu bestimmen, die effektiv prognostiziert werden können. Mit einem 50 Tage gewichteten gleitenden Durchschnitt, dann können wir nicht vernünftigerweise - mit beliebiger Genauigkeit - mehr als 50 Tage über den letzten Zeitraum hinausgehen, für den Daten vorliegen. Sogar die Prognose in der Nähe des Endes dieses Bereichs ist wahrscheinlich unzuverlässig. Hinweis auf Gewichte Im Allgemeinen sollten die Gewichte, die an diesen Konstruktor übergeben wurden, bis zu 1,0 addieren. Jedoch, als eine Bequemlichkeit, wenn die Summe der Gewichte nicht bis zu 1,0 addiert, skaliert diese Implementierung alle Gewichte proportional, so dass sie auf 1,0 summieren. Parameter: Gewichte - eine Reihe von Gewichten, um die historischen Beobachtungen bei der Berechnung des gewichteten gleitenden Durchschnitts zuzuordnen. WeightedMovingAverageModel Konstruiert ein neues gewichtetes gleitendes durchschnittliches Prognosemodell, wobei die benannte Variable als unabhängige Variable und die angegebenen Gewichte verwendet wird. Parameter: independentVariable - der Name der unabhängigen Variablen, die in diesem Modell verwendet werden soll. Gewichte - eine Reihe von Gewichten, um die historischen Beobachtungen bei der Berechnung des gewichteten gleitenden Durchschnitts zuzuordnen. WeightedMovingAverageModel Konstruiert ein neues gewichtetes gleitendes durchschnittliches Prognosemodell. Dieser Konstruktor soll nur von Unterklassen verwendet werden (daher ist er geschützt). Jede Unterklasse, die diesen Konstruktor verwendet, muss anschließend die (geschützte) setWeights-Methode aufrufen, um die von diesem Modell zu verwendenden Gewichte zu initialisieren. WeightedMovingAverageModel Konstruiert ein neues gewichtetes gleitendes durchschnittliches Prognosemodell mit der gegebenen unabhängigen Variablen. Parameter: independentVariable - der Name der unabhängigen Variablen, die in diesem Modell verwendet werden soll. SetWeights Setzt die von diesem gewichteten gleitenden durchschnittlichen Prognosemodell verwendeten Gewichte auf die angegebenen Gewichte. Diese Methode soll nur von Unterklassen (also geschützt) und nur in Verbindung mit dem (geschützten) Ein-Argument-Konstruktor verwendet werden. Jede Unterklasse, die den Ein-Argument-Konstruktor verwendet, muss anschließend setWeights aufrufen, bevor sie die Methode AbstractTimeBasedModel. init (net. sourceforge. openforecast. DataSet) aufrufen, um das Modell zu initialisieren. Hinweis auf Gewichte Im Allgemeinen sollten die Gewichte, die an diese Methode übergeben wurden, bis zu 1,0 addieren. Jedoch, als eine Bequemlichkeit, wenn die Summe der Gewichte nicht bis zu 1,0 addiert, skaliert diese Implementierung alle Gewichte proportional, so dass sie auf 1,0 summieren. Parameter: Gewichte - eine Reihe von Gewichten, um die historischen Beobachtungen bei der Berechnung des gewichteten gleitenden Durchschnitts zuzuordnen. Gibt den Prognosewert der abhängigen Variablen für den angegebenen Wert der unabhängigen Zeitvariablen zurück. Unterklassen müssen diese Methode so umsetzen, dass sie mit dem von ihr implementierten Prognosemodell übereinstimmen. Unterklassen können die Methoden getForecastValue und getObservedValue nutzen, um frühere Prognosen und Beobachtungen zu erhalten. Angegeben durch: Prognose in der Klasse AbstractTimeBasedModel Parameter: timeValue - der Wert der Zeitvariablen, für die ein Prognosewert erforderlich ist. Rückgabewert: der Prognosewert der abhängigen Variablen für die angegebene Zeit. Throws: IllegalArgumentException - wenn es unzureichende historische Daten gibt - Beobachtungen, die an init weitergegeben wurden - um eine Prognose für den vorgegebenen Zeitwert zu generieren. GetNumberOfPredictors Gibt die Anzahl der Prädiktoren zurück, die vom zugrunde liegenden Modell verwendet werden. Rückgabewerte: die Anzahl der Prädiktoren, die von dem zugrunde liegenden Modell verwendet werden. GetNumberOfPeriods Gibt die aktuelle Anzahl von Perioden zurück, die in diesem Modell verwendet werden. Gegeben durch: getNumberOfPeriods in der Klasse AbstractTimeBasedModel Rückgabewerte: die aktuelle Anzahl von Perioden, die in diesem Modell verwendet werden. GetForecastType Gibt einen oder zwei Wortnamen dieser Art von Prognosemodell zurück. Halte das kurz Eine längere Beschreibung sollte in der toString-Methode implementiert werden. Dies sollte überschrieben werden, um eine textuelle Beschreibung des aktuellen Prognosemodells zu liefern, einschließlich, soweit möglich, abgeleiteter Parameter. Gegeben durch: toString in interface PrognoseModel Overrides: toString in class AbstractTimeBasedModel Rückgabewert: eine Stringdarstellung des aktuellen Prognosemodells und dessen Parameter.


Comments

Popular posts from this blog

Gewichtete Gleitende Durchschnitt Methode Prognose

Forex Trading Kurs Durban Gift

Forex Scalping M15