Monday 9 October 2017

Moving Average C Beispiel


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 ist der durchschnittliche Preis in den letzten 100 Tagen. 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 für Sie am besten funktioniert, ist es, mit einer Reihe von verschiedenen Zeiträumen zu experimentieren, bis Sie eine finden, die zu Ihrer Strategie passt. Ich weiß, das ist erreichbar mit Boost wie pro: Aber ich möchte wirklich vermeiden, Boost . Ich habe gegoogelt und fand keine geeigneten oder lesbaren Beispiele. Grundsätzlich möchte ich den gleitenden Durchschnitt eines laufenden Stroms eines Stroms von Gleitkommazahlen mit den aktuellsten 1000 Zahlen als Datenmuster verfolgen. Was ist der einfachste Weg, um dies zu erreichen, experimentierte ich mit einem kreisförmigen Array, einem exponentiellen gleitenden Durchschnitt und einem einfacheren gleitenden Durchschnitt und fand, dass die Ergebnisse aus dem kreisförmigen Array meinen Bedürfnissen am besten entsprechen. Gefragt am 12. Juni 12 um 4:38 Wenn Ihre Bedürfnisse einfach sind, können Sie nur versuchen, einen exponentiellen gleitenden Durchschnitt. Setzen Sie einfach, Sie machen eine Akkumulator-Variable, und wie Ihr Code bei jedem Sample sieht, aktualisiert der Code den Akkumulator mit dem neuen Wert. Sie wählen eine konstante Alpha, die zwischen 0 und 1 ist, und berechnen Sie diese: Sie müssen nur einen Wert von Alpha zu finden, wo die Wirkung einer bestimmten 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, es gibt ein Alpha, die den Durchschnitt über die letzten 1000 Zahlen, ohne Unterlauf in der Gleitkomma Berechnung zu verbreiten würde. Aber wenn du einen kleineren Durchschnitt wünschst, wie 30 Zahlen oder so, das ist eine sehr einfache und schnelle Möglichkeit, es zu tun. Antwortete Jun 12 12 um 4:44 1 auf deinem Post. Der exponentielle gleitende Durchschnitt kann das Alpha variabel sein. So kann es verwendet werden, um Zeitbasis-Mittelwerte (z. B. Bytes pro Sekunde) zu berechnen. Wenn die Zeit seit dem letzten Akkumulator-Update mehr als 1 Sekunde ist, lassen Sie Alpha 1,0 sein. Andernfalls kannst du alpha sein (usecs seit letztem update1000000). Ndash jxh Grundsätzlich möchte ich den gleitenden Durchschnitt eines laufenden Stroms eines Stroms von Gleitkommazahlen mit den aktuellsten 1000 Zahlen als Datenmuster verfolgen. Beachten Sie, dass die unten genannte Gesamtsumme als Elemente als addreplaced, Vermeidung kostspieliger O (N) Traversal, um die Summe zu berechnen - benötigt für die durchschnittliche - on demand. Insgesamt wird ein anderer Parameter von T verwendet, um z. B. Mit einer langen langen, wenn insgesamt 1000 lang s, ein int für char s, oder ein doppeltes bis total float s. Dies ist ein bisschen fehlerhaft, dass Numsamples an INTMAX vorbeikommen könnten - wenn man sich vorstellt, dass man eine langjährige langjährige langwierige Zeit haben könnte. Oder verwenden Sie ein zusätzliches bool Datenelement, um aufzuzeichnen, wenn der Container zum ersten Mal gefüllt wird, während er Numsamples um das Array herumtreibt (am besten dann umbenannt etwas Unschuldiges wie Pos). Antwortete am 12. Juni 12 um 5:19 man geht davon aus, dass der Quanten-Operator (T-Stichprobe) tatsächlich quasi Operator (T-Probe) ist. Ndash oPless Jun 8 14 um 11:52 oPless ahhh. Gut beobachtet. Eigentlich habe ich gedacht, dass es nicht leer ist () (T Probe), aber natürlich könntest du auch immer Notizen verwenden, die du mochst. Werde reden, danke Ndash Tony D Juni 8 14 bei 14: 27 Ich möchte die Berechnung für den Aktienkurs im Durchschnitt entwickeln. Aber viel komplexe Berechnung wurde später geplant. Mein erster Schritt zu wissen, wie man Moving Average effizient berechnen kann. Ich muss wissen, wie man die Input-und Return-Output effizient zu nehmen. Betrachtete Input Datum und Preis. Konsumierte Ausgabe Datum, Preis und Moving Average. Wenn ich 500 Datensätze habe und ich will, um zu berechnen Moving Average für 5 Tage was ist der effiziente Weg, anstatt hin und her zu gehen in der Array von Datum und Preis wieder zu vermeiden, was ist der beste Weg, um Eingang zu erhalten (ArrayList, Tabelle, Array Etc) und return output. Anmerkung: Die heutige MA von 5 Tagen wird der Durchschnitt der letzten 5 Tage einschließlich des heutigen Preises sein. Gestern wird MA der Durchschnitt der letzten 5 Tage von gestern sein. Ich möchte die Tage bleiben, um flexibel zu sein, anstatt 5 könnte es 9, 14, 20 usw. sein. Donnerstag, 10. April 2008 um 15:21 Uhr Wenn du eine einfache Berechnung ohne deine Mühe benötigst, kannst du TA-Lib benutzen. Aber wenn Sie möchten, dass Ihre Berechnung effizienter als TA-Lib ist, dann können Sie Ihren eigenen technischen Indikator erstellen. TA-Lib ist großartig, aber Problem ist, dass diese Bibliothek nur statische Methoden hat. Das heißt, wenn Sie SMA-Array-Werte auf der Grundlage von 500 Preisscheinen berechnen müssen, dann werden Sie das gesamte Array von Bars senden und es wird Array von SMA-Werten zurückgeben. Aber wenn du neue 501-st-Wert bekommst, dann solltest du wieder das ganze Array senden und TA-Lib wird wieder rechnen und SMA-Array von Werten zurückgeben. Stellen Sie sich jetzt vor, Sie brauchen einen solchen Indikator auf echten Preisfutter, und für jede Preisänderung benötigen Sie einen neuen Indikatorwert. Wenn Sie einen Indikator haben, ist kein großes Problem, aber wenn Sie Hunderte Indikatoren arbeiten, könnte es ein Performance-Problem sein. Ich war in einer solchen Situation und fange an, Echtzeit-Indikatoren zu entwickeln, die effizient sind und zusätzliche Berechnungen für neue Preisleisten oder für geänderte Preisscheine machen. Unglücklicherweise brauchte ich nie SMA-Indikator für meine Handelssysteme, aber ich habe solche für EMA, WMA, AD und andere. Ein solcher Indikator AD wird auf meinem Blog veröffentlicht und man kann von dort aus sehen, was die Grundstruktur meiner Echtzeit-Indikator-Klasse ist. Ich hoffe, dass Sie kleine Änderungen benötigen, um SMA-Indikator zu implementieren, denn ist einer der einfachsten. Die Logik ist einfach. Um SMA zu berechnen, benötigen Sie nur n letzte Preiswerte. So Klasseninstanz wird eine Sammlung von Preisen haben, die speichern wird nur die letzten n Anzahl der Preise halten, wie SMA definiert ist (in Ihrem Fall 5). Wenn du also eine neue Bar hast, wirst du die älteste entfernen und neue hinzufügen und die Berechnung erstellen. Donnerstag, 10. April 2008 16:04 Alle Antworten Es gibt eine Bibliothek namens TA-Lib, die alles für dich macht und es ist Open Source. Es hat etwa 50 Indikatoren, die ich denke. Weve hat es in der Produktionsumgebung verwendet und es ist sehr effizient und realibel. Sie können es in C, Java, C, etc. verwenden. Wenn Sie einfache Berechnung ohne Ihre Bemühung benötigen, als Sie TA-Lib verwenden können. Aber wenn Sie möchten, dass Ihre Berechnung effizienter als TA-Lib ist, dann können Sie Ihren eigenen technischen Indikator erstellen. TA-Lib ist großartig, aber Problem ist, dass diese Bibliothek nur statische Methoden hat. Das heißt, wenn Sie SMA-Array-Werte auf der Grundlage von 500 Preisscheinen berechnen müssen, dann werden Sie das gesamte Array von Bars senden und es wird Array von SMA-Werten zurückgeben. Aber wenn du neue 501-st-Wert bekommst, dann solltest du wieder das ganze Array senden und TA-Lib wird wieder rechnen und SMA-Array von Werten zurückgeben. Stellen Sie sich jetzt vor, Sie brauchen einen solchen Indikator auf echten Preisfutter, und für jede Preisänderung benötigen Sie einen neuen Indikatorwert. Wenn Sie einen Indikator haben, ist kein großes Problem, aber wenn Sie Hunderte Indikatoren arbeiten, könnte es ein Performance-Problem sein. Ich war in einer solchen Situation und fange an, Echtzeit-Indikatoren zu entwickeln, die effizient sind und zusätzliche Berechnungen für neue Preisleisten oder für geänderte Preisscheine machen. Unglücklicherweise brauchte ich nie SMA-Indikator für meine Handelssysteme, aber ich habe solche für EMA, WMA, AD und andere. Ein solcher Indikator AD wird auf meinem Blog veröffentlicht und man kann von dort aus sehen, was die Grundstruktur meiner Echtzeit-Indikator-Klasse ist. Ich hoffe, dass Sie kleine Änderungen benötigen, um SMA-Indikator zu implementieren, denn ist einer der einfachsten. Die Logik ist einfach. Um SMA zu berechnen, benötigen Sie nur n letzte Preiswerte. So Klasseninstanz wird eine Sammlung von Preisen haben, die speichern wird nur die letzten n Anzahl der Preise halten, wie SMA definiert ist (in Ihrem Fall 5). Wenn du also eine neue Bar hast, wirst du die älteste entfernen und neue hinzufügen und die Berechnung erstellen. Donnerstag, 10. April 2008 16:04 Ich würde den gleitenden Durchschnitt in der Datenbank über eine gespeicherte Prozedur oder in einen Würfel berechnen. Haben Sie Analysis Services gesehen, hat es die Möglichkeit, gleitende Durchschnitte zu berechnen. Donnerstag, 10. April 2008 16:05 Ja. TA-LIB ist gut, aber vielleicht nicht für mich geeignet. Wenn ich neuen Wert oder aktualisierten Wert für die Geschichte 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. Donnerstag, 10. April 2008 17:51 Die Ausführungszeit eines TA-Lib-Aufrufs auf einem Array von 10000 Elementen dauert ca. 15 Millisekunden (auf einem Intel Core Duo 2.13 Ghz). Dies ist der Durchschnitt aller Funktionen. Zu den schnellsten gehört SMA weniger als 2,5 Millisekunden. Die langsamste, HTTRENDMODE, nimmt 450 Millisekunden. Mit weniger Elementen ist es schneller. SMA dauert ca. 0,2 Millisekunden für 1000 Eingangselemente. Die Geschwindigkeitsverstärkung ist fast linear (der Overhead der Ausführung des Funktionsaufrufs ist vernachlässigbar). Im Rahmen Ihrer Bewerbung ist TA-Lib sehr unwahrscheinlich, dass Ihr Engpass für Geschwindigkeitsleistung ist. Auch ich in der Regel nicht empfehlen, diese quotlast nquot Lösung. Lesen Sie weiter 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 von Größe 10000 haben, haben Daten initialisieren nur für die ersten 500 Elemente, fügen Sie ein Element und rufen TA-Lib, um die SMA nur für das neue Element zu berechnen. TA-Lib wird nicht mehr als nötig aussehen (wenn SMA von 5, dann wird TA-Lib eine einzelne SMA mit den letzten 5 Werten berechnen). Dies ist mit dem Parameter startIdx und endIdx möglich. Sie können einen zu berechnenden Bereich oder einen einzelnen Wert angeben. In diesem Szenario würden Sie startIdx endIdx 500, um das 501st Element zu berechnen. Warum ist eine solche Quell-Napot-Lösung potenziell gefährlich für einige Unabhängig von der Auswahl Boban. s Lösung oder TA-Lib betrachten, dass mit einer kleinen endlichen Anzahl von vergangenen Daten nicht gut funktionieren mit den meisten TA-Funktionen. Mit SMA ist es offensichtlich, dass man nur n Element benötigt, 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 von dem vorherigen Wert ab, um den neuen Wert zu berechnen. Die Funktion ist rekursiv. Das bedeutet, dass alle bisherigen Werte Einfluss auf zukünftige Werte haben. Wenn Sie sich entscheiden, Ihren Algo zu verwenden, um nur eine kleine Anzahl von vergangenen n Wert zu 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 das oft im Kontext von TA-Lib besprochen (ich nenne es den quartierbaren Zeitraum in der Dokumentation und dem Forum). Um es ganz einfach zu halten, ist meine allgemeine Empfehlung, wenn Sie den Unterschied zwischen einem Algo mit einer endlichen Impulsantwort (FIR) aus einem Algo mit einer unendlichen Impulsantwort (IIR) nicht machen können. Sie werden sicherer sein, über alle Daten zu berechnen, die Sie haben verfügbar. TA-Lib spezifiziert in dem Code, dessen Funktionen eine instabile Periode (IIR) haben. Bearbeitet von mfortier Freitag, 15. August 2008 04:25 Korrigieren Sie englischen Satz Freitag, 15. August 2008 04:20

No comments:

Post a Comment