Friday 23 June 2017

Bewegungs Durchschnitts Berechnungs Algorithmus


Moving Average Dieses Beispiel lehrt Sie, wie Sie den gleitenden Durchschnitt einer Zeitreihe in Excel berechnen können. Ein gleitender Durchschnitt wird verwendet, um Unregelmäßigkeiten (Gipfel und Täler) zu glätten, um Trends leicht zu erkennen. 1. Zuerst schauen wir uns unsere Zeitreihen an. 2. Klicken Sie auf der Registerkarte Daten auf Datenanalyse. Hinweis: Kann die Schaltfläche Datenanalyse nicht finden Hier klicken, um das Analysis ToolPak-Add-In zu laden. 3. Wählen Sie Moving Average und klicken Sie auf OK. 4. Klicken Sie in das Feld Eingabebereich und wählen Sie den Bereich B2: M2. 5. Klicken Sie in das Feld Intervall und geben Sie 6 ein. 6. Klicken Sie in das Feld Ausgabebereich und wählen Sie Zelle B3. 8. Zeichnen Sie einen Graphen dieser Werte. Erläuterung: Da wir das Intervall auf 6 setzen, ist der gleitende Durchschnitt der Durchschnitt der bisherigen 5 Datenpunkte und der aktuelle Datenpunkt. Dadurch werden Gipfel und Täler geglättet. Die Grafik zeigt einen zunehmenden Trend. Excel kann den gleitenden Durchschnitt für die ersten 5 Datenpunkte nicht berechnen, da es nicht genügend vorherige Datenpunkte gibt. 9. Wiederholen Sie die Schritte 2 bis 8 für Intervall 2 und Intervall 4. Fazit: Je größer das Intervall, desto mehr werden die Gipfel und Täler geglättet. Je kleiner das Intervall ist, desto näher sind die gleitenden Mittelwerte auf die tatsächlichen Datenpunkte. Moving Averages: Was sind sie unter den beliebtesten technischen Indikatoren, gleitende Durchschnitte werden verwendet, um die Richtung des aktuellen Trends zu messen. Jede Art von gleitendem Durchschnitt (üblicherweise in diesem Tutorial als MA geschrieben) ist ein mathematisches Ergebnis, das durch Mittelung einer Anzahl von vergangenen Datenpunkten berechnet wird. Einmal bestimmt, wird der daraus resultierende Durchschnitt dann auf ein Diagramm aufgetragen, um es den Händlern zu ermöglichen, geglättete Daten zu betrachten, anstatt sich auf die alltäglichen Preisschwankungen zu konzentrieren, die allen Finanzmärkten innewohnen. Die einfachste Form eines gleitenden Durchschnitts, die in geeigneter Weise als ein einfacher gleitender Durchschnitt (SMA) bekannt ist, wird berechnet, indem man das arithmetische Mittel eines gegebenen Satzes von Werten annimmt. Zum Beispiel, um einen grundlegenden 10-Tage gleitenden Durchschnitt zu berechnen, würden Sie die Schlusskurse aus den letzten 10 Tagen 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 der Tage (10), um den 10-Tage-Durchschnitt zu erreichen. Wenn ein Händler einen 50-tägigen Durchschnitt anstatt sehen möchte, würde die gleiche Art von Berechnung gemacht werden, aber es würde 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 vermitteln, wie ein Vermögenswert in Bezug auf die letzten 10 Tage festgesetzt wird. Vielleicht fragen Sie sich, warum technische Händler dieses Werkzeug einen gleitenden Durchschnitt nennen und nicht nur ein normales Mittel. Die Antwort ist, dass, wenn neue Werte verfügbar werden, die ältesten Datenpunkte aus dem Set gelöscht werden müssen und neue Datenpunkte kommen müssen, um sie zu ersetzen. Damit wird der Datensatz ständig auf neue Daten übertragen, sobald er verfügbar ist. Diese Berechnungsmethode stellt sicher, dass nur die aktuellen Informationen berücksichtigt werden. In Abbildung 2, sobald der neue Wert von 5 dem Satz hinzugefügt wird, bewegt sich der rote Kasten (der die letzten 10 Datenpunkte repräsentiert) nach rechts und der letzte Wert von 15 wird aus der Berechnung gelöscht. Weil der relativ kleine Wert von 5 den hohen Wert von 15 ersetzt, würden Sie erwarten, dass der Durchschnitt der Datensatzabnahme, was es tut, in diesem Fall von 11 bis 10 zu sehen. Was verschieben die Durchschnitte aussehen Einmal die Werte der MA wurden berechnet, sie werden auf ein Diagramm geplottet und dann verbunden, um eine gleitende durchschnittliche Linie zu erzeugen. Diese geschwungenen Linien sind auf den Charts der technischen Händler üblich, aber wie sie verwendet werden, kann drastisch variieren (mehr dazu später). Wie Sie in Abbildung 3 sehen können, ist es möglich, mehr als einen gleitenden Durchschnitt zu jedem Diagramm hinzuzufügen, indem Sie die Anzahl der in der Berechnung verwendeten Zeiträume anpassen. Diese geschwungenen Linien mögen anfangs ablenkend oder verwirrend erscheinen, aber sie werden sich daran gewöhnt, wie es die Zeit verläuft. 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, führen Sie gut eine andere Art von gleitenden Durchschnitt ein und untersuchen, wie es sich von dem zuvor erwähnten einfachen gleitenden Durchschnitt unterscheidet. Der einfache gleitende Durchschnitt ist bei den Händlern sehr beliebt, aber wie alle technischen Indikatoren hat er seine Kritiker. Viele Einzelpersonen argumentieren, dass die Nützlichkeit des SMA begrenzt ist, weil jeder Punkt in der Datenreihe gleich gewichtet wird, unabhängig davon, wo er in der Sequenz auftritt. Kritiker argumentieren, dass die jüngsten Daten signifikanter sind als die älteren Daten und einen größeren Einfluss auf das Endergebnis haben sollten. Als Reaktion auf diese Kritik begannen die Händler, den jüngsten Daten mehr Gewicht zu verleihen, was seither zur Erfindung von verschiedenen Arten von neuen Durchschnittswerten geführt hat, wobei der populärste der exponentielle gleitende Durchschnitt (EMA) ist. (Für weitere Lesungen siehe Grundlagen der gewichteten gleitenden Mittelwerte und was ist der Unterschied zwischen einer SMA und einer EMA) Exponentieller bewegter Durchschnitt Der exponentielle gleitende Durchschnitt ist eine Art gleitender Durchschnitt, der den jüngsten Preisen mehr Gewicht verleiht, um es besser zu machen Zu neuen Informationen. Lernen der etwas komplizierten Gleichung für die Berechnung einer EMA kann für viele Händler unnötig sein, da fast alle Charting-Pakete die Berechnungen für Sie machen. Jedoch für Sie Mathe-Aussenseiter da draußen, hier ist 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 vorherige EMA verwendet werden kann. Dieses kleine Problem kann gelöst werden, indem man die Berechnung mit einem einfachen gleitenden Durchschnitt beginnt und mit der obigen Formel von dort weiter fortfährt. Wir haben Ihnen eine Beispielkalkulationstabelle zur Verfügung gestellt, die reale Beispiele enthält, wie man sowohl einen einfachen gleitenden Durchschnitt als auch einen exponentiellen gleitenden Durchschnitt berechnet. Der Unterschied zwischen EMA und SMA Nun, da Sie ein besseres Verständnis davon haben, wie die SMA und die EMA berechnet werden, können Sie sich einen Blick darauf werfen, wie sich diese Durchschnittswerte unterscheiden. Mit Blick auf die Berechnung der EMA, werden Sie feststellen, dass mehr Wert auf die jüngsten Datenpunkte gesetzt wird, so dass es eine Art von gewichteten Durchschnitt. In Abbildung 5 ist die Anzahl der in jedem Durchschnitt verwendeten Zeiträume 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 nutzen. Was sind die verschiedenen Tage Mittleren Durchlauf-Durchschnitten sind ein völlig anpassbarer Indikator, was bedeutet, dass der Benutzer frei wählen kann, was Zeitrahmen sie beim Erstellen des Durchschnitts wollen. Die häufigsten Zeiträume, die bei gleitenden Durchschnitten verwendet werden, sind 15, 20, 30, 50, 100 und 200 Tage. Je kürzer die Zeitspanne ist, um den Durchschnitt zu schaffen, desto empfindlicher wird es Preisänderungen. Je länger die Zeitspanne, desto weniger empfindlich oder mehr geglättet wird, wird der Durchschnitt sein. Es gibt keinen richtigen Zeitrahmen, um bei der Einrichtung Ihrer gleitenden Durchschnitte zu verwenden. Der beste Weg, um herauszufinden, welche am besten für Sie arbeitet, ist, mit einer Reihe von verschiedenen Zeiträumen zu experimentieren, bis Sie eine finden, die zu Ihrer Strategie passt. Moving Averages: So verwenden Sie ThemI wollen einen iterativen Algorithmus implementieren, der den gewichteten Durchschnitt berechnet. Das spezifische Gewicht Gesetz spielt keine Rolle, aber es sollte in der Nähe von 1 für die neuesten Werte und in der Nähe von 0 zu den ältesten. Der Algorithmus sollte iterativ sein. D. h. es sollte sich nicht an alle vorherigen Werte erinnern. Es sollte nur einen neuesten Wert und irgendwelche aggregative Informationen über Vergangenheit, wie vorherige Werte des Durchschnitts, Summen, Zählungen etc. wissen. Zum Beispiel kann der folgende Algorithmus sein: Es wird exponentiell abnehmende Gewicht geben, was nicht gut sein kann. Ist es möglich, Schritt abnehmende Gewicht oder etwas zu haben Die Voraussetzungen für das Wiegen des Gesetzes sind: 1) Das Gewicht verringert sich in die Vergangenheit 2) Ich habe eine mittlere oder charakteristische Dauer, so dass Werte älter diese Dauer ist viel weniger als neuere 3) I Sollte in der Lage sein, diese Dauer zu setzen, brauche ich folgendes. Angenommen, vi sind Werte, wobei v1 die erste ist. Angenommen, wi sind Gewichte. Aber wO ist das LETZTE. Also, nach dem ersten Wert kam ich den ersten Durchschnitt Nachdem der zweite Wert v2 kam, hätte ich durchschnittlich Mit dem nächsten Wert sollte ich beachten, dass das Gewichtsprofil sich mit mir bewegt, während ich die Wertfolge verschiebe. I. e. Jeder Wert hat nicht sein eigenes Gewicht die ganze Zeit. Mein Ziel ist es, dieses Gewicht zu senken, während es vorbei geht. Gt Aber meine Aufgabe ist es, den Durchschnitt neu berechnet zu haben, jedes Mal, wenn neuer Wert mit alten Werten wieder aufgenommen wird. OP Ihre Aufgabe ist fast immer unmöglich, auch mit außergewöhnlich einfachen Gewichtungsschemata. Sie bitten, mit O (1) Speicher, Ertragsdurchschnitte mit einem sich ändernden Gewichtungsschema. Zum Beispiel, da neue Werte eingegangen werden, für einige fast willkürlich ändernde Gewichtsfolge. Dies ist aufgrund der Injektivität unmöglich. Sobald Sie die Zahlen zusammen verschmelzen, verlieren Sie eine riesige Menge an Informationen. Zum Beispiel, auch wenn Sie das Gewicht Vektor hatte. Sie konnten den ursprünglichen Wertvektor nicht wiederherstellen, oder umgekehrt. Es gibt nur zwei Fälle, an die ich denken kann, wo man damit weitermachen könnte: Konstante Gewichte wie 2,2,2. 2: Dies entspricht einem Online-Mittelungsalgorithmus, den Sie nicht wollen, weil die alten Werte nicht neu aufgezeichnet werden. Die relativen Gewichte der vorherigen Antworten ändern sich nicht. Zum Beispiel könnten Sie Gewichte von 8,4,2,1 machen. Und füge ein neues Element mit beliebigem Gewicht hinzu. 1. aber du musst alle vorherigen durch den gleichen multiplikativen Faktor wie 16,8,4,21 erhöhen. So fügen Sie bei jedem Schritt ein neues willkürliches Gewicht hinzu und eine neue willkürliche Reskalierung der Vergangenheit, so dass Sie 2 Freiheitsgrade haben (nur 1, wenn Sie Ihr Punktprodukt normalisieren müssen). Die Gewicht-Vektoren, die du bekommst, würden so aussehen: So kann jedes Gewichtungsschema, das du so aussehen möchtest, das funktionieren (es sei denn, du musst das Ding durch die Summe der Gewichte normalisieren, in diesem Fall musst du dann den neuen Durchschnitt durch das neue teilen Summe, die man berechnen kann, indem man nur O (1) Speicher hält). Lediglich den vorherigen Durchschnitt durch die neuen s (die implizit über das Dot-Produkt in die Gewichte verteilen) vervielfachen und den neuen wnewValue anhängen. Antwortete Mar 29 12 at 21:27 Hier vermutlich ich will, dass die Gewichte auf 1 summieren. Solange man ein relatives Gewicht generieren kann, ohne dass es sich in der Zukunft ändert, können Sie am Ende mit einer Lösung, die dieses Verhalten nachahmt. Das heißt, nehmen Sie an, dass Sie Ihre Gewichte als Sequenz definiert und die Eingabe als Sequenz definiert haben. Betrachten wir die Form: sum (s0i0 s1i1 s2i2. Snin) sum (s0 s1 s2. Sn). Beachten Sie, dass es trivial möglich ist, dies inkrementell mit ein paar Aggregationszählern zu berechnen: Natürlich berechnenWeightFromCounter () in diesem Fall sollte keine Gewichte erzeugen, die zu einem Summen - der Trick hier ist, dass wir durchschnittlich durch Division durch die Summe der Gewichte So dass am Ende die Gewichte praktisch zu einem zu summieren. Der eigentliche Trick ist, wie Sie berechnenWeightFromCounter (). Sie könnten einfach den Zähler selbst zurückgeben, zum Beispiel, aber beachten Sie, dass die letzte gewichtete Zahl wäre nicht in der Nähe der Summe der Zähler unbedingt, so können Sie nicht am Ende mit den genauen Eigenschaften, die Sie wollen. (Es ist schwer zu sagen, da, wie erwähnt, du hast ein ziemlich offenes Problem hinterlassen.) Antwortete Mar 28 12 um 21:45 Das Problem ist, dass sich die Gewichte mit jedem neuen Wert ändern. In deinem Fall sind sie nicht. Ndash Suzan Cioc Mar 29 12 um 14:43 Die tatsächlichen Gebrauchsgewichte ändern sich mit jedem neuen Wert - die Ziffern werden durch eine sukzessiv größere Zahl geteilt, wodurch erzwingt, dass die tatsächlichen verwendeten Gewichte immer auf 1. ndash Kaganar Mar 29 12 summieren Um 14:45 Dies ist zu lang, um in einem Kommentar zu posten, aber es kann nützlich sein, zu wissen. Angenommen, Sie haben: w0vn. Wnv0 (gut nennen diese w0..nvn..0 kurz) Dann ist der nächste Schritt: w0vn1. Wn1v0 (und das ist w0..n1vn1..0 kurz) Das heißt, wir brauchen einen Weg, um w1..n1vn..0 aus w0..nvn..0 zu berechnen. Es ist sicher möglich, dass vn..0 0. 0, z, 0. 0 ist, wobei z an irgendeiner Stelle x ist. Wenn wir keine zusätzliche Speicherung haben, dann ist f (zw (x)) zw (x 1) wobei w (x) das Gewicht für die Stelle x ist. Umreißen der Gleichung, w (x 1) f (zw (x)) z. Nun ist w (x 1) besser für eine Konstante x konstant, also f (zw (x)) z besser konstant sein Daher muß f sich ausbreiten - das heißt f (zw (x)) zf (w (x)). Aber auch hier haben wir ein Problem. Beachten Sie, dass, wenn z (die eine beliebige Zahl sein könnte) durch f ausbreiten kann. Dann kann w (x) sicherlich. Also ist f (zw (x)) w (x) f (z). Somit ist f (w (x)) w (x) f (z). Aber für eine konstante x. W (x) ist konstant, und so ist f (w (x)) besser auch konstant. W (x) ist konstant, also ist f (z) besser konstant, so dass w (x) f (z) konstant ist. Somit ist f (w (x)) w (x) c, wobei c eine Konstante ist. Also, f (x) cx wobei c eine Konstante ist, wenn x ein Gewichtswert ist. Das heißt, jedes Gewicht ist ein Vielfaches des vorherigen. So nehmen die Gewichte die Form w (x) mbx an. Beachten Sie, dass dies die einzige Information f hat, ist der letzte aggregierte Wert. Beachten Sie, dass Sie irgendwann auf diesen Fall reduziert werden, es sei denn, Sie sind bereit, eine nicht konstante Menge an Daten zu speichern, die Ihre Eingabe repräsentieren. Sie können nicht einen unendlichen Längenvektor von reellen Zahlen mit einer reellen Zahl darstellen, aber Sie können sie irgendwie in einer konstanten, endlichen Menge an Speicherung annähern. Aber das wäre nur eine Annäherung. Obwohl ich es nicht bewiesen habe, ist es meine Schlussfolgerung, dass das, was Sie wollen, unmöglich ist, mit einem hohen Maß an Präzision zu tun, aber Sie können in der Lage sein, log (n) Raum (das kann auch O (1) für viele sein Praktische Anwendungen), um eine Qualitätsnäherung zu erzeugen. Sie können noch weniger nutzen. Antwortete Mar 29 12 um 23:01 Ich habe versucht, praktisch etwas zu schreiben (in Java). Wie gesagt, Ihr Ziel ist nicht erreichbar. Sie können nur durchschnittlich von einer Anzahl von zuletzt gespeicherten Werten zählen. Wenn Sie nicht genau sein müssen, können Sie die älteren Werte approximieren. Ich habe versucht, es zu tun, indem ich die letzten 5 Werte genau und ältere Werte nur von 5 Werten, erinnert an die letzten 5 SUMs. Dann ist die Komplexität O (2n) für die Erinnerung an die letzten nnn-Werte. Das ist eine sehr grobe Annäherung. Sie können die Arraygrößen lastValues ​​und lasAggregatedSums ändern, wie Sie möchten. Sehen Sie sich dieses ascii-artiges Bild an, das versucht, ein Diagramm der letzten Werte anzuzeigen, und zeigt an, dass die ersten Spalten (ältere Daten) als aggregierter Wert (nicht einzeln) gespeichert werden und nur die frühesten 5 Werte einzeln gespeichert werden. Herausforderung 1. Mein Beispiel zählt keine Gewichte, aber ich denke, es sollte nicht ein Problem für Sie sein, um Gewichte für die lastAggregatedSums entsprechend hinzuzufügen - das einzige Problem ist, dass wenn Sie niedrigere Gewichte für ältere Werte wünschen, wäre es schwieriger, weil das Array sich dreht Es ist nicht einfach zu wissen, welches Gewicht für welches Array-Mitglied. Vielleicht kannst du den Algorithmus ändern, um immer Werte im Array zu verschieben, anstatt zu drehen. Dann ist das Hinzufügen von Gewichten kein Problem. Herausforderung 2. Die Arrays werden mit 0 Werten initialisiert, und diese Werte zählen von Anfang an auf den Mittelwert, auch wenn wir nicht genug Werte erhalten. Wenn Sie den Algorithmus für lange Zeit laufen, werden Sie wahrscheinlich nicht stören, dass es für einige Zeit am Anfang zu lernen. Wenn Sie dies tun, können Sie eine Änderung hinterlassen -) beantwortet Jan 21 14 um 15:59 Ihre Antwort 2017 Stack Exchange, Inc

No comments:

Post a Comment