Moving Durchschnittliche Java Beispiel


Ich habe im Wesentlichen ein Array von Werten wie folgt: Das obige Array ist oversimplified, Im sammeln 1 Wert pro Millisekunde in meinem realen Code und ich muss die Ausgabe auf einem Algorithmus, den ich schrieb, um die nächste Peak vor einem Zeitpunkt zu finden verarbeiten. 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 an Ihrem 2. Datenpunkt sind. Außerdem gibt es effizientere Methoden, diesen gleitenden Durchschnitt zu berechnen (Summe - älteste neueste), aber dies ist, um das Konzept von dem, was passiert ist, zu bekommen. Antwort # 2 am: Mai 12, 2010, um 12:48 Uhr Ihre Antwort 2017 Stack Exchange, IncMoving Durchschnitte: Was sind sie Unter den beliebtesten technischen Indikatoren werden gleitende Durchschnitte verwendet, um die Richtung des aktuellen Trends zu messen. Jede Art von gleitendem Durchschnitt (gemeinhin in diesem Tutorial als MA geschrieben) ist ein mathematisches Ergebnis, das durch Mittelung einer Anzahl von vergangenen Datenpunkten berechnet wird. Sobald dies bestimmt ist, wird der daraus resultierende Mittelwert auf eine Tabelle aufgetragen, um es den Händlern zu ermöglichen, auf geglättete Daten zu schauen, anstatt sich auf die täglichen Preisschwankungen zu konzentrieren, die in allen Finanzmärkten inhärent sind. Die einfachste Form eines gleitenden Durchschnitts, der als einfacher gleitender Durchschnitt (SMA) bekannt ist, wird berechnet, indem das arithmetische Mittel eines gegebenen Satzes von Werten genommen wird. Um beispielsweise einen gleitenden 10-Tage-Durchschnitt zu berechnen, würden Sie die Schlusskurse der letzten 10 Tage addieren und dann das Ergebnis mit 10 teilen. In Abbildung 1 ist die Summe der Preise für die letzten 10 Tage (110) Geteilt durch die Anzahl von Tagen (10), um den 10-Tage-Durchschnitt zu erreichen. Wenn ein Trader einen 50-Tage-Durchschnitt sehen möchte, würde die gleiche Art der Berechnung gemacht, aber er würde auch die Preise in den letzten 50 Tagen enthalten. Der daraus resultierende Durchschnitt unter (11) berücksichtigt die letzten 10 Datenpunkte, um den Händlern eine Vorstellung davon zu geben, wie ein Vermögenswert im Verhältnis zu den vergangenen 10 Tagen bewertet wird. Vielleicht fragen Sie sich, warum technische Händler nennen dieses Tool einen gleitenden Durchschnitt und nicht nur ein normaler Durchschnitt. Die Antwort ist, dass, wenn neue Werte verfügbar werden, die ältesten Datenpunkte aus dem Satz fallen gelassen werden müssen und neue Datenpunkte hereinkommen müssen, um sie zu ersetzen. Somit bewegt sich der Datensatz ständig auf neue Daten, sobald er verfügbar ist. Diese Berechnungsmethode stellt sicher, dass nur die aktuellen Informationen berücksichtigt werden. Wenn in Fig. 2 der neue Wert von 5 zu dem Satz hinzugefügt wird, bewegt sich das rote Feld (das die letzten 10 Datenpunkte darstellt) nach rechts und der letzte Wert von 15 wird aus der Berechnung entfernt. Weil der relativ kleine Wert von 5 den hohen Wert von 15 ersetzt, würden Sie erwarten, dass der Durchschnitt des Datensatzabbaus zu sehen, was er tut, in diesem Fall von 11 bis 10. Wie sehen sich die gleitenden Mittelwerte aus? MA berechnet worden sind, werden sie auf ein Diagramm aufgetragen und dann verbunden, um eine gleitende mittlere Linie zu erzeugen. Diese Kurvenlinien sind auf den Diagrammen der technischen Händler üblich, aber wie sie verwendet werden, können drastisch variieren (mehr dazu später). Wie Sie in Abbildung 3 sehen können, ist es möglich, mehr als einen gleitenden Durchschnitt zu irgendeinem Diagramm hinzuzufügen, indem man die Anzahl der Zeitperioden, die in der Berechnung verwendet werden, anpasst. Diese kurvenreichen Linien scheinen vielleicht ablenkend oder verwirrend auf den ersten, aber youll wachsen Sie daran gewöhnt, wie die Zeit vergeht. Die rote Linie ist einfach der durchschnittliche Preis in den letzten 50 Tagen, während die blaue Linie der durchschnittliche Preis in den letzten 100 Tagen ist. Nun, da Sie verstehen, was ein gleitender Durchschnitt ist und wie es aussieht, stellen Sie auch eine andere Art von gleitenden Durchschnitt ein und untersuchen, wie es sich von der zuvor genannten einfachen gleitenden Durchschnitt unterscheidet. Die einfache gleitende Durchschnitt ist sehr beliebt bei den Händlern, aber wie alle technischen Indikatoren, hat es seine Kritiker. Viele Personen argumentieren, dass die Nützlichkeit der SMA begrenzt ist, da jeder Punkt in der Datenreihe gleich gewichtet wird, unabhängig davon, wo er in der Sequenz auftritt. Kritiker argumentieren, dass die neuesten Daten bedeutender sind als die älteren Daten und sollten einen größeren Einfluss auf das Endergebnis haben. Als Reaktion auf diese Kritik begannen die Händler, den jüngsten Daten mehr Gewicht zu verleihen, was seitdem zur Erfindung verschiedener Arten von neuen Durchschnittswerten geführt hat, wobei der populärste der exponentielle gleitende Durchschnitt (EMA) ist. (Für weitere Messwerte siehe Grundlagen der gewichteten gleitenden Mittelwerte und was ist der Unterschied zwischen einer SMA und einer EMA) Exponentieller gleitender Durchschnitt Der exponentielle gleitende Durchschnitt ist eine Art von gleitendem Durchschnitt, die den jüngsten Preisen mehr Gewicht verleiht, um sie reaktionsfähiger zu machen Zu neuen Informationen. Das Erlernen der etwas komplizierten Gleichung für die Berechnung einer EMA kann für viele Händler unnötig sein, da fast alle Kartierungspakete die Berechnungen für Sie durchführen. Jedoch für Sie Mathegeeks heraus dort, ist hier die EMA-Gleichung: Wenn Sie die Formel verwenden, um den ersten Punkt der EMA zu berechnen, können Sie feststellen, dass es keinen Wert gibt, der als das vorhergehende EMA benutzt werden kann. Dieses kleine Problem kann gelöst werden, indem man die Berechnung mit einem einfachen gleitenden Durchschnitt beginnt und mit der obigen Formel fortfährt. Wir haben Ihnen eine Beispielkalkulationstabelle zur Verfügung gestellt, die praktische Beispiele enthält, wie Sie sowohl einen einfachen gleitenden Durchschnitt als auch einen exponentiellen gleitenden Durchschnitt berechnen können. Der Unterschied zwischen der EMA und SMA Nun, da Sie ein besseres Verständnis haben, wie die SMA und die EMA berechnet werden, können wir einen Blick darauf werfen, wie sich diese Mittelwerte unterscheiden. Mit Blick auf die Berechnung der EMA, werden Sie feststellen, dass mehr Wert auf die jüngsten Datenpunkte gelegt wird, so dass es eine Art von gewichteten Durchschnitt. In Abbildung 5 sind die Anzahl der Zeitperioden, die in jedem Durchschnitt verwendet werden, identisch (15), aber die EMA reagiert schneller auf die sich ändernden Preise. Beachten Sie, wie die EMA einen höheren Wert hat, wenn der Preis steigt, und fällt schneller als die SMA, wenn der Preis sinkt. Diese Reaktionsfähigkeit ist der Hauptgrund, warum viele Händler es vorziehen, die EMA über die SMA zu verwenden. Was sind die verschiedenen Tage Durchschnittliche Mittelwerte sind eine völlig anpassbare Indikator, was bedeutet, dass der Benutzer frei wählen können, was Zeitrahmen sie wollen, wenn die Schaffung der Durchschnitt. Die häufigsten Zeitabschnitte, die bei gleitenden Durchschnitten verwendet werden, sind 15, 20, 30, 50, 100 und 200 Tage. Je kürzer die Zeitspanne, die verwendet wird, um den Durchschnitt zu erzeugen, desto empfindlicher wird es für Preisänderungen sein. Je länger die Zeitspanne, desto weniger empfindlich, oder mehr geglättet, wird der Durchschnitt sein. Es gibt keinen richtigen Zeitrahmen für die Einrichtung Ihrer gleitenden Durchschnitte. Der beste Weg, um herauszufinden, welche am besten für Sie arbeitet, ist es, mit einer Reihe von verschiedenen Zeitperioden zu experimentieren, bis Sie eine finden, die zu Ihrer Strategie passt. Methode: Wenn Sie nach einer EMA suchen, die für Datenströme optimiert ist, die aus einer Datei oder einem Quotierungsdienst stammen, wird Ihnen die folgende Beispielklasse im Gegensatz zur Verwendung von Brute-Force-Berechnungen helfen. Dieser Ansatz ist besonders nützlich, wenn Sie Daten in Echtzeit verarbeiten. EMAs, ein Sonderfall gewichteter gleitender Mittelwerte, haben den Vorteil, dass die relative Gewichtung für jede nachfolgende Periode um einen konstanten Faktor f 2 (N1) abnimmt, wobei N die Anzahl der Perioden ist, über die die EMA angewendet werden soll. Die folgende Beispielklasse implementiert diesen iterativen Charakter von EMA und minimiert die Berechnungserfordernisse gegenüber Brute-Eman-1-f Eman-1 Die folgende Beispielklasse implementiert den aktuellen EMA (dh für den aktuellen Zeitraum) unter Verwendung der folgenden iterativen Formel: Kraft-Methoden oder Nachbearbeitungsverfahren. Private int numPeriods numPeriods factor 2.0 (numPeriods 1.0) Berechtigungen zurücksetzen, um EMA für den angegebenen Zeitraum zu generieren. Public void reset (int numPeriods) Gibt EMA für den Zeitraum zurück, der während des Konstruktors definiert wird. Wenn verarbeitete Perioden kleiner als der EMA-Bereich sind, wird Null zurückgegeben. Public double calculate (doppelter Preis) runningEMA factorprice (1-Faktor) runningEMA if (totalPeriods lt numPeriods) Von wo aus Sie die Preisdaten ausgeben und was Sie mit den EMA-Ergebnissen tun, liegt bei Ihnen. Wenn Sie beispielsweise die Preisdaten in einem Array haben und eine EMA in ein anderes Array berechnen möchten, funktioniert das folgende Snippet: doppelte Preise. (EXTReMe Tracker) ema (priceidx) Es ist Ihnen nicht erlaubt, Anhänge anzufügen. Es ist dir nicht erlaubt, auf Beiträge zu antworten. Es ist dir nicht erlaubt, Anhänge anzufügen. Es ist dir nicht erlaubt, auf Beiträge zu antworten. Es ist dir nicht erlaubt, Anhänge hochzuladen.

Comments

Popular Posts