Gleitende Durchschnittliche Skala


Ich habe Echtzeit-Streaming-Daten kommen in Funken und ich möchte eine gleitende durchschnittliche Prognose auf die Zeitreihe Daten zu tun. Gibt es eine Möglichkeit, dies zu implementieren mit Funken in Java Ive bereits erwähnt. Gist. githubsamklr27411098f04fc46dcd05revisions und Apache Spark Moving Average, aber beide diese Codes sind in Scala geschrieben. Da bin ich nicht vertraut mit Scala, Im nicht in der Lage zu beurteilen, wenn Ill finde es nützlich oder sogar konvertieren den Code in Java. Gibt es eine direkte Umsetzung der Prognose in Spark Java am 12. August 15 um 12: 44Dieses Wochenende beschloss ich, meine Hand bei einigen Scala und Clojure versuchen. Im kompetent mit objektorientierten Programmierung, und so Scala war leicht zu holen als eine Sprache, wollte aber versuchen, funktionale Programmierung. Hier wurde es hart. Ich kann nur scheinen, um meinen Kopf in eine Art des Schreibens von Funktionen. Wie kommen Sie zu einem Problem? Wenn Sie eine Liste von Werten und einen definierten Summationszeitraum erhalten, wie würden Sie eine neue Liste mit dem einfachen gleitenden Durchschnitt der Liste generieren. Beispiel: Angesichts der Listenwerte (2.0, 4.0 , 7,0, 6,0, 3,0, 8,0, 12,0, 9,0, 4,0, 1,0) und die Periode 4 sollte die Funktion zurückkehren: (0,0, 0,0, 0,0, 4,75, 5,0, 6,0, 7,25, 8,0, 8,25, 6,5) Was ich in Scala tun konnte, war das: Ich weiß, das ist schrecklich ineffizient, Id viel eher etwas wie: Nun, das wäre leicht in einem imperativen Stil, aber ich kann nicht für das Leben Von mir heraus, wie man das funktional ausdrücken. Interessantes Problem. Ich kann viele Lösungen mit unterschiedlichem Wirkungsgrad vorstellen. Das Hinzufügen von Material wiederholt ist nicht wirklich ein Leistungsproblem, aber lassen Sie annehmen, dass es ist. Auch die Nullen am Anfang können später vorangestellt werden, so lässt sich keine Sorgen über die Herstellung von ihnen. Wenn der Algorithmus sie natürlich zur Verfügung stellt, wenn nicht, dann korrigieren wir sie später. Beginnend mit Scala 2.8, würde die folgenden geben das Ergebnis für n gt Periode, indem Sie gleitend, um ein Schiebefenster der Liste zu erhalten: Dennoch, obwohl dies ziemlich elegant ist, hat es nicht die beste Leistung möglich, weil es nicht nutzen bereits Berechneten Additionen. Also, von ihnen zu sprechen, wie können wir sie Lets sagen, wir schreiben: Wir haben eine Liste der Summe von jeweils zwei Paare. Lets versuchen, dieses Ergebnis zu verwenden, um den gleitenden Durchschnitt von 4 Elementen zu berechnen. Die obige Formel hat die folgende Berechnung: Wenn wir jedes Element nehmen und es dem zweiten nächsten Element hinzufügen, erhalten wir den gleitenden Durchschnitt für 4 Elemente: Wir können es so machen: Wir könnten dann den gleitenden Durchschnitt für 8 Elemente berechnen, und so weiter. Nun, es gibt einen bekannten Algorithmus, um Dinge zu berechnen, die einem solchen Muster folgen. Seine bekannteste für seine Verwendung auf die Berechnung der Macht einer Zahl. Es geht so: So, können wir es hier anwenden: So, heres die Logik. Periode 0 ist ungültig, Periode 1 ist gleich der Eingabe, Periode 2 ist gleitendes Fenster der Größe 2. Wenn sie größer ist, kann sie gerade oder ungerade sein. Wenn ungerade, addieren wir jedes Element zum movingSum der nächsten (ungerade - 1) Elemente. Zum Beispiel, wenn 3, fügen wir jedes Element zum movingSum der nächsten 2 Elemente. Wenn auch, berechnen wir die movingSum für n 2. dann fügen Sie jedes Element, um die eine n 2 Schritte danach. Mit dieser Definition können wir dann zurück auf das Problem und tun dies: Theres eine leichte Ineffizienz in Bezug auf die Verwendung von. Aber seine O (Periode), nicht O (values. size). Sie kann mit einer tail-rekursiven Funktion effizienter gestaltet werden. Und natürlich ist die Definition von Sliding ich bereitgestellt ist schrecklich performance-weise, aber es wird eine viel bessere Definition von es auf Scala 2.8. Beachten Sie, dass wir nicht eine effiziente Gleitmethode auf einer Liste. Aber wir können es auf einem Iterable tun. Having said all das, Id gehen mit der allerersten Definition und optimieren nur, wenn eine kritische Pfadanalyse festgestellt, dies als eine große Sache. Abschließend betrachten wir, wie ich ging über das Problem. Wir haben ein gleitendes Durchschnittsproblem. Ein gleitender Durchschnitt ist die Summe eines sich bewegenden Fensters auf einer Liste, geteilt durch die Größe dieses Fensters. Also, zuerst, ich versuche, ein Schiebefenster, Summe alles auf sie zu bekommen, und dann durch die Größe teilen. Das nächste Problem war die Wiederholung bereits berechneter Additionen zu vermeiden. In diesem Fall ging ich auf die kleinste Möglichkeit möglich, und versuchte herauszufinden, wie die Berechnung größerer Summen Wiederverwendung solcher Ergebnisse. Schließlich können wir versuchen, das Problem zu lösen, wie Sie es dachten, durch Hinzufügen und Subtrahieren aus dem vorherigen Ergebnis. Der erste Durchschnitt ist einfach: Jetzt machen wir zwei Listen. Zuerst die Liste der zu subtrahierenden Elemente. Als Nächstes wird die Liste der hinzuzufügenden Elemente hinzugefügt: Wir können diese beiden Listen mithilfe von zip hinzufügen. Diese Methode erzeugt nur so viele Elemente wie die kleinere Liste, die das Problem vermeidet, dass Subtraktion größer als notwendig ist: Wir beenden, indem wir das Ergebnis mit einer Falte zusammensetzen, die die Antwort ist, die zurückgegeben werden soll. Die ganze Funktion sieht so aus: Ich kenne Clojure besser als Scala, also hier. Ich schreibe dies die anderen Clojure Eintrag hier ist zwingend, dass nicht wirklich, was youre nach (und isnt idiomatischen Clojure). Der erste Algorithmus, der mir in den Sinn kommt, wiederholt die geforderte Anzahl von Elementen aus der Sequenz, das erste Element fallenlassen und wiederkehren. Die folgenden Werke auf jede Art von Sequenz (Vektor oder Liste, faul oder nicht) und gibt eine lazy Sequenz von Durchschnitten --- das könnte hilfreich sein, wenn Sie auf einer Liste von unbestimmter Größe arbeiten. Beachten Sie, dass es kümmert sich um die Basis Fall durch implizite Rückgabe von nil, wenn es reicht genug Elemente in der Liste zu konsumieren. Ausführen dieser auf Ihre Testdaten liefert Es gibt nicht 0 für die ersten paar Elemente in der Sequenz, obwohl das leicht gehandhabt werden könnte (etwas künstlich). Die einfachste Sache von allen ist, das Muster zu sehen und in der Lage sein, um eine verfügbare Funktion, die die Rechnung passt zu erinnern. Partition gibt eine faulen Blick auf Teile einer Sequenz, die wir dann über eine Karte: Jemand fragte nach einem Schwanz rekursive Version Schwanz Rekursion vs Faulheit ist ein bisschen ein Kompromiss. Wenn Ihr Job ist die Erstellung einer Liste dann machen Ihre Funktion tail rekursive ist in der Regel ziemlich einfach, und dies ist keine Ausnahme --- nur aufbauen die Liste als Argument für eine Unterfunktion. Nun sammeln sich zu einem Vektor statt einer Liste, weil sonst die Liste wird rückwärts aufgebaut werden und müssen am Ende umgekehrt werden. Schleife ist ein Weg, um eine anonyme innere Funktion (Art von wie Schemen namens let) recur in Clojure verwendet werden, um Schwanz Anrufe zu beseitigen verwendet werden. Konj ist eine generalisierte Nachteile. Anhängen in der Weise natürlich für die Sammlung --- der Beginn der Listen und das Ende der Vektoren. Antwort # 2 am: April 24, 2010, 01:03:19 am »Ich habe beschlossen, zu diesem alten Q hinzufügen, weil das Thema kam wieder (stackoverflowquestions2359821hellip) und ich finde es vorzuziehen, auf diese schöne Sammlung von möglichen Lösungen zeigen, während das Hinzufügen meiner eigenen nehmen (was anders ist Vorherige Versionen in Clojure, wie in der A). Vielleicht können wir die Web39s die meisten kompletten Repository von funktionalen mov-avg-Implementierungen zu bauen) ndash Micha Marczyk Mar 2 10 um 0:20 Heres eine teilweise Punkt-freie eine Zeile Haskell Lösung: Zuerst gilt es Schwänze auf die Liste, um die Schwanzlisten zu erhalten , Also: Kehrt es um und löscht die ersten P-Einträge (wobei p als 2 hier gilt): Falls Sie mit dem (.) - Dotnipple-Symbol vertraut sind, ist es der Operator für die funktionale Zusammensetzung, dh er übergibt die Ausgabe einer Funktion als Eingabe einer anderen, die sie zu einer einzigen Funktion. (F) bedeutet, daß f auf einen Wert f gegangen ist, dann den Ausgang zu g, so daß ((f)) x) derselbe ist wie (g (f x)). Im Allgemeinen führt seine Verwendung zu einem klareren Programmierstil. Sie ordnet dann die Funktion (((vonIntegral p)), sum. Take p) auf die Liste auf. Also für jede Liste in der Liste nimmt es die ersten p Elemente, summiert sie, teilt sie dann durch p. Dann drehen wir die Liste einfach wieder zurück. Dies alles sieht viel mehr ineffizient, als es umgekehrt ist physisch umgekehrt die Reihenfolge einer Liste, bis die Liste ausgewertet wird, es nur legt es auf den Stapel (gute ol faul Haskell). Schwänze erstellt auch nicht alle diese separaten Listen, es nur Referenzen verschiedene Abschnitte der ursprünglichen Liste. Seine noch keine große Lösung, aber es eine Zeile lang :) Heres eine etwas schönere aber längere Lösung, die mapAccum verwendet, um eine gleitende Subtraktion und Addition zu tun: Zuerst teilen wir die Liste in zwei Teile auf p, also: Summe das erste Bit: Zip das zweite Bit mit der ursprünglichen Liste (dies nur Paare aus Artikel in der Reihenfolge von den beiden Listen). Die ursprüngliche Liste ist offensichtlich länger, aber wir verlieren dieses Extra-Bit: Jetzt definieren wir eine Funktion für unser mapAccum (ulator). MapAccumL ist dasselbe wie eine Map, jedoch mit einem extra laufenden Stateaccumulator-Parameter, der von der vorherigen Zuordnung zum nächsten übergeben wird, während die Map durch die Liste läuft. Wir verwenden den Akkumulator als unseren gleitenden Durchschnitt, und da unsere Liste aus dem Element besteht, das soeben das Schiebefenster und das Element eingegeben hat, das gerade eingegeben wurde (die Liste, die wir gerade gezippt haben), nimmt unsere Schiebefunktion die erste Zahl x weg von Der Durchschnitt und addiert die zweite Zahl y. Dann passieren wir das neue s und geben s dividiert durch p zurück. Snd (second) nimmt nur das zweite Element eines Paares (Tupel), das verwendet wird, um den zweiten Rückgabewert von mapAccumL zu nehmen, da mapAccumL sowohl den Akkumulator als auch die abgebildete Liste zurückgibt. Für diejenigen von Ihnen nicht vertraut mit dem Symbol. Es ist der Anwendungsoperator. Es tut wirklich nichts, aber es hat eine niedrige, rechts-assoziative verbindliche Präzedenz, so bedeutet es, dass Sie die Klammern lassen können (beachten Sie LISPers), dh (fx) ist das gleiche wie fx Running (ma 4 2.0, 4.0, 7,0, 6,0, 3,0, 8,0, 12,0, 9,0, 4,0, 1,0) ergibt für beide Lösungen 4,75, 5,0, 6,0, 7,25, 8,0, 8,25, 6,5. Oh und youll müssen die Modul-Liste zu importieren, um eine Lösung zu kompilieren. Daniel Danke Das Schreiben von Code ist viel einfacher als es zu erklären -) Du hast das Wesentliche beschrieben. Zwei ListsStreams werden in beiden Funktionen beibehalten und erhalten ihre quotheadsquot während jeder Iteration entfernt. Ein ListStream dient als Hauptkollektion, die durchlaufen wird, während das andere ListStream, das dieselbe Sammlung ist, außer dass der Quotperiodquote weniger Doubles genommen wird, für die Berechnung des neuen gleitenden Durchschnitts verwendet wird. Ndash Walter Chang Aug 24 09 at 17:19 Die Programmiersprache J erleichtert Programme wie gleitenden Durchschnitt. In der Tat gibt es weniger Zeichen in () als in ihrem Label, gleitenden Durchschnitt. Für die in dieser Frage (einschließlich der Namenwerte) angegebenen Werte ist hier ein einfacher Weg, dies zu kodieren: Wir können dies anhand von Beschriftungen für Komponenten beschreiben. Beide Beispiele verwenden genau das gleiche Programm. Der einzige Unterschied ist die Verwendung von mehr Namen in der zweiten Form. Solche Namen können Lesern helfen, die die J Vorwahlen nicht kennen. Lets sehen ein bisschen weiter in was ist los im Unterprogramm, Durchschnitt. Bezeichnet summation () und bezeichnet die Division (wie das klassische Zeichen). Die Berechnung einer Tally (Anzahl) von Elementen erfolgt durch. Das Gesamtprogramm ist dann die Summe der Werte dividiert durch die Werte-Werte: Das Ergebnis der gleitenden Durchschnittsberechnung, die hier geschrieben wurde, enthält nicht die führenden Nullen, die in der ursprünglichen Frage erwartet werden. Diese Nullen sind wohl nicht Teil der beabsichtigten Berechnung. Die hier verwendete Technik wird stillschweigende Programmierung genannt. Es ist so ziemlich das gleiche wie die Punkt-freie Art der funktionalen Programmierung. Antwort # 3 am: August 26, 2010, um 16:15 Uhr Hier ist Clojure vorgibt, eine funktionale Sprache sein. Dies ist vollständig tail-rekursiv, btw, und enthält führende Nullen. Normalerweise habe ich die Sammlung oder Liste Parameter zuletzt, um die Funktion einfacher zu Curry. Aber in Clojure. Ist so mühsam, ich normalerweise am Ende dabei. In diesem Fall ist es nicht wirklich wichtig, welche Reihenfolge die Parameter gehen. Beantwortet Aug 24 09 at 4:56 Hallo Jonathan, I39m ziemlich neu in dieser funktionalen Programmierung, können Sie mir bitte erklären, wie dies ist tail-recursive Dank ndash James P Aug 24 09 at 14:38 Die Rekursion geschieht auf der if-Anweisung, Wo jede Option auf recur basiert. Dies wird jeden Parameter zuerst berechnen und nur dann rekursieren. Die Antwort ist das Ergebnis von recur. Als Ergebnis ist das gleiche Ergebnis von der Rekursion zurückgegeben, ohne andere Berechnungen, das ist Schwanz rekursiv. Ndash Daniel C. Sobral Dieses Beispiel nutzt Zustand, da für mich seine eine pragmatische Lösung in diesem Fall, und eine Schließung, um die Fensterung Mittelung Funktion zu schaffen: Es ist immer noch funktionell im Sinne der Nutzung Von erstklassigen Funktionen, obwohl es nicht Nebenwirkung frei ist. Die beiden genannten Sprachen laufen auf der JVM und erlauben somit bei Bedarf auch das State-Management. Beantwortet Aug 24 09 at 1:55 Diese Lösung ist in Haskell, die mir mehr vertraut ist: beantwortet Aug 24 09 at 10:23 Ich mag die Verwendung der Spiel-Anweisung. Ich habe versucht, etwas ähnliches, aber couldn39t ganz machen es den ganzen Weg gibt. Ndash James P Aug 24 09 at 14:39 Eine kurze Clojure-Version, die den Vorteil hat, O (Liste Länge) unabhängig von Ihrer Periode: Dies nutzt die Tatsache, dass Sie die Summe aus einem Bereich von Zahlen berechnen können, indem Sie eine kumulative Summe Der Sequenz (zB 1 2 3 4 5 - 0 1 3 6 10 15) und dann Subtraktion der beiden Zahlen mit einem Versatz gleich Ihrem Zeitraum. Als ich spät auf der Party war und auch in der funktionalen Programmierung neu war, kam ich zu dieser Lösung mit einer inneren Funktion: Ich nahm die Idee an, die ganze Liste im Voraus durch die Periode (len) zu teilen. Dann generiere ich die Summe für die len-first-Elemente. Und ich generiere die ersten, ungültigen Elemente (0.0, 0.0.). Dann rekursiv subtrahieren die erste und fügen Sie den letzten Wert. Am Ende liste ich das Ganze auf. Antwortete Haskell Pseudocode: (Nun sollte man wirklich die 4 out out.) Antwort: Der Schlüssel ist die Tails-Funktion, die eine Liste, um eine Liste der Kopien des Originals Liste mit der Eigenschaft, dass das n-te Element des Ergebnisses die ersten n-1 Elemente fehlt. Wir verwenden fmap (durchführen n), das heißt, wir nehmen die n-Länge Präfix aus der Unterliste, und berechnen ihre avg. Wenn die Länge der Liste, die wir durchlaufen, nicht n ist, dann berechnen wir nicht den Durchschnitt (da er undefiniert ist). In diesem Fall kehren wir nichts zurück. Wenn es ist, tun wir, und wickeln Sie es in Just. Schließlich führen wir catMaybes auf das Ergebnis von fmap (durchführen von n), um den Maybe-Typ loszuwerden. Ich war (überrascht und) enttäuscht von der Leistung von dem, was mir schien, die meisten idiomatischen Clojure Lösungen, JamesCunningham s Lazy-seq Lösungen. Es handelt sich also um eine Kombination von James-Lösung mit DanielC. Sobral's Idee, schnelle Exponentiation an bewegte Summen anzupassen: Edit: Diese - auf mikera s Lösung basierende - ist noch schneller. Beantwortet Ihre Antwort 2017 Stack Exchange, IncMoving-Mittelwerte - Einfache und Exponential Moving Averages - Einfache und exponentielle Einführung Die gleitenden Mittelwerte glatt die Preisdaten zu einem Trend folgend Indikator zu bilden. Sie prognostizieren nicht die Kursrichtung, sondern definieren die aktuelle Richtung mit einer Verzögerung. Moving Averages Lag, weil sie auf vergangenen Preisen basieren. Trotz dieser Verzögerung, gleitende Durchschnitte helfen, glatte Preis-Aktion und Filter aus dem Lärm. Sie bilden auch die Bausteine ​​für viele andere technische Indikatoren und Overlays, wie Bollinger Bands. MACD und dem McClellan-Oszillator. Die beiden beliebtesten Arten von gleitenden Durchschnitten sind die Simple Moving Average (SMA) und die Exponential Moving Average (EMA). Diese Bewegungsdurchschnitte können verwendet werden, um die Richtung des Trends zu identifizieren oder potentielle Unterstützungs - und Widerstandswerte zu definieren. Here039s ein Diagramm mit einem SMA und einem EMA auf ihm: Einfache gleitende durchschnittliche Berechnung Ein einfacher gleitender Durchschnitt wird gebildet, indem man den durchschnittlichen Preis eines Wertpapiers über einer bestimmten Anzahl von Perioden berechnet. Die meisten gleitenden Mittelwerte basieren auf den Schlusskursen. Ein 5-tägiger einfacher gleitender Durchschnitt ist die fünftägige Summe der Schlusskurse geteilt durch fünf. Wie der Name schon sagt, ist ein gleitender Durchschnitt ein Durchschnitt, der sich bewegt. Alte Daten werden gelöscht, wenn neue Daten verfügbar sind. Dies bewirkt, dass sich der Durchschnitt entlang der Zeitskala bewegt. Unten ist ein Beispiel für einen 5-tägigen gleitenden Durchschnitt, der sich über drei Tage entwickelt. Der erste Tag des gleitenden Durchschnitts deckt nur die letzten fünf Tage ab. Der zweite Tag des gleitenden Mittelwerts fällt den ersten Datenpunkt (11) und fügt den neuen Datenpunkt (16) hinzu. Der dritte Tag des gleitenden Durchschnitts setzt sich fort, indem der erste Datenpunkt (12) abfällt und der neue Datenpunkt (17) addiert wird. Im obigen Beispiel steigen die Preise allmählich von 11 auf 17 über insgesamt sieben Tage. Beachten Sie, dass der gleitende Durchschnitt auch von 13 auf 15 über einen dreitägigen Berechnungszeitraum steigt. Beachten Sie auch, dass jeder gleitende Durchschnittswert knapp unter dem letzten Kurs liegt. Zum Beispiel ist der gleitende Durchschnitt für Tag eins gleich 13 und der letzte Preis ist 15. Preise der vorherigen vier Tage waren niedriger und dies führt dazu, dass der gleitende Durchschnitt zu verzögern. Exponentielle gleitende Durchschnittsberechnung Exponentielle gleitende Mittelwerte reduzieren die Verzögerung, indem mehr Gewicht auf die jüngsten Preise angewendet wird. Die Gewichtung des jüngsten Preises hängt von der Anzahl der Perioden im gleitenden Durchschnitt ab. Es gibt drei Schritte, um einen exponentiellen gleitenden Durchschnitt zu berechnen. Berechnen Sie zunächst den einfachen gleitenden Durchschnitt. Ein exponentieller gleitender Durchschnitt (EMA) muss irgendwo anfangen, so dass ein einfacher gleitender Durchschnitt als die vorherige Periode039s EMA in der ersten Berechnung verwendet wird. Zweitens, berechnen Sie die Gewichtung Multiplikator. Drittens berechnen Sie den exponentiellen gleitenden Durchschnitt. Die folgende Formel ist für eine 10-tägige EMA. Ein 10-Perioden-exponentieller gleitender Durchschnitt wendet eine 18,18 Gewichtung auf den jüngsten Preis an. Eine 10-Perioden-EMA kann auch als 18.18 EMA bezeichnet werden. Eine 20-Periode EMA wendet eine 9,52 wiegt auf den jüngsten Preis (2 (201) .0952). Beachten Sie, dass die Gewichtung für den kürzeren Zeitraum mehr ist als die Gewichtung für den längeren Zeitraum. In der Tat, die Gewichtung sinkt um die Hälfte jedes Mal, wenn die gleitende durchschnittliche Periode verdoppelt. Wenn Sie uns einen bestimmten Prozentsatz für eine EMA zuweisen möchten, können Sie diese Formel verwenden, um sie in Zeiträume zu konvertieren, und geben Sie dann diesen Wert als den EMA039s-Parameter ein: Nachstehend ist ein Kalkulationstabellenbeispiel für einen 10-tägigen einfachen gleitenden Durchschnitt und ein 10- Tag exponentiellen gleitenden Durchschnitt für Intel. Einfache gleitende Durchschnitte sind geradlinig und erfordern wenig Erklärung. Der 10-Tage-Durchschnitt bewegt sich einfach, sobald neue Preise verfügbar sind und alte Preise fallen. Der exponentielle gleitende Durchschnitt beginnt mit dem einfachen gleitenden Mittelwert (22.22) bei der ersten Berechnung. Nach der ersten Berechnung übernimmt die Normalformel. Da ein EMA mit einem einfachen gleitenden Durchschnitt beginnt, wird sein wahrer Wert erst nach 20 oder späteren Perioden realisiert. Mit anderen Worten, der Wert auf der Excel-Tabelle kann sich aufgrund des kurzen Rückblicks von dem Diagrammwert unterscheiden. Diese Kalkulationstabelle geht nur zurück 30 Perioden, was bedeutet, dass der Einfluss der einfachen gleitenden Durchschnitt hatte 20 Perioden zu zerstreuen. StockCharts geht mindestens 250 Perioden (typischerweise viel weiter) für seine Berechnungen zurück, so dass die Effekte des einfachen gleitenden Durchschnitts in der ersten Berechnung vollständig abgebaut sind. Der Lagfaktor Je länger der gleitende Durchschnitt ist, desto stärker ist die Verzögerung. Ein 10-Tage-exponentieller gleitender Durchschnitt wird die Preise sehr eng umringen und sich kurz nach dem Kursumschlag wenden. Kurze gleitende Durchschnitte sind wie Schnellboote - flink und schnell zu ändern. Im Gegensatz dazu enthält ein 100-Tage gleitender Durchschnitt viele vergangene Daten, die ihn verlangsamen. Längere gleitende Durchschnitte sind wie Ozeantanker - lethargisch und langsam zu ändern. Es dauert eine größere und längere Kursbewegung für einen 100-Tage gleitenden Durchschnitt, um Kurs zu ändern. Die Grafik oben zeigt die SampP 500 ETF mit einer 10-tägigen EMA eng ansprechender Preise und einem 100-tägigen SMA-Schleifen höher. Selbst mit dem Januar-Februar-Rückgang hielt die 100-tägige SMA den Kurs und kehrte nicht zurück. Die 50-Tage-SMA passt irgendwo zwischen den 10 und 100 Tage gleitenden Durchschnitten, wenn es um den Verzögerungsfaktor kommt. Simple vs Exponential Moving Averages Obwohl es klare Unterschiede zwischen einfachen gleitenden Durchschnitten und exponentiellen gleitenden Durchschnitten, ist eine nicht unbedingt besser als die anderen. Exponentielle gleitende Mittelwerte haben weniger Verzögerungen und sind daher empfindlicher gegenüber den jüngsten Preisen - und den jüngsten Preisveränderungen. Exponentielle gleitende Mittelwerte drehen sich vor einfachen gleitenden Durchschnitten. Einfache gleitende Durchschnitte stellen dagegen einen wahren Durchschnittspreis für den gesamten Zeitraum dar. Als solches können einfache gleitende Mittel besser geeignet sein, um Unterstützungs - oder Widerstandsniveaus zu identifizieren. Die gleitende Durchschnittspräferenz hängt von den Zielen, dem analytischen Stil und dem Zeithorizont ab. Chartisten sollten mit beiden Arten von gleitenden Durchschnitten sowie verschiedene Zeitrahmen zu experimentieren, um die beste Passform zu finden. Die nachstehende Grafik zeigt IBM mit der 50-Tage-SMA in Rot und der 50-Tage-EMA in Grün. Beide gipfelten Ende Januar, aber der Rückgang in der EMA war schärfer als der Rückgang der SMA. Die EMA erschien Mitte Februar, aber die SMA setzte weiter unten bis Ende März. Beachten Sie, dass die SMA über einen Monat nach der EMA. Längen und Zeitrahmen Die Länge des gleitenden Mittelwerts hängt von den analytischen Zielen ab. Kurze gleitende Durchschnitte (5-20 Perioden) eignen sich am besten für kurzfristige Trends und den Handel. Chartisten, die sich für mittelfristige Trends interessieren, würden sich für längere bewegte Durchschnitte entscheiden, die 20-60 Perioden verlängern könnten. Langfristige Anleger bevorzugen gleitende Durchschnitte mit 100 oder mehr Perioden. Einige gleitende durchschnittliche Längen sind beliebter als andere. Die 200-Tage gleitenden Durchschnitt ist vielleicht die beliebteste. Wegen seiner Länge ist dies eindeutig ein langfristiger gleitender Durchschnitt. Als nächstes ist der 50-Tage gleitende Durchschnitt für den mittelfristigen Trend ziemlich populär. Viele Chartisten nutzen die 50-Tage-und 200-Tage gleitenden Durchschnitte zusammen. Kurzfristig war ein 10 Tage gleitender Durchschnitt in der Vergangenheit ziemlich populär, weil er leicht zu berechnen war. Man hat einfach die Zahlen addiert und den Dezimalpunkt verschoben. Trendidentifikation Die gleichen Signale können mit einfachen oder exponentiellen gleitenden Mittelwerten erzeugt werden. Wie oben erwähnt, hängt die Präferenz von jedem Individuum ab. Die folgenden Beispiele werden sowohl einfache als auch exponentielle gleitende Mittelwerte verwenden. Der Begriff gleitender Durchschnitt gilt für einfache und exponentielle gleitende Mittelwerte. Die Richtung des gleitenden Durchschnitts vermittelt wichtige Informationen über die Preise. Ein steigender Durchschnitt zeigt, dass die Preise im Allgemeinen steigen. Ein sinkender Durchschnittswert zeigt an, dass die Preise im Durchschnitt sinken. Ein steigender langfristiger gleitender Durchschnitt spiegelt einen langfristigen Aufwärtstrend wider. Ein sinkender langfristiger gleitender Durchschnitt spiegelt einen langfristigen Abwärtstrend wider. Das Diagramm oben zeigt 3M (MMM) mit einem 150-Tage-exponentiellen gleitenden Durchschnitt. Dieses Beispiel zeigt, wie gut bewegte Durchschnitte arbeiten, wenn der Trend stark ist. Die 150-Tage-EMA sank im November 2007 und wieder im Januar 2008. Beachten Sie, dass es einen Rückgang von 15 nahm, um die Richtung dieses gleitenden Durchschnitts umzukehren. Diese nachlaufenden Indikatoren identifizieren Trendumkehrungen, wie sie auftreten (am besten) oder nach deren Eintritt (im schlimmsten Fall). MMM setzte unten in März 2009 und dann stieg 40-50. Beachten Sie, dass die 150-Tage-EMA nicht auftauchte, bis nach diesem Anstieg. Sobald es aber tat, setzte MMM die folgenden 12 Monate höher fort. Moving-Durchschnitte arbeiten brillant in starken Trends. Doppelte Frequenzweichen Zwei gleitende Mittelwerte können zusammen verwendet werden, um Frequenzweiche zu erzeugen. In der technischen Analyse der Finanzmärkte. John Murphy nennt dies die doppelte Crossover-Methode. Doppelte Crossover beinhalten einen relativ kurzen gleitenden Durchschnitt und einen relativ langen gleitenden Durchschnitt. Wie bei allen gleitenden Durchschnitten definiert die allgemeine Länge des gleitenden Durchschnitts den Zeitrahmen für das System. Ein System, das eine 5-Tage-EMA und eine 35-Tage-EMA verwendet, wäre kurzfristig. Ein System, das eine 50-tägige SMA - und 200-Tage-SMA verwendet, wäre mittelfristig, vielleicht sogar langfristig. Eine bullische Überkreuzung tritt auf, wenn der kürzere gleitende Durchschnitt über dem längeren gleitenden Durchschnitt kreuzt. Dies wird auch als goldenes Kreuz bezeichnet. Eine bärische Überkreuzung tritt ein, wenn der kürzere gleitende Durchschnitt unter dem längeren gleitenden Durchschnitt liegt. Dies wird als ein totes Kreuz bekannt. Gleitende Mittelübergänge erzeugen relativ späte Signale. Schließlich setzt das System zwei hintere Indikatoren ein. Je länger die gleitenden Durchschnittsperioden, desto größer die Verzögerung in den Signalen. Diese Signale funktionieren gut, wenn eine gute Tendenz gilt. Allerdings wird ein gleitender Durchschnitt Crossover-System produzieren viele whipsaws in Abwesenheit einer starken Tendenz. Es gibt auch eine Dreifach-Crossover-Methode, die drei gleitende Durchschnitte beinhaltet. Wieder wird ein Signal erzeugt, wenn der kürzeste gleitende Durchschnitt die beiden längeren Mittelwerte durchläuft. Ein einfaches Triple-Crossover-System könnte 5-Tage-, 10-Tage - und 20-Tage-Bewegungsdurchschnitte beinhalten. Das Diagramm oben zeigt Home Depot (HD) mit einer 10-tägigen EMA (grüne gepunktete Linie) und 50-Tage-EMA (rote Linie). Die schwarze Linie ist die tägliche Schließung. Mit einem gleitenden Durchschnitt Crossover hätte dazu geführt, dass drei Peitschen vor dem Fang eines guten Handels. Die 10-tägige EMA brach unterhalb der 50-Tage-EMA Ende Oktober (1), aber dies dauerte nicht lange, wie die 10-Tage zog zurück oben Mitte November (2). Dieses Kreuz dauerte länger, aber die nächste bärige Crossover im Januar (3) ereignete sich gegen Ende November Preisniveaus, was zu einer weiteren Peitsche führte. Dieses bärische Kreuz dauerte nicht lange, als die 10-Tage-EMA über die 50-Tage ein paar Tage später zurückging (4). Nach drei schlechten Signalen, schien das vierte Signal eine starke Bewegung als die Aktie vorrückte über 20. Es gibt zwei Takeaways hier. Erstens, Crossovers sind anfällig für whipsaw. Ein Preis oder Zeitfilter kann angewendet werden, um zu helfen, whipsaws zu verhindern. Händler könnten verlangen, dass die Crossover 3 Tage dauern, bevor sie handeln oder verlangen, dass die 10-Tage-EMA über die 50-Tage-EMA zu bewegen, um einen bestimmten Betrag vor handeln. Zweitens kann MACD verwendet werden, um diese Frequenzweichen zu identifizieren und zu quantifizieren. MACD (10,50,1) zeigt eine Linie, die die Differenz zwischen den beiden exponentiellen gleitenden Mittelwerten darstellt. MACD wird positiv während eines goldenen Kreuzes und negativ während eines toten Kreuzes. Der Prozentsatz-Oszillator (PPO) kann auf die gleiche Weise verwendet werden, um Prozentunterschiede anzuzeigen. Beachten Sie, dass MACD und das PPO auf exponentiellen gleitenden Durchschnitten basieren und nicht mit einfachen gleitenden Durchschnitten zusammenpassen. Diese Grafik zeigt Oracle (ORCL) mit dem 50-Tage EMA, 200-Tage EMA und MACD (50.200,1). Es gab vier gleitende durchschnittliche Frequenzweichen über einen Zeitraum von 12 Jahren. Die ersten drei führten zu Peitschen oder schlechten Trades. Eine anhaltende Tendenz begann mit dem vierten Crossover als ORCL bis Mitte der 20er Jahre. Erneut bewegen sich die durchschnittlichen Crossover-Effekte groß, wenn der Trend stark ist, erzeugen aber Verluste in Abwesenheit eines Trends. Preis-Crossover Moving-Durchschnitte können auch verwendet werden, um Signale mit einfachen Preis-Crossover zu generieren. Ein bullisches Signal wird erzeugt, wenn die Preise über dem gleitenden Durchschnitt liegen. Ein bäres Signal wird erzeugt, wenn die Preise unter dem gleitenden Durchschnitt liegen. Preis-Crossover können kombiniert werden, um innerhalb der größeren Trend Handel. Der längere gleitende Durchschnitt setzt den Ton für den größeren Trend und der kürzere gleitende Durchschnitt wird verwendet, um die Signale zu erzeugen. Man würde bullish Preiskreuze nur dann suchen, wenn die Preise schon über dem längeren gleitenden Durchschnitt liegen. Dies würde den Handel im Einklang mit dem größeren Trend. Wenn zum Beispiel der Kurs über dem gleitenden 200-Tage-Durchschnitt liegt, würden sich die Chartisten nur auf Signale konzentrieren, wenn der Kurs über dem 50-Tage-Gleitender Durchschnitt liegt. Offensichtlich würde ein Schritt unterhalb der 50-Tage gleitenden Durchschnitt ein solches Signal vorausgehen, aber solche bearish Kreuze würden ignoriert, weil der größere Trend ist. Ein bearish Kreuz würde einfach vorschlagen, ein Pullback in einem größeren Aufwärtstrend. Ein Cross-Back über dem 50-Tage-Gleitender Durchschnitt würde einen Preisanstieg und eine Fortsetzung des größeren Aufwärtstrends signalisieren. Die nächste Tabelle zeigt Emerson Electric (EMR) mit dem 50-Tage EMA und 200-Tage EMA. Die Aktie bewegte sich über und hielt über dem 200-Tage gleitenden Durchschnitt im August. Es gab Dips unterhalb der 50-Tage-EMA Anfang November und wieder Anfang Februar. Preise schnell zurück über die 50-Tage-EMA zu bullish Signale (grüne Pfeile) in Harmonie mit dem größeren Aufwärtstrend. Im Indikatorfenster wird MACD (1,50,1) angezeigt, um Preiskreuze über oder unter dem 50-Tage-EMA zu bestätigen. Die 1-tägige EMA entspricht dem Schlusskurs. MACD (1,50,1) ist positiv, wenn das Schließen oberhalb der 50-Tage-EMA und negativ ist, wenn das Schließen unterhalb der 50-Tage-EMA liegt. Unterstützung und Widerstand Der Gleitende Durchschnitt kann auch als Unterstützung in einem Aufwärtstrend und Widerstand in einem Abwärtstrend dienen. Ein kurzfristiger Aufwärtstrend könnte Unterstützung nahe dem 20-tägigen einfachen gleitenden Durchschnitt finden, der auch in Bollinger-Bändern verwendet wird. Ein langfristiger Aufwärtstrend könnte Unterstützung nahe dem 200-tägigen einfachen gleitenden Durchschnitt finden, der der populärste langfristige bewegliche Durchschnitt ist. Wenn Tatsache, die 200-Tage gleitenden Durchschnitt bieten kann Unterstützung oder Widerstand, nur weil es so weit verbreitet ist. Es ist fast wie eine sich selbst erfüllende Prophezeiung. Die Grafik oben zeigt die NY Composite mit dem 200-Tage einfachen gleitenden Durchschnitt von Mitte 2004 bis Ende 2008. Die 200-Tage-Support zur Verfügung gestellt, mehrmals während des Vorhabens. Sobald der Trend mit einem Doppel-Top-Support-Pause umgekehrt, der 200-Tage gleitenden Durchschnitt als Widerstand um 9500 gehandelt. Erwarten Sie nicht genaue Unterstützung und Widerstand Ebenen von gleitenden Durchschnitten, vor allem längeren gleitenden Durchschnitten. Märkte werden durch Emotionen gefahren, wodurch sie anfällig für Überschreitungen sind. Statt genauer Ebenen können gleitende Mittelwerte verwendet werden, um Unterstützungs - oder Widerstandszonen zu identifizieren. Schlussfolgerungen Die Vorteile der Verwendung von bewegten Durchschnitten müssen gegen die Nachteile gewogen werden. Moving-Durchschnitte sind Trend nach, oder nacheilende, Indikatoren, die immer einen Schritt hinter sich. Dies ist nicht unbedingt eine schlechte Sache. Immerhin ist der Trend ist dein Freund und es ist am besten, in die Richtung des Trends Handel. Die gleitenden Durchschnitte gewährleisten, dass ein Händler dem aktuellen Trend entspricht. Auch wenn der Trend ist dein Freund, verbringen die Wertpapiere viel Zeit in Handelsspannen, die gleitende Durchschnitte ineffektiv machen. Einmal in einem Trend, bewegte Durchschnitte halten Sie in, sondern geben auch späte Signale. Don039t erwarten, an der Spitze zu verkaufen und kaufen Sie am unteren Rand mit gleitenden Durchschnitten. Wie bei den meisten technischen Analysetools sollten die gleitenden Mittelwerte nicht allein verwendet werden, sondern in Verbindung mit anderen komplementären Tools. Chartisten können gleitende Durchschnitte verwenden, um den Gesamttrend zu definieren und dann RSI zu verwenden, um überkaufte oder überverkaufte Niveaus zu definieren. Hinzufügen von Bewegungsdurchschnitten zu StockCharts Diagrammen Gleitende Durchschnitte sind als Preisüberlagerungsfunktion auf der SharpCharts-Workbench verfügbar. Mit dem Dropdown-Menü Overlays können Benutzer entweder einen einfachen gleitenden Durchschnitt oder einen exponentiellen gleitenden Durchschnitt auswählen. Der erste Parameter wird verwendet, um die Anzahl der Zeitperioden einzustellen. Ein optionaler Parameter kann hinzugefügt werden, um festzulegen, welches Preisfeld in den Berechnungen verwendet werden soll - O für die Open, H für High, L für Low und C für Close. Ein Komma wird verwendet, um Parameter zu trennen. Ein weiterer optionaler Parameter kann hinzugefügt werden, um die gleitenden Mittelwerte nach links (vorbei) oder nach rechts (zukünftig) zu verschieben. Eine negative Zahl (-10) würde den gleitenden Durchschnitt auf die linken 10 Perioden verschieben. Eine positive Zahl (10) würde den gleitenden Durchschnitt auf die rechten 10 Perioden verschieben. Mehrere gleitende Durchschnitte können dem Preisplot überlagert werden, indem einfach eine weitere Überlagerungslinie zur Werkbank hinzugefügt wird. StockCharts-Mitglieder können die Farben und den Stil ändern, um zwischen mehreren gleitenden Durchschnitten zu unterscheiden. Nachdem Sie eine Anzeige ausgewählt haben, öffnen Sie die erweiterten Optionen, indem Sie auf das kleine grüne Dreieck klicken. Erweiterte Optionen können auch verwendet werden, um eine gleitende mittlere Überlagerung zu anderen technischen Indikatoren wie RSI, CCI und Volumen hinzuzufügen. Klicken Sie hier für ein Live-Diagramm mit mehreren verschiedenen gleitenden Durchschnitten. Verwenden von Moving Averages mit StockCharts-Scans Hier finden Sie einige Beispielscans, die die StockCharts-Mitglieder verwenden können, um verschiedene gleitende Durchschnittssituationen zu scannen: Bullish Moving Average Cross: Diese Scans suchen nach Aktien mit einem steigenden 150-Tage-Durchschnitt und einem bullish Kreuz der 5 Tag EMA und 35-Tage EMA. Der 150-Tage gleitende Durchschnitt steigt, solange er über seinem Niveau vor fünf Tagen handelt. Ein bullish Kreuz tritt auf, wenn die 5-Tage-EMA bewegt sich über dem 35-Tage-EMA auf überdurchschnittlichen Volumen. Bearish Moving Average Cross: Diese Scans sucht nach Aktien mit einem fallenden 150-Tage einfachen gleitenden Durchschnitt und einem bärischen Kreuz der 5-Tage EMA und 35-Tage EMA. Der 150-Tage gleitende Durchschnitt fällt, solange er unter seinem Niveau vor fünf Tagen handelt. Ein bäriges Kreuz tritt auf, wenn die 5-Tage-EMA unterhalb der 35-Tage-EMA auf überdurchschnittlichem Volumen bewegt. Weitere Studie John Murphy039s Buch hat ein Kapitel gewidmet gleitende Durchschnitte und ihre verschiedenen Verwendungen. Murphy deckt die Vor-und Nachteile der gleitenden Durchschnitte. Darüber hinaus zeigt Murphy, wie bewegte Durchschnitte mit Bollinger Bands und kanalbasierten Handelssystemen funktionieren. Technische Analyse der Finanzmärkte John Murphy

Comments