Moving Average Dieses Beispiel lehrt, wie Sie den gleitenden Durchschnitt einer Zeitreihe in Excel berechnen. Eine Bewegung wird verwendet, um Unregelmäßigkeiten (Spitzen und Täler) zu glätten, um Trends leicht zu erkennen. 1. Erstens, werfen wir einen Blick auf unsere Zeitreihe. 2. Klicken Sie auf der Registerkarte Daten auf Datenanalyse. Hinweis: Klicken Sie hier, um das Analyse-ToolPak-Add-In zu laden. 3. Wählen Sie Verschiebender Durchschnitt aus, und klicken Sie auf OK. 4. Klicken Sie im Feld Eingabebereich auf 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 aus. 8. Zeichnen Sie ein Diagramm dieser Werte. Erläuterung: Da wir das Intervall auf 6 setzen, ist der gleitende Durchschnitt der Durchschnitt der letzten 5 Datenpunkte und der aktuelle Datenpunkt. Als Ergebnis werden Spitzen und Täler geglättet. Die Grafik zeigt eine zunehmende Tendenz. Excel kann den gleitenden Durchschnitt für die ersten 5 Datenpunkte nicht berechnen, da nicht genügend frühere Datenpunkte vorhanden sind. 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 Spitzen und Täler geglättet. Je kleiner das Intervall, desto näher sind die gleitenden Mittelwerte zu den tatsächlichen Datenpunkten. Möchten Sie diese Website kostenlos teilen Bitte teilen Sie diese Seite auf GoogleTaking ein gleitender Durchschnitt ist ein Glättungsprozess Eine alternative Möglichkeit, die Vergangenheit Daten zusammenzufassen ist, den Mittelwert der sukzessive kleinere Mengen von Zahlen der vergangenen Daten wie folgt zu berechnen. Erinnern Sie sich die Menge der Zahlen 9, 8, 9, 12, 9, 12, 11, 7, 13, 9, 11, 10, die der Dollar-Menge von 12 Lieferanten zufällig ausgewählt wurden. Es sei (M), die Größe des kleineren Satzes gleich 3. Dann ist der Durchschnitt der ersten 3 Zahlen: (9 8 9) / 3 8.667. Dies wird als Glättung (d. H. Irgendeine Form der Mittelung) bezeichnet. Dieser Glättungsprozeß wird fortgesetzt, indem man eine Periode vorrückt und den nächsten Durchschnitt von drei Zahlen berechnet, wobei die erste Zahl fallengelassen wird. Moving Average Beispiel Die nächste Tabelle fasst den Prozess zusammen, der als Moving Averaging bezeichnet wird. Der allgemeine Ausdruck für den gleitenden Durchschnitt ist Mt frac cdots X. Gleitender Durchschnitt - MA Als SMA-Beispiel gilt eine Sicherheit mit folgenden Schlusskursen über 15 Tage: Woche 1 (5 Tage) 20, 22, 24, 25, 23 Woche 2 (5 Tage ) 26, 28, 26, 29, 27 Woche 3 (5 Tage) 28, 30, 27, 29, 28 Eine 10-tägige MA würde die Schlusskurse für die ersten 10 Tage als ersten Datenpunkt ausrechnen. Der nächste Datenpunkt würde den frühesten Preis senken, den Preis am Tag 11 addieren und den Durchschnitt nehmen, und so weiter, wie unten gezeigt. Wie bereits erwähnt, verzögert MAs die aktuelle Preisaktion, weil sie auf vergangenen Preisen basieren, je länger der Zeitraum für die MA ist, desto größer ist die Verzögerung. So wird ein 200-Tage-MA haben eine viel größere Verzögerung als eine 20-Tage-MA, weil es Preise für die letzten 200 Tage enthält. Die Länge des zu verwendenden MA hängt von den Handelszielen ab, wobei kürzere MAs für den kurzfristigen Handel und längerfristige MAs eher für langfristige Anleger geeignet sind. Die 200-Tage-MA ist weithin gefolgt von Investoren und Händlern, mit Pausen über und unter diesem gleitenden Durchschnitt als wichtige Trading-Signale. MAs auch vermitteln wichtige Handelssignale auf eigene Faust, oder wenn zwei Durchschnitte überqueren. Eine steigende MA zeigt an, dass die Sicherheit in einem Aufwärtstrend liegt. Während eine sinkende MA zeigt, dass es in einem Abwärtstrend ist. In ähnlicher Weise wird das Aufwärtsmoment mit einem bulligen Crossover bestätigt. Die auftritt, wenn eine kurzfristige MA über einem längerfristigen MA kreuzt. Abwärts-Momentum wird mit einem bärischen Übergang bestätigt, der auftritt, wenn eine kurzfristige MA-Kreuzung unterhalb einer längerfristigen MA. Ich möchte Berechnung für Aktienkurs gleitenden Durchschnitt zu entwickeln. Aber viel komplexe Berechnung wurden später geplant. Mein erster Schritt zu wissen, wie man Moving Average effizient zu berechnen. Ich muss wissen, wie die Input-und Return-Ausgang effizient zu nehmen. Als Eingabe Datum und Preis. Ausgegebenes Datum, Preis und gleitender Durchschnitt. Wenn ich 500 Datensätze haben und ich möchte gleitende Durchschnitt für 5 Tage zu berechnen, was ist der effient Weg anstatt hin und her im Array von Datum und Preis wieder bitte sugest, was ist der beste Weg, um Eingang (ArrayList, Tabelle, Array Etc) und Ausgang zurück. Anmerkung: Der heutige MA von 5 Tagen wird der Durchschnitt der letzten 5 Tage einschließlich heute Preis sein. Gestern ist MA durchschnittlich der letzten 5 Tage von gestern. Ich möchte die Tage halten, um flexibel zu sein anstatt 5 könnte es 9, 14, 20 etc. sein. Wenn Sie einfache Berechnung ohne Ihre Bemühung benötigen, als Sie TA-Lib verwenden können. Aber wenn Sie wollen, dass Ihre Rechnung effizienter ist als TA-Lib, dann können Sie Ihre eigene technische Indikator erstellen. TA-Lib ist groß, aber Problem ist, dass diese Bibliothek nur statische Methoden haben. Das bedeutet, wenn Sie SMA-Array-Werte auf Basis von 500 Preisleisten berechnen müssen, dann werden Sie das gesamte Array von Balken senden und es wird Array von SMA-Werten zurückgeben. Aber wenn Sie neue 501-st-Wert erhalten, dann sollten Sie wieder das gesamte Array und TA-Lib erneut berechnen und zurückgeben SMA-Array von Werten. Stellen Sie sich jetzt vor, Sie brauchen einen solchen Indikator für den realen Preis, und für jede Preisänderung benötigen Sie einen neuen Indikatorwert. Wenn Sie einen Indikator nicht ein großes Problem haben, aber wenn Sie Hunderte Indikatoren arbeiten, könnte es ein Leistungsproblem sein. Ich war in einer solchen Situation und beginnen die Entwicklung von Echtzeit-Indikatoren, die effizient sind und zusätzliche Berechnungen für neue Preisleiste oder für geänderte Preisleiste nur. Leider habe ich nie benötigt SMA-Indikator für meine Handelssysteme, aber ich habe solche für EMA, WMA, AD, und andere. Ein solcher Indikator AD ist in meinem Blog veröffentlicht und Sie können von dort sehen, was ist die grundlegende Struktur meiner Echtzeit-Indikator-Klasse. Ich hoffe, Sie benötigen kleine Änderungen, um SMA-Indikator zu implementieren, denn ist einer der einfachsten. Die Logik ist einfach. Zur Berechnung von SMA benötigen Sie nur die letzten Preiswerte. So Klasse Instanz haben Sammlung von Preisen, die Speicherung halten nur letzte n Anzahl der Preise als SMA definiert ist (in Ihrem Fall 5). Also, wenn Sie neue Bar haben, werden Sie älteste entfernen und neue hinzufügen und erstellen Berechnung. Donnerstag, 10. April 2008 16:04 Alle Antworten Es gibt eine Bibliothek namens TA-Lib, die alles für Sie erledigt und es ist Open Source. Es hat etwa 50 Indikatoren denke ich. Weve verwendet es in der Produktionsumgebung und es ist sehr effizient und realible. Sie können es in C, Java, C, etc. verwenden. Wenn Sie einfache Berechnung ohne Ihren Aufwand benötigen, als Sie TA-Lib verwenden können. Aber wenn Sie wollen, dass Ihre Rechnung effizienter ist als TA-Lib, dann können Sie Ihre eigene technische Indikator erstellen. TA-Lib ist groß, aber Problem ist, dass diese Bibliothek nur statische Methoden haben. Das bedeutet, wenn Sie SMA-Array-Werte auf Basis von 500 Preisleisten berechnen müssen, dann werden Sie das gesamte Array von Balken senden und es wird Array von SMA-Werten zurückgeben. Aber wenn Sie neue 501-st-Wert erhalten, dann sollten Sie wieder das gesamte Array und TA-Lib erneut berechnen und zurückgeben SMA-Array von Werten. Stellen Sie sich jetzt vor, Sie brauchen einen solchen Indikator für den realen Preis, und für jede Preisänderung benötigen Sie einen neuen Indikatorwert. Wenn Sie einen Indikator nicht ein großes Problem haben, aber wenn Sie Hunderte Indikatoren arbeiten, könnte es ein Leistungsproblem sein. Ich war in einer solchen Situation und beginnen die Entwicklung von Echtzeit-Indikatoren, die effizient sind und zusätzliche Berechnungen für neue Preisleiste oder für geänderte Preisleiste nur. Leider habe ich nie benötigt SMA-Indikator für meine Handelssysteme, aber ich habe solche für EMA, WMA, AD, und andere. Ein solcher Indikator AD ist in meinem Blog veröffentlicht und Sie können von dort sehen, was ist die grundlegende Struktur meiner Echtzeit-Indikator-Klasse. Ich hoffe, Sie benötigen kleine Änderungen, um SMA-Indikator zu implementieren, denn ist einer der einfachsten. Die Logik ist einfach. Zur Berechnung von SMA benötigen Sie nur die letzten Preiswerte. So Klasse Instanz haben Sammlung von Preisen, die Speicherung halten nur letzte n Anzahl der Preise als SMA definiert ist (in Ihrem Fall 5). Also, wenn Sie neue Bar haben, werden Sie älteste entfernen und neue hinzufügen und erstellen Berechnung. Ich würde den gleitenden Durchschnitt in der Datenbank über eine gespeicherte Prozedur oder in einem Cube berechnen. Haben Sie sich Analysis Services angesehen, hat es die Möglichkeit, gleitende Durchschnitte zu berechnen. Donnerstag, 10. April 2008 16:05 Ja. TA-LIB ist gut, aber vielleicht nicht geeignet für mich. Wenn ich neuen Wert oder aktualisierten Wert für den Verlauf der Datensätze Ich werde die Berechnung in einer separaten Funktion nur für das neue Angebot und speichern Sie es in der Datenbank. Ich plane, das Zitat jede Stunde zu aktualisieren. Ich muss etwa 25 bis 30 technische Indikatoren für 2200 Aktien machen. Die Ausführungszeit eines TA-Lib-Aufrufs auf einem Array von 10000 Elementen beträgt etwa 15 Millisekunden (auf einem Intel Core Duo 2,13 Ghz). Dies ist der Durchschnitt aller Funktionen. Unter den schnellsten, nimmt SMA weniger als 2,5 Millisekunden. Der langsamste HTTRENDMODE benötigt 450 Millisekunden. Mit weniger Elementen ist es schneller. SMA benötigt ca. 0,22 Millisekunden für 1000 Eingangselemente. Die Geschwindigkeitsverstärkung ist fast linear (der Aufwand für die Ausführung des Funktionsaufrufs ist vernachlässigbar). Im Rahmen Ihrer Bewerbung ist TA-Lib höchstwahrscheinlich Ihr Engpass für die Geschwindigkeitsleistung. Auch ich in der Regel nicht empfehlen, solche quotlast nquot Lösung. Lesen Sie unten für Details. Zuerst eine Korrektur zur Boban. s-Anweisung Alle Funktionen in TA-Lib können auch einen einzigen letzten Wert berechnen, indem sie ein Minimum an Quell-nquot-Elementen verwenden. Sie können ein Array der Größe 10000 haben, die Daten nur für die ersten 500 Elemente initialisieren, ein Element hinzufügen und TA-Lib aufrufen, um die SMA nur für das neue Element zu berechnen. TA-Lib schaut nicht mehr als nötig (wenn SMA von 5, dann wird TA-Lib ein einzelnes SMA mit den letzten 5 Werten berechnen). Dies wird mit dem Parameter startIdx und endIdx ermöglicht. Sie können einen zu berechnenden Bereich oder einen einzelnen Wert angeben. In diesem Szenario würden Sie startIdx endIdx 500 machen, um das 501st-Element zu berechnen. Warum ist solch eine Quell-nquot-Lösung für einige gefährlich? Unabhängig von der Auswahl der Boban. s-Lösung oder TA-Lib bedenkt man, dass die Verwendung einer kleinen endlichen Anzahl von vergangenen Daten nicht gut funktioniert mit den meisten TA-Funktionen. Mit SMA, ist es offensichtlich, dass Sie nur n Element benötigen, um einen Durchschnitt über n Element zu berechnen. Es ist nicht so einfach mit EMA (und vielen anderen TA-Funktionen). Der Algo hängt oft vom vorherigen Wert ab, um den neuen Wert zu berechnen. Die Funktion ist rekursiv. Das bedeutet, dass alle vergangenen Werte einen Einfluss auf zukünftige Werte haben. Wenn Sie sich entscheiden, Ihr algo zu verwenden, um nur eine kleine Menge von Vergangenheit n Wert verwenden, erhalten Sie nicht das gleiche Ergebnis wie jemand, der über eine große Anzahl von vergangenen Werten berechnet. Die Lösung ist ein Kompromiss zwischen Geschwindigkeit und Präzision. Ich habe dies oft im Zusammenhang mit TA-Lib diskutiert (ich nenne es die quotquellierbare Periodquot in der Dokumentation und Forum). Um es einfach zu halten, meine allgemeine Empfehlung ist, wenn Sie nicht den Unterschied zwischen einem Algo mit einer endlichen Impulsantwort (FIR) aus einem Algo mit einer unendlichen Impulsantwort (IIR) machen können, sind Sie sicherer zu berechnen, über alle Daten, die Sie haben erhältlich. TA-Lib spezifizieren im Code, welche seiner Funktionen eine instabile Periode (IIR) haben. Bearbeitet von mfortier Freitag, den 15. August 2008 um 04:25 Uhr Richtigen englischen Satz Freitag, August 15, 2008 4:20 AM Ich weiß, das ist mit boost wie pro: Aber ich möchte wirklich vermeiden, mit Boost. Ich habe gegoogelt und keine geeigneten oder lesbaren Beispiele gefunden. Grundsätzlich möchte ich den gleitenden Durchschnitt eines laufenden Stroms eines Gleitkommazahlstroms mit den letzten 1000 Zahlen als Datenprobe verfolgen. Was ist der einfachste Weg, um dies zu erreichen, experimentierte ich mit einem kreisförmigen Array, exponentiellen gleitenden Durchschnitt und einem einfacheren gleitenden Durchschnitt und festgestellt, dass die Ergebnisse aus dem kreisförmigen Array meine Bedürfnisse am besten geeignet. Wenn Ihre Bedürfnisse sind einfach, können Sie nur versuchen, mit einem exponentiellen gleitenden Durchschnitt. Setzen Sie einfach, Sie eine Akkumulator-Variable, und wie Ihr Code sieht auf jede Probe, aktualisiert der Code den Akkumulator mit dem neuen Wert. Sie wählen eine konstante Alpha, die zwischen 0 und 1 ist, und berechnen Sie: Sie müssen nur einen Wert von Alpha zu finden, wo die Wirkung einer gegebenen Probe nur für etwa 1000 Proben dauert. Hmm, Im nicht wirklich sicher, dass dies für Sie geeignet ist, jetzt, dass Ive es hier. Das Problem ist, dass 1000 ist ein ziemlich langes Fenster für einen exponentiellen gleitenden Durchschnitt Im nicht sicher, gibt es ein Alpha, die den Durchschnitt über die letzten 1000 Zahlen, ohne Unterlauf in der Gleitkomma Berechnung. Aber, wenn Sie einen kleineren Durchschnitt wünschen, wie 30 Zahlen oder so, dieses ist eine sehr einfache und schnelle Weise, es zu tun. Beantwortet Jun 12 12 at 4:44 1 auf Ihrem Beitrag. Der exponentielle gleitende Durchschnitt kann zulassen, dass das Alpha variabel ist. Somit kann dies dazu verwendet werden, Zeitbasisdurchschnitte (z. B. Bytes pro Sekunde) zu berechnen. Wenn die Zeit seit dem letzten Akkumulator-Update mehr als 1 Sekunde beträgt, lassen Sie Alpha 1.0 sein. Andernfalls können Sie Alpha zulassen (usecs seit letztem Update / 1000000). Ndash jxh Grundsätzlich möchte ich den gleitenden Durchschnitt eines laufenden Stroms eines Gleitkommazahls mit den neuesten 1000 Zahlen als Datenbeispiel zu verfolgen. Beachten Sie, dass im Folgenden die Summe als Elemente ergänzt / ersetzt wird, wodurch kostspielige O (N) - Transversionen vermieden werden, um die Summe zu berechnen, die für den durchschnittlichen Bedarf benötigt wird. Insgesamt wird ein anderer Parameter von T gebildet, um z. B. Mit einer langen langen, wenn insgesamt 1000 lange s, eine int für char s, oder eine doppelte bis total float s. Dies ist ein wenig fehlerhaft, dass Nennsignale an INTMAX vorbeiziehen könnten - wenn Sie darauf achten, dass Sie ein langes langes nicht signiertes verwenden konnten. Oder verwenden Sie ein zusätzliches Bool-Datenelement, um aufzuzeichnen, wenn der Container zuerst gefüllt wird, während numsamples rund um das Array (am besten dann umbenannt etwas harmlos wie pos). Man nehme an, daß der quadratische Operator (T-Abtastwert) tatsächlich quadratischer Operator (T-Abtastwert) ist. Ndash oPless Jun 8 14 um 11:52 Uhr oPless ahhh. Gut beobachtet. Eigentlich meinte ich, dass es sich um void operator () (T sample) handelt, aber natürlich könntet ihr auch irgendeine Notation verwenden, die ihr mochtet. Wird beheben, danke. Ndash Tony D Jun 14 14 am 14:27
No comments:
Post a Comment