Tuesday 15 August 2017

Bewegungs Durchschnitts Berechnungs Algorithmus


Moving Average. This Beispiel lehrt Sie, wie man den gleitenden Durchschnitt einer Zeitreihe in Excel berechnen Ein gleitender Durchschnitt wird verwendet, um Unregelmäßigkeiten Peaks und Täler zu glätten, um Trends leicht zu erkennen.1 Zuerst lassen Sie uns einen Blick auf unsere Zeitreihe Klicken Sie auf der Registerkarte Daten auf Datenanalyse. Hinweis finden Sie die Schaltfläche Datenanalyse Klicken Sie hier, um das Analyse-ToolPak-Add-In zu laden. 3. Wählen Sie Gleitender Durchschnitt und klicken Sie auf OK.4 Klicken Sie in das Feld Eingabebereich und wählen Sie den Bereich B2 M2 aus. 5 Klicken Sie in das Feld Intervall und geben Sie ein. 6.6 Klicken Sie in das Feld Ausgabebereich und wählen Sie Zelle B3.8 Zeichnen Sie einen Graphen dieser Werte. Erläuterung, weil wir das Intervall auf 6 setzen, ist der gleitende Durchschnitt der Durchschnitt der vorherigen 5 Datenpunkte und Der aktuelle Datenpunkt Als Ergebnis werden Spitzen und Täler geglättet. Der Graph 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 das Intervall 2 Und Intervall 4.Conclusion Die la Rger das Intervall, je mehr die Gipfel und Täler geglättet werden Je kleiner das Intervall ist, desto näher sind die gleitenden Mittelwerte zu den tatsächlichen Datenpunkten. Ich möchte einen iterativen Algorithmus implementieren, der den gewichteten Durchschnitt berechnet. Das spezifische Gewichtsgesetz spielt keine Rolle, Aber es sollte in der Nähe von 1 für die neuesten Werte und nahe bei 0 zu den ältesten sein. Der Algorithmus sollte iterativ sein, dh es sollte sich nicht an alle vorherigen Werte erinnern Es sollte nur einen neuesten Wert und alle aggregativen Informationen über Vergangenheit wissen, wie vorherige Werte von Der Durchschnitt, Summen, Zählungen etc. Zum Beispiel kann der folgende Algorithmus sein. Es wird exponentiell abnehmende Gewicht geben, was vielleicht nicht gut ist Ist es möglich, Schritt abnehmende Gewicht oder etwas zu haben. Die Anforderungen an das Wiegegesetz sind folgt.1 Das Gewicht verringert sich in die Vergangenheit 2 Ich habe einige mittlere oder charakteristische Dauer, so dass Werte älter diese Dauer ist viel weniger als neuere 3 Ich sollte in der Lage sein, diese Dauer zu setzen. Ich brauche die folgenden Supp Ose vi sind Werte, wo v1 ist die erste Auch annehmen wi sind Gewichte Aber w0 ist das LETZTE. So, nach dem ersten Wert kam ich zuerst durchschnittlich. Nach dem zweiten Wert v2 kam, hätte ich durchschnittlich. With nächsten Wert sollte ich haben. Hinweis, dass das Gewicht Profil bewegt sich mit mir, während ich bin bewegte Wert Sequenz. I e jeder Wert hat nicht, dass es eigenes Gewicht die ganze Zeit Mein Ziel ist es, dieses Gewicht niedriger zu haben, während nach Vergangenheit. But meine Aufgabe ist Durchschnittlich neu berechnet werden jedes Mal, wenn neue Wert kommt mit alten Werten wiedergewichtet OP. Your Aufgabe ist fast immer unmöglich, auch mit außergewöhnlich einfachen Gewichtung Schemata. Sie werden gefragt, mit O 1 Speicher, Ausstiege Mittel mit einem sich ändernden Gewichtung Schema Zum Beispiel als Neue Werte werden eingegangen, für einige fast willkürlich ändernde Gewichte Sequenz Dies ist unmöglich aufgrund der Injektivität Sobald Sie die Zahlen zusammen verschmelzen, verlieren Sie eine riesige Menge an Informationen Zum Beispiel, auch wenn Sie das Gewicht Vektor hatten, konnte man nicht wiederherstellen Original va Lue vector oder umgekehrt Es gibt nur zwei Fälle, an die ich denken kann, wo man mit diesem wegkommt. Konstante Gewichte wie 2,2,2 2 Dies entspricht einem Online-Mittelungsalgorithmus, den man nicht will Die alten Werte werden nicht wiedergewichtet. Die relativen Gewichte der vorherigen Antworten ändern sich nicht. Zum Beispiel könnten Sie Gewichte von 8,4,2,1 machen und in ein neues Element mit beliebigem Gewicht wie 1 hinzufügen, aber Sie müssen alle vorherigen durch erhöhen Der gleiche multiplikative Faktor, wie 16,8,4,2 1 Also bei jedem Schritt fügst du ein neues willkürliches Gewicht und eine neue willkürliche Reskalierung der Vergangenheit hinzu, also hast du 2 Freiheitsgrade nur 1, wenn du dich behalten musst Ihr dot-Produkt normalisiert Die Gewicht-Vektoren, die du bekommst, würde aussehen. Thus irgendein Gewichtungsschema, das du so aussehen möchtest, dass es funktionieren wird, es sei denn du musst das Ding durch die Summe der Gewichte normalisieren, in diesem Fall musst du das dann teilen Neuer Mittelwert durch die neue Summe, die man berechnen kann, indem man nur O 1 Speicher nur vielfach hält Der vorherige Durchschnitt durch die neuen s, die implizit über das Punktprodukt in die Gewichte verteilen wird, und die neue w newValue. anwered Mar 29 12 bei 21 27 zu übernehmen. Ich gehe davon aus, dass die Gewichte auf 1 liegen wollen Wie Sie ein relatives Gewicht generieren können, 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. Überprüfen Sie die Form Summe s0 i0 S1 i1 s2 i2 sn in Summe 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 sollten keine Gewichte generieren, die zu einem Summen - der Trick hier ist das Wir durchschnittlich durch dividieren durch die Summe der Gewichte, so dass am Ende die Gewichte praktisch scheinen, zu einem zu summieren. Der eigentliche Trick ist, wie Sie berechnenWeightFromCounter Sie könnten einfach den Zähler selbst zurückgeben, zum Beispiel, beachten Sie jedoch, dass die letzten gewichtet Nummer wou Ld 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, haben Sie links ein ziemlich offenes Problem. answered Mar 28 12 bei 21 45. Problem ist, dass sich die Gewichte mit jedem neuen Wert ändern In Ihrem Fall sind sie nicht Suzan Cioc Mar 29 12 bei 14 43. Die tatsächlichen verwendeten Gewichte ändern sich mit jedem neuen Wert - die Gewichte werden durch eine sukzessive größere Zahl geteilt, wodurch sie durchgesetzt werden Dass die tatsächlichen verwendeten Gewichte immer zu 1 Kaganar Mar 29 12 bei 14 45.This ist zu lang, um in einem Kommentar zu posten, aber es kann nützlich sein, zu wissen. Supput haben Sie w0 vn wn v0 wir nennen diese w 0 nvn 0 Kurz. Dann ist der nächste Schritt w0 vn1 wn1 v0 und das ist w 0 n1 v n1 0 für short. This bedeutet, dass wir einen Weg brauchen, um w 1 n1 vn 0 aus w 0 nvn 0 zu berechnen. Es ist sicherlich möglich, dass vn 0 Ist 0 0, z, 0 0 wobei z an irgendeiner Stelle x ist. Wenn wir keinen zusätzlichen Speicher haben, dann ist fzwxzwx 1 wobei wx das Gewicht für die Position x. Rearrangin ist G die Gleichung, wx 1 fzwxz Nun, wx 1 besser ist konstant für eine konstante x, also fzwxz besser konstant sein also f muss z propagieren - das heißt, fzwxzfw x. But hier wieder haben wir ein Problem Beachten Sie, dass wenn z Das könnte eine beliebige Zahl sein kann durch f dann wx sicherlich so fzwxwxfz Also fwxwxfz Also für eine konstante xwx ist konstant, und damit fwx besser konstant, zu wx ist konstant, so fz besser konstant sein, so dass wxfz konstant ist Also fwxwxc wo C ist eine Konstante. So, fxcx wobei c eine Konstante ist, wenn x ein Gewichtswert ist. Das ist, jedes Gewicht ist ein Vielfaches der vorherigen Also, die Gewichte nehmen die Form wxmb x. Hinweis, dass dies die einzige Information f hat Ist der letzte aggregierte Wert Beachten Sie, dass Sie an einem gewissen Punkt 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 keinen unendlichen Längenvektor von reellen Zahlen mit einer realen Zahl darstellen, aber Sie Kann sie annähern Irgendwie in einer konstanten, endlichen Menge an Lagerung Aber das wäre nur eine Annäherung. Obwohl ich es nicht sorgfältig 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 Verwenden Sie log n Raum, der auch O 1 für viele praktische Anwendungen sein kann, um eine Qualitätsnäherung zu erzeugen. Sie können in der Lage sein, noch weniger zu benutzen. Jemand am 29. März um 23 01. Ich habe versucht, praktisch etwas in Java zu schreiben Wie gesagt wurde, Ihr Ziel ist nicht erreichbar Sie können nur durchschnittlich von einer Anzahl von zuletzt erinnerten Werten zählen Wenn Sie nicht brauchen, um genau zu sein, können Sie die älteren Werte, die ich versuchte, es zu tun, indem Sie die letzten 5 Werte genau und ältere Werte nur SUMM von 5 Werte, Erinnerung an die letzten 5 SUMs Dann ist die Komplexität O 2n für die Erinnerung an die letzten nnn Werte Dies ist eine sehr grobe Annäherung. Sie können die letztenValues ​​und lasAggregatedSums Array-Größen ändern, wie Sie wollen Siehe dieses Ascii-Kunst-Bild versucht, eine Grafik von Die letzten Werte, die zeigen, dass die ersten Spalten älteren Daten als aggregierten Wert nicht einzeln gespeichert werden, und nur die frühesten 5 Werte werden einzeln gespeichert. Challenge 1 Mein Beispiel doesn t zählen Gewichte, aber ich denke, es wäre kein Problem für Sie, um Gewichte hinzuzufügen Für die letztenAggregatedSums passend - das einzige Problem ist, dass, wenn Sie niedrigere Gewichte für ältere Werte wollen, wäre es schwieriger, weil das Array rotiert, so ist es nicht einfach zu wissen, welches Gewicht für welches Array-Mitglied Vielleicht können Sie den Algorithmus ändern Um immer Werte im Array zu verschieben, anstatt sich zu drehen. Hinzufügen von Gewichten sollte kein Problem sein. Challenge 2 Die Arrays werden mit 0 Werten initialisiert, und diese Werte zählen zu dem Durchschnitt von Anfang an, auch wenn wir nicht genug Werte erhalten Sie laufen den Algorithmus für lange Zeit, Sie wahrscheinlich don t stören, dass es für eine Zeit am Anfang zu lernen, wenn Sie tun, können Sie eine Änderung zu veröffentlichen. answered Jan 21 14 um 15 59.Y Unsere Antwort.2017 Stack Exchange, Inc. Moving Average - MA. BREAKING DOWN Moving Average - MA. As ein SMA Beispiel, betrachten Sie eine Sicherheit mit den folgenden Schlusskurse über 15 Tage. Week 1 5 Tage 20, 22, 24, 25, 23.Week 2 5 Tage 26, 28, 26, 29, 27.Week 3 5 Tage 28, 30, 27, 29, 28. Ein 10-Tage-MA würde die Schlusskurse für die ersten 10 Tage als erste Daten ausgleichen Punkt Der nächste Datenpunkt würde den frühesten Preis fallen lassen, den Preis am Tag 11 addieren und den Durchschnitt nehmen, und so weiter wie unten gezeigt. Wie bereits erwähnt, verbleibt MAs die aktuelle Preisaktion, weil sie auf vergangenen Preisen basieren, je länger der Zeitraum ist Für die MA, desto größer die Lag So ein 200-Tage-MA wird eine viel größere Verzögerung als ein 20-Tage-MA haben, weil es Preise für die letzten 200 Tage enthält Die Länge der MA zu verwenden hängt von den Handelszielen, Mit kürzeren MAs für kurzfristige Handel und längerfristige MAs mehr geeignet für langfristige Investoren Die 200-Tage-MA ist weit gefolgt von Investoren und Händlern, mit Pausen oben Und unterhalb dieser gleitenden Durchschnitt als wichtige Handelssignale. MAs auch vermitteln wichtige Handelssignale auf eigene Faust, oder wenn zwei Durchschnitte überkreuzen Eine steigende MA zeigt, dass die Sicherheit in einem Aufwärtstrend ist, während eine abnehmende MA zeigt, dass es in einem Abwärtstrend ist Ähnlich wird die Aufwärtsbewegung mit einer bullischen Überkreuzung bestätigt, die auftritt, wenn ein kurzfristiges MA über einen längerfristigen MA-Abwärtsimpuls mit einem bärigen Übergang bestätigt wird, der auftritt, wenn ein kurzfristiges MA unter einem längerfristigen MA übergeht.

No comments:

Post a Comment