Tuesday 2 May 2017

Moving Average Fast Algorithm

Was ist die EMA-Formel und wie wird die EMA berechnet? Der exponentielle gleitende Durchschnitt (EMA) ist ein gewichteter gleitender Durchschnitt (WMA), der den aktuellen Preisdaten mehr Gewichtung oder Bedeutung verleiht als der einfache gleitende Durchschnitt (SMA) ) Nicht. Die EMA reagiert schneller auf die jüngsten Preisänderungen als die SMA. Die Formel für die Berechnung der EMA beinhaltet nur die Verwendung eines Multiplikators und beginnend mit dem SMA. Die Berechnung für die SMA ist sehr einfach. Die SMA für eine gegebene Anzahl von Zeitperioden ist einfach die Summe der Schlusskurse für diese Anzahl von Zeitperioden, geteilt durch dieselbe Zahl. So ist beispielsweise eine 10-tägige SMA nur die Summe der Schlusskurse der letzten 10 Tage, geteilt durch 10. Die drei Schritte zur Berechnung der EMA sind: Berechnen Sie die SMA. Berechnen Sie den Multiplikator für die Gewichtung der EMA. Berechnen Sie die aktuelle EMA. Die mathematische Formel, in diesem Fall für die Berechnung einer 10-Perioden-EMA, sieht folgendermaßen aus: SMA: 10 Periodensumme / 10 Berechnung des Gewichtungsmultiplikators: (2 / (gewählter Zeitraum 1)) (2 / (10 1)) 0,1818 (18.18) Berechnung des EMA: (Schlusskurs-EMA (Vortag)) x Multiplikator EMA (Vortag) Die Gewichtung des jüngsten Preises ist für einen kürzeren Zeitraum höher als für einen längeren Zeitraum EMA. Beispielsweise wird ein 18,18-Multiplikator auf die jüngsten Preisdaten für eine 10 EMA angewendet, während für eine 20 EMA nur eine 9,52-Multiplikator-Gewichtung verwendet wird. Es gibt auch leichte Variationen der EMA angekommen, indem Sie den offenen, hohen, niedrigen oder mittleren Preis anstelle der Verwendung der Schlusskurs. Verwenden Sie den exponentiellen gleitenden Durchschnitt (EMA), um eine dynamische Forex-Handelsstrategie zu erstellen. Erfahren Sie, wie EMAs sehr genutzt werden können. Read Answer Lernen Sie die wichtigen potenziellen Vorteile der Verwendung eines exponentiellen gleitenden Durchschnitt beim Trading, anstatt einer einfachen Bewegung. Read Answer Erfahren Sie mehr über einfache gleitende Durchschnitte und exponentielle gleitende Durchschnitte, was diese technischen Indikatoren messen und den Unterschied. Read Answer Erfahren Sie die Formel für die gleitende durchschnittliche Konvergenz Divergenz Momentum Indikator und finden Sie heraus, wie die MACD zu berechnen. Read Answer Erfahren Sie mehr über verschiedene Arten von gleitenden Durchschnitten und gleitende durchschnittliche Crossover, und verstehen Sie, wie sie verwendet werden. Read Answer Entdecken Sie die primären Unterschiede zwischen exponentiellen und einfachen gleitenden durchschnittlichen Indikatoren und welche Nachteile EMAs können. Antwort lesen Ich weiß, dies ist erreichbar 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 eine lange Zeit lang ohne Vorzeichen verwenden können. 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 Juni 14 14 um 14: 27Der Wissenschaftler und Ingenieure Leitfaden für digitale Signalverarbeitung Von Steven W. Smith, Ph. D. Ein enormer Vorteil des gleitenden Mittelfilters besteht darin, dass er mit einem sehr schnellen Algorithmus implementiert werden kann. Um diesen Algorithmus zu verstehen, stellen Sie sich vor, ein Eingangssignal, x, durch ein siebenpunktiges gleitendes Durchschnittsfilter zu führen, um ein Ausgangssignal y zu bilden. Nun wird untersucht, wie zwei benachbarte Ausgangspunkte y 50 und y 51 berechnet werden: Es sind fast dieselben Berechnungspunkte x 48 bis x 53 für y 50 und für y 51 zu addieren. Wenn y 50 bereits berechnet wurde Ist der effizienteste Weg zum Berechnen von y 51: Nachdem y 51 unter Verwendung von y 50 gefunden worden ist, kann y 52 aus der Probe y 51 und so weiter berechnet werden. Nachdem der erste Punkt in y berechnet ist, können alle anderen Punkte mit nur einer Addition und Subtraktion pro Punkt gefunden werden. Dies kann in der Gleichung ausgedrückt werden: Beachten Sie, dass diese Gleichung zwei Datenquellen verwendet, um jeden Punkt in der Ausgabe zu berechnen: Punkte von der Eingabe und vorher berechnete Punkte von der Ausgabe. Dies wird als rekursive Gleichung bezeichnet, dh das Ergebnis einer Berechnung wird in zukünftigen Berechnungen verwendet. (Der Begriff rekursive hat auch andere Bedeutungen, vor allem in der Informatik). Kapitel 19 behandelt eine Vielzahl von rekursiven Filtern genauer. Beachten Sie, dass sich das gleitende, durchschnittliche rekursive Filter sehr von den typischen rekursiven Filtern unterscheidet. Insbesondere haben die meisten rekursiven Filter eine unendlich lange Impulsantwort (IIR), bestehend aus Sinusoiden und Exponentialen. Die Impulsantwort des gleitenden Mittelwertes ist ein Rechteckimpuls (endliche Impulsantwort oder FIR). Dieser Algorithmus ist aus mehreren Gründen schneller als andere digitale Filter. Erstens gibt es nur zwei Berechnungen pro Punkt, unabhängig von der Länge des Filterkerns. Zweitens sind Addition und Subtraktion die einzigen mathematischen Operationen, während die meisten digitalen Filter eine zeitaufwändige Multiplikation erfordern. Drittens ist das Indexierungsschema sehr einfach. Jeder Index in Gl. 15-3 durch Addieren oder Subtrahieren von ganzzahligen Konstanten gefunden, die berechnet werden können, bevor die Filterung beginnt (d. h. p und q). Weiter kann der gesamte Algorithmus mit Ganzzahldarstellung durchgeführt werden. Abhängig von der verwendeten Hardware können ganze Zahlen mehr als eine Größenordnung schneller als der Gleitpunkt sein. Überraschenderweise arbeitet die Ganzzahldarstellung besser als der Gleitkommawert mit diesem Algorithmus, zusätzlich zu dem, was schneller ist. Der Rundungsfehler der Gleitpunktarithmetik kann zu unerwarteten Ergebnissen führen, wenn Sie nicht vorsichtig sind. Stellen Sie sich zum Beispiel ein 10.000 Probensignal vor, das mit diesem Verfahren gefiltert wird. Der letzte Abtastwert im gefilterten Signal enthält den akkumulierten Fehler von 10.000 Additionen und 10.000 Subtraktionen. Dies erscheint im Ausgangssignal als Driftversatz. Integers dont haben dieses Problem, weil es keine Round-off-Fehler in der Arithmetik. Wenn Sie mit diesem Algorithmus Fließkommazahlen verwenden müssen, zeigt das Programm in Tabelle 15-2, wie ein Doppelpräzisionsakkumulator verwendet wird, um diese Drift zu eliminieren.


No comments:

Post a Comment