Tuesday 22 August 2017

Moving Average Rekursive Filter


Die Wissenschaftler und Ingenieure Leitfaden zur digitalen Signalverarbeitung Von Steven W. Smith, Ph. D. Ein enormer Vorteil des gleitenden Durchschnittsfilters ist, dass er mit einem sehr schnell umgesetzten Algorithmus implementiert werden kann. Um diesen Algorithmus zu verstehen, stellen Sie sich vor, ein Eingangssignal x durch einen siebenpunkt gleitenden Durchschnittsfilter zu führen, um ein Ausgangssignal y zu bilden. Schauen wir nun an, wie zwei benachbarte Ausgangspunkte y 50 und y 51 berechnet werden: Diese sind für y 50 und für y 51 genau die gleichen Berechnungspunkte x 48 bis x 53 addiert. Ist y 50 bereits berechnet worden Ist der effizienteste Weg zur Berechnung von y 51: Sobald y 51 mit y 50 gefunden worden ist, dann kann y 52 aus der Probe y 51 berechnet werden, und so weiter. Nachdem der erste Punkt in y berechnet wurde, 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 den eingegebenen und vorher berechneten Punkten aus dem Ausgang. Dies wird als rekursive Gleichung bezeichnet, was bedeutet, dass das Ergebnis einer Berechnung in zukünftigen Berechnungen verwendet wird. (Der Begriff rekursiv hat auch andere Bedeutungen, vor allem in der Informatik). Kapitel 19 diskutiert eine Vielzahl von rekursiven Filtern im Detail. Seien Sie sich bewusst, dass der gleitende durchschnittliche rekursive Filter sehr unterschiedlich ist von typischen rekursiven Filtern. Insbesondere haben die meisten rekursiven Filter eine unendlich lange Impulsantwort (IIR), die aus Sinusoiden und Exponentialen besteht. Die Impulsantwort des gleitenden Durchschnitts ist ein Rechteckimpuls (endliche Impulsantwort oder FIR). Dieser Algorithmus ist aus mehreren Gründen schneller als andere digitale Filter. Zuerst gibt es nur zwei Berechnungen pro Punkt, unabhängig von der Länge des Filterkerns. Zweitens sind Addition und Subtraktion die einzigen mathematischen Operationen erforderlich, während die meisten digitalen Filter eine zeitaufwändige Multiplikation benötigen. Drittens ist das Indexierungsschema sehr einfach. Jeder Index in Gl. 15-3 wird durch Addition oder Subtraktion von ganzzahligen Konstanten gefunden, die berechnet werden können, bevor die Filterung beginnt (d. h. p und q). Weiterhin kann der gesamte Algorithmus mit ganzzahliger Darstellung durchgeführt werden. Abhängig von der verwendeten Hardware können ganze Zahlen mehr als eine Größenordnung schneller als Gleitkomma sein. Überraschenderweise arbeitet die Integer-Darstellung besser als der Gleitpunkt mit diesem Algorithmus, zusätzlich zu schneller. Der Rundungsfehler von Gleitkomma-Arithmetik kann zu unerwarteten Ergebnissen führen, wenn man nicht vorsichtig ist. Stellen Sie sich zum Beispiel ein 10.000-Sample-Signal vor, das mit dieser Methode gefiltert wird. Die letzte Probe im gefilterten Signal enthält den akkumulierten Fehler von 10.000 Additionen und 10.000 Subtraktionen. Dies erscheint im Ausgangssignal als Driftversatz. Integers haben dieses Problem nicht, weil es keinen Rundungsfehler in der Arithmetik gibt. Wenn Sie mit diesem Algorithmus Gleitkomma verwenden müssen, zeigt das Programm in Tabelle 15-2 an, wie man einen doppelten Präzisionsakkumulator benutzt, um diesen Drift zu eliminieren. Recursive Moving Average Filter bull quot (0) 0 bull 2 ​​160160160160 Der gleitende durchschnittliche Filter ist ein FIR-Filter der Länge N mit allen Hähnen gleich (1N) .160 Sein bekannt für lausige Frequenz Trennung, aber ausgezeichnete Zeitreaktion - in diesem Sinne, es out-Bessels ein Bessel-Filter.160 Sie können es mit SigmaStudios FIR Block implementieren Wie es hier beschrieben wird: Je länger der Filter, desto mehr Glättung - aber der Standard-FIR-Filteralgorithmus verwendet viele Instruktionen für riesige Filter, da er Koeffizienten für jeden Hahn multiplizieren muss.160 Dies ist ein Abfall, wenn alle Koeffizienten gleich sind .160 Wie Kapitel 15 von Steven W. Smiths Buch zeigt, können Sie einen gleitenden Durchschnitt Filter mit einer rekursiven Technik, die einen Hahn vor und nach einer (N-1) Größe verzögern hat.160 Ein solcher Filter erscheint unten als Teil von Eine Testschaltung mit Signalquelle und ein Bessel-Filter zum Vergleich: 160160160160 Koeffizienten werden am Eingang an den Einzelverstärkungsblock gezogen.160 Das vorliegende Sample fügt dem Ausgang bei der Verzögerung den Ausgang hinzu, die verzögerte Probe subtrahiert vom Ausgang Exits.160 Der Addierer mit dem Feedback sammelt diese Additionen und Subtraktionen, um die Ausgabe zu bilden - das tut etwas, das in C trivial ist, aber ansonsten ein Schmerz in der GUI ist.160 Obwohl eine rekursive Technik verwendet wird, bleibt der Filter ein echter FIR-Filter - die Länge der Impulsantwort wird nur durch Ihre Verzögerung eingestellt. 160160160160 Meine Testeingabe ist eine Rechteckwelle mit zusätzlichem Rauschen.160 Gefilterte Ergebnisse erscheinen als obere Spur in beiden Fotos - Zuerst der gleitende Mittelwertfilter: Der Bessel-Filter: 160160160160 Der gleitende Mittelwertfilter ermöglicht mehr Rauschen, aber besser bewahrt es Quadratische Wellenform - es ist nicht um die Ecken herum, und die Auf - und Absteigungen sind symmetrisch (seine lineare Phase) .160 Das Hören der beiden Wellenformen mit Kopfhörern zeigt ein ähnliches Ergebnis - mehr Lärm mit dem gleitenden Durchschnittsfilter, aber das Merkmal Klang einer quadratischen Welle kommt durch. Moore amp Moore Beratungsdienstleistungen Wertpapiere und technische Analysen Digitale Filter - Exponentielle Moving Averages (1) Rekursive Digitalfilter Ein Weg, um digitale Filter auf eine effizientere Basis zu strukturieren ist, einige der Ausgabe zu verwenden und sie anzuwenden Zum Eingang. Dies macht den Filter rekursiv, da der Ausgang wieder in der Eingabe auftritt, wodurch der Filter unendlich lang ist. Aus diesem Grund haben diese Filter auch den Namen Infinite Impulse Response (IIR) Filter, da die Antwort für unendlich weitergehen kann. In diesem Fall hat dieser sehr einfache IIR-Filter nur eine Stufe und nimmt einen (kleinen) Prozentsatz der vorherigen Ausgabe. Die Gleichung für diesen einfachen IIR Digital Filter ist: Schematisch ist die Zeichnung dieses sehr einfachen IIR Filters wie folgt aus. Die Grafik unten zeigt, was passiert. Serie 1 der Dünnstufeneingang, erzeugt die folgenden typischen transienten Ausgänge. Mit einem 9-Wert für k dann k 0,09, dann ist die Serie 2 (die dicke Linie) die erste typische transiente Antwort. Wenn der Prozentsatz (k) auf 5 (k 0,05) abfällt, dann ist die Serie 3 (die dünne Linie unter Serie 1) das erwartete Ergebnis. Mit k fiel weiter auf 1 (k 0,01) dann haben wir Serie 4 (die gepunktete Linie gut unter den anderen zwei Ausgängen) ist die Antwort. Diese Ausgänge folgen allen exponentiellen Zeitreaktionen. Also, mit ein wenig Rückmeldung haben wir den ziemlich komplexen, nicht rekursiven Filter in einen einfachen rekursiven Filter mit viel dem gleichen Frequenzgang verwandelt, aber eine andere Zeitreaktion Die IIR-Filterausgangswellenform setzt sich für immer (bis unendlich) fort, um auf dem Stall zu konvergieren Wert, und das ist der Grund, warum diese Filter den Namen Infinite Impulse Response (IIR) Filter erhalten. Die Frage ist jetzt, diese Reaktionen zu binden, damit sie sich aufeinander beziehen Mit dem technischen Handel ist der gemeinsame Nenner Perioden (in der Regel Tage), so dass es notwendig ist, den rekursiven Faktor (k) in einen Periodenfaktor zu verknüpfen. Glücklicherweise gibt es eine gegebene direkte Beziehung und es ist durch die Formel wie folgt: Wo wir uns für k 0,09 entschieden haben, wandelt diese Formel in 21.2222 Perioden um, und für k 0,05 wandelt diese Formel in 39,0 Perioden um und für k 0,01 wandelt diese Formel in 199,0 um Perioden Rückwärts gehen wir wirklich den k-Faktor aus der Periode heraus und durch die Umsetzung der Formel wird es: Also für 11.0 Perioden dann k 0.1666666, für 21.0 Perioden dann k 0.090909 und für k 40.0 Perioden dann k 0.0487804 Das alles scheint sehr einfach , Aber die Beziehung muss gebunden werden Unter Bezugnahme auf die graphische Darstellung ist es offensichtlich, dass die Zeitantwort ein exponentieller Abfall ist. In Physik Land, alle natürlichen Aktionen folgen eine exponentielle Rate von Ladung und Verfall. Beobachten Sie eine Zisterne bündig: alle varoosh am Anfang und es endet ein Rinnsal (bevor der Stecker fällt, um den Tank wieder aufzufüllen) Wenn Autoscheinwerfer auslöschen, gehen sie dunkel und dunkel auf exponentielle Weise. Es ist ein natürliches Phänomen überall Wenn der Regen beginnt und aufhört zu fallen, ist die Regendichte im Laufe der Zeit eine exponentielle Funktion, und es folgt den gleichen exponentiellen Zerfallsregeln Zurück in der Elektronik Land exponentielle Zerfälle sind sehr häufig und die Lade - und Entladezeiten werden in einem normalisierten Ansatz gemessen Genannt Zeitkonstanten (T). Eine Zeitkonstante entlädt sich auf etwa 37, zwei bis etwa 14, drei bis etwa 5 vier bis etwa 1,8 und fünf bis etwa 0,6 - was grundsätzlich nichts ist. Wenn die elektronischen Komponenten aufladen, folgen sie der Umkehrung der Entladungsrate, dh: 63, 86, 95 , 98.2, 99.4 usw. Unter Bezugnahme auf die einfache IIR-Digitalfilter-Gleichung, bei der sie auf eine Heaviside-Step-Funktion reagiert, hat die Ladungskurve die folgende Gleichung: y (t) x (0). (1-exp - tT) wobei T Zeitkonstante (oder Periode) Wert. Der Graph dieser Gleichung richtet sich exakt mit dem oben beschriebenen einfachen rekursiven Filter aus, also durch Anwendung der Heavisides Step-Funktion (indem man die zeitvariable Eingabe a 1 anstelle von 0) und dann die Perioden als Zeitfaktor t (39) in der Direkt über der Gleichung, dann ist y (39) (1-exp-39T) 0.8646647 so 0.1353352 exp -39T und ln (0.1353352) -2 so exp -2 exp -39T so -2 -39T und transponiert, T 19.5 Also was war All das High School Mathematik bedeutet Im Grunde bedeutet, dass die angegebene Anzahl von Perioden in einem einfachen rekursiven Filter entspricht zwei (2) Zeitkonstanten. Mit anderen Worten, wenn wir am 100. Tag ein (ja) 100-Tage-rekursives Filter angeben, wird der Ausgang der Filterantwort (von einem Step-Eingang) gleich der von zwei Zeitkonstanten (86 der maximalen Menge) sein. Wir haben jetzt die Mathematik, um genau die Vorhersage der Ausgabe des Filters von jedem bekannten Eingang ohne Raten Danke, Oliver Heaviside und die früheren brillanten Mathematiker Jetzt können wir seine Gründungsmathematiken verwenden, um die Antwort auf eine Rampe zu berechnen, und der Fehler auch Die Grafik auf Die linke Seite unten zeigt einen 100-stufigen Stufeneingang, der sowohl auf einen SMA20 als auch auf einen EMA20-Filter angewendet wird, und die beiden Ausgänge sind deutlich zu sehen. Von der Step-Eingabe steigt der SMA20-Ausgang als Rampe an, bis er den Maximalwert genau wie ein slew rate-limitierter Verstärker trifft. Der EMA20 steigt schnell an und fällt dann exponentiell ab, um asymptotisch auf den stabilen Ausgang zu konvergieren. Die beiden Ausgänge kreuzen bei der 80-Marke, und dies ist ein Verweis, der beim Vergleich einer Vielzahl von anderen Antworten verwendet werden soll. Die rechte Grafik unten zeigt eine IIR-Filterantwort auf eine Einheitsrampe (eine vertikale Position pro horizontaler Schritt). (Das könnte man sagen, wie z. B. 1 Cent pro Tag.) Diesmal k 0,15 also die Perioden 12.33333 und die Zeitkonstante (T) ist also 6.166667 Perioden. Die Einheit Ramp ist die gerade gepunktete dünne, positiv geneigte Linie und darunter ist die dicke Linienausgangsreaktion auf die Rampe, die ebenfalls abhebt und asymptotisch parallel zur Rampe wird. Der vertikale Abstand zwischen diesen beiden ist der Fehler. So jetzt wissen wir, dass dieser einfache IIR-Filter eine exponentielle Antwort erster Ordnung hat, die einen Nullfehler zu einem stabilen Eingangswert und einen bekannten Konstantenfehler zu einem Rampeneingang hat. Die Formel für den Fehler ist Fehler Rk 1, wobei R die Steilheit der Eingabe ist. Das Ersetzen von k 0.15 in diese Gleichung ergibt einen unendlichen Fehler von 5.66666 und genau das zeigt das Diagramm. Ein rekursiver (IIR) Filter in der Praxis Der obige Abschnitt hat soeben das innere Arbeiten des einfachsten rekursiven Filters (IIR-Filter) beschrieben, bei dem es sich nur um die identische Funktionsweise eines exponentiellen Moving Average (EMA) handelt und praktisch nichts verändert wird Von einigen namens Zum Beispiel eine 20-Tage-EMA ist wirklich ein IIR-Filter mit k 0.095238 und das sollte keine Überraschung sein. Wir wissen jetzt auch, dass die Zeitkonstante für einen 20-tägigen EMA-Filter also 10 Tage beträgt und dass der Rampenfehlerfaktor 9,5 beträgt (vorausgesetzt, ein Cent pro Tag Rampenzahl). Die obige Grafik (genommen aus MarketTools Chart) zeigt die Antwortdifferenz zwischen einem SMA20 (Grün) und einem EMA20 (Blau). Als der Preis beginnt, beginnt die EMA anfänglich zu schreiten und schwankt herum, während die SMA20 in langsamer (Runder) gleitet und eine nahezu gerade Linie bildet. Das ist keine Überraschung, denn wir wissen, dass die SMA viel weniger auf die jüngsten Veränderungen als eine EMA reagiert. Sie können deutlich sehen, die Fehler, dass sie zu einer Rampe in den Preisen und dies kann zu einem Vorteil bei der technischen Analyse verwendet werden Diese Grafik zeigt auch die Moving Averages Tracking der Preise aber mit einem sehr ähnlichen Preis Offset (Fehler) durch die praktisch verursacht Konstante Preisänderung im Preis über einen begrenzten Zeitraum (in diesem Fall). Das Problem mit den Preisen ist, dass es ein Feedback-System gibt, das die Preisvariationen regelt und dieses Feedback ist menschlich verwaltet, das so funktioniert: Aus irgendeinem Grund sieht jemand, dass sie einen bestimmten Bestand kaufen möchten, aber der Preis ist geringfügig höher als Der frühere Handelspreis. Wenn sie die Aktie kaufen, ist der neue Preis jetzt höher. Andere sehen diesen Preis entweder zu hoch, richtig oder noch billig. Mit diesem Gedanken im Auge, andere Händler verwenden die früheren Preise als Referenz und neigen dazu, diesen Preis wieder auf den Referenzpreis, dass jeder von ihnen zu korrigieren. Dies führt dazu, dass der Preis in einer oszillatorischen Weise schwankt, die dazu neigt, sich mit der Zeit zu stabilisieren. Alles ist nicht verloren, da dies wichtig ist, um verstanden zu werden, dass die Moving Average-Technologie ein 1. Ordnung System ist, denn jetzt kann es in dem Wissen verwendet werden, dass, wenn die Preise im Allgemeinen unter dem Moving Average liegen, dann die Preise tatsächlich fallen Mit der Zeit, und wenn die Preise über dem Moving Average liegen, dann sind die Preise im Allgemeinen mit der Zeit steigen. Es macht also viel Sinn, diese Grundregel zu kennen, da es bedeutet, dass die einzigen Aktien, die daran beteiligt sind, diejenigen mit den Preisen über dem gleitenden Durchschnitt sind. Aber welche Zeitkonstante sollte für den gleitenden Durchschnitt verwendet werden und warum praktisch keine technischen Analysepakete irgendwo in der Nähe dieser Tiefe kommen, und sie alle behandeln SMA und EMA mit einem echten Mangel an Verständnis. Das Problem ist fast selbsterklärend, dass praktisch alle Daten EOD-basiert sind und deshalb das Überqueren von bewegten Durchschnitten die meisten Buy-Selling-Signale lösen kann. Mit anderen Worten, die Weiterentwicklung der technischen Analyse hielt wie ein Bus, der eine Klippe trifft, wenn es sich um Durchschnitte handelt Mit EOD-Daten aufgelöst. Es funktioniert Gewinne aus technikbasierten Verkäufen können realisiert werden Stop-Entwicklung One Moving Average Nachdem wir fest festgestellt haben, dass ein SMA und ein EMA sind beide 1. Ordnung Systeme, und dass diese beiden effektiv minimieren das Lärm der Handelsvariationen, vor allem die engen Werte Basierend auf EOD-Daten ist es nicht überraschend, dass diese Durchschnittswerte eine Verwendung als Kauf - oder Nicht-Kauf-Indikation für Wertpapiere haben, die irgendeine Form von Trend haben. Ihre Verwendung ist eine einfache Anwendung, dass der Fehler zwischen dem tatsächlichen engen Preis und dem gleitenden Durchschnitt, wenn positiv angegeben, dass die Sicherheit gehalten werden sollte und umgekehrt. Dieser Indikator ist der primitivste aller technischen Indikatoren, und es ist Licht jahre jenseits der Verwendung einer Form von finanziell generierten Indikation zu zeigen, ob ein Sicherheitspreis steigt oder fallen in einem Trend. Der Indikator leuchtet wirklich, wenn die Sicherheit in einem Trend ist, aber wenn der Preis schwebt oder abflacht, hat es ein Problem der Unentschlossenheit. Die folgende Grafik zeigt diese Situation an, und es wird beispielhaft dargestellt, indem man eine Schalterfunktion einfügt, um zu zeigen, was passieren kann. Die Schaltfunktion ist die Preisbewegungs-Durchschnitt-Graphen. Im linken Fall ist es ein EMA12, und da der enge Preis schwankt, wird der Schalter sehr unentschlossen, wenn der Preisverlauf ausschaltet oder die Richtung ändert. Ein Weg um das Problem ist, einen langsameren gleitenden Durchschnitt wie die EMA21 zu verwenden, wie auf der rechten Seite gezeigt. Die Anzahl der Unentschlossenheitspunkte wird reduziert, was bedeutet, dass die Anzahl der nutzlosen Trades deutlich reduziert werden würde, aber genauer hinsehen und beträchtliche Profit-Läufe verloren gehen, weil der gleitende Durchschnitt zu spät beim Umschalten ist. Im Hintergrund gibt es einen positiven Eindruck, dass die 12 und 21 EOD bewegten Durchschnitte glatter als die EOD schließen und das an sich auch vorteilhaft genutzt werden kann. Zwei gleitende Mittelwerte Durch den Vergleich von zwei gleitenden Durchschnitten (die an sich schon durch eigene Attribute geglättet werden), kann eine sauberere Anzeige erhalten werden und bietet einige Vorteile. Die folgenden Grafiken zeigen einige Beispiele für die gleiche Sicherheit für den direkten Vergleich. Die obige linke Grafik hat die gleiche Schalterfunktion, die auf zwei gleitenden Durchschnitten EMA12 und EMA26 basiert und sieht, dass die Unentschiedenheit praktisch Null ist. Dies ist ein positiver Schritt, aber ein genauerer Blick auf die tatsächlichen Umschaltpunkte zeigt, dass es sehr konservativ ist und in vielen Fällen erhebliche Gewinne verloren gehen, bevor die Entscheidung getroffen wird, um herauszuziehen. Wenn dies nicht der Fall wäre, dann könnte dies ein idealer Holdsell-Indikator sein, der auf der Grundlage von engen Preisen aus EOD-Zahlen basiert. Der obige rechte Graph (aus OmniTrader) zeigt eine sechsmonatige Ansicht eines Bestandes und es gibt zwei exponentielle gleitende Durchschnitte (EMAs) auch auf dem Diagramm. In diesem besonderen Fall ist der gleitende Durchschnitt, der die Aktienkurse umarmt, ein EMA8 und der andere, der langsam im Aktienkurs konvergiert, ist ein EMA35. Dies ist ein gutes Beispiel, denn die schnellere EMA hat die Reichweite der EOD-Werte des Aktienkurses, der sie bei mehreren Gelegenheiten schneidet. Die langsamere EMA erreicht kaum die EOD-Preisspannen. OmniTrader hat eine sehr nette Funktion, dass jeder Testindikator für jede Sicherheit über eine bestimmte Historie (zB 250 Handelstage) selbstoptimiert werden kann. Dies gibt den Indikatoren eine gute Chance, eine viel bessere Trefferrate zu bieten, als Sie normalerweise durch einfaches Einstellen der Indikatorparameter selbst erhalten würden. In diesem Fall begannen sie bei EMA12 und EMA40 und setzten sich für EMA8 und EMA35 für ein optimales Ergebnis ein. Das Problem ist das der Unsicherheit, da beide gleitenden Durchschnitte aufeinander konvergieren und keinen sauberen Crossover haben. Dies ist kein wichtiges Thema, da wir wissen, dass sowohl SMA als auch EMA beide 1. Ordnung sind und deshalb asymptotisch auf einem konstanten Input zusammenlaufen. Wenn also ein Preis konstant bleibt, dann werden die beiden gleitenden Mittelwerte auf diese Konstante konvergieren Wert, aber mit unterschiedlichen Raten. Das eigentliche Problem ist ein Lärm (eigentlich Preisschwankung um einen konstanten Wert) und dies kann dazu führen, dass der schnellere gleitende Durchschnitt über den stabileren langsameren (längeren) gleitenden Durchschnitt peitscht. Es gibt mehrere Lösungen für dieses Problem, und jeder hat ihre Vorzüge. Mehrere Moving Averages Die Erweiterung des Themas der gleitenden Mittelwerte von eins bis zwei zu vielen ist eine logische Progression und der Ansatz von Multiple Moving Averages ist ein ganz einfaches Konzept, um sich zu visualisieren. Daryl Guppy entwarf es und es besteht aus zehn gleitenden Durchschnitten in zwei Gruppen, die geometrisch beabstandet sind. Die erste Gruppe ist kurzfristig EMA3, EMA5, EMA7, EMA10 und EMA15, während die langfristigen bewegten Durchschnitte EMA30, EMA35, EMA40, EMA50 und EMA60 sind. Um ein Bild zu sehen, wie es aussieht, zeigen die beiden Grafiken unten die allgemeinen Bilder. In der linken Grafik unten folgen die fünf längerfristig bewegten Durchschnitte in generell parallelen Linien, da die Aktienkurstrends steigen, die Preise steigen dann dann zurück und die gleitenden Durchschnittslinien erweitern sich voneinander und konvergieren dann und expandieren dann als neuer Trend Setzt sich ein und die bewegten Durchschnitte bilden wieder parallele Linien. Wenn man sich in dem rechten Graphen des gleichen Bestandes mit dem kürzeren Satz von sich bewegenden Mitteln genauer betrachtet, wird deutlich, dass, wenn die exponentiellen gleitenden Mittelwerte konvergieren oder divergieren, dann etwas passieren wird. Der Grund dafür, dass diese gleitenden Mittelwerte effektiv parallele Linien bilden, während Ein Trend im Geschehen ist, dass der Fehler vom tatsächlichen Preis zum gleitenden Durchschnitt von dem Rückkopplungsfaktor in der EMA abhängt. Im direkten Vergleich wird die SMA auf der Grundlage der gleichen Zeitkonstanten unten gezeigt: Die obigen Graphen zeigen den gleichen Regenbogen von Kurven, aber alle mit SMA statt EMA. Es ist wegen der nicht-linearen zu Schritt-Eingang Antwort, dass die EMA hat, dass die Kurven zueinander konvergieren, wo die SMA-Satz von Kurven in diesen unteren zwei Graphen deutlich überschreiten einander. Guppy Multiple Moving Averages Daryl Guppy entwickelte einen Regenbogen von mehreren gleitenden Durchschnitten, genannt die Guppy Moving Averages (GMA), die, wenn sie auf eine Preiskarte platziert werden, konvergieren, wie der Trend beginnt zu finden, und wieder konvergieren, wie der Trend abgelehnt hat, und Der Rest der Zeit sind sie abweichend Wie einfach ist das auf EOD-Verkehr basiert, Daryls EMA-Konstanten sind kurzfristig: 3, 5, 8, 10, 12, 15 und für langfristige 30, 35, 40, 45, 50 und 60. Für die kurzfristigen Konstanten ist meine Vermutung, dass dies auf einem einfachen arithmetischen Satz von EMAs basiert, die nominell 2,4 Perioden auseinander waren und auf die nächstgelegene Ganzzahl für den Zeitraum gesetzt wurden, was zu: 3 führte , 5,4, 7,8, 10,2, 12,6 und 15,0 mit 3, 5, 8, 10, 13 und 15, wobei die 13 zurück zu 12 zurückgezogen wurden. Es scheint mir, dass die Langzeitkonstanten auf einer anderen arithmetischen Progression mit 55 fehlenden basieren Out, weil es dort zu eng geworden ist, und das sagt mir, dass diese Sequenz in jedem Fall eine geometrische Progression gewesen sein sollte. Mit fünf Intervallen zwischen 30 und 60 ist der Multiplikator etwa 1.1487, so dass die Sequenz 30.00, 34.46, 39.59, 45.47, 52.23, 60.00 ist und diese auf die nächsten Integers bringt: 30, 34, 40, 45, 52, 60 und dies würde Geben Sie einen sehr gleichmäßigen Satz von längerfristigen EMAs aus einer geometrischen Progression erhalten die langfristigen Konstanten. Also warum bin ich auf geometrische Fortschritte gehakt, und warum haben sie diese Dinge in der Schule gelehrt Nun ist es so, die Lebensbeziehungen sind eigentlich geometrisch verwandt alles ist ein Verhältnis von anderen Dingen, auch Ergänzungen zu Familien sind geometrisch verwandt, nicht arithmetisch verwandt mit dem größerer Maßstab. Ich weiß, dass die Lehrer mir das nicht in der Schule gezeigt haben und ich hatte einige blutige, fantastische Lehrer. Bei weitem die besten Lehrer waren diejenigen, die Industrie-und Business-Fähigkeiten durch nicht-Schulerfahrung hatten, und waren der Neid der diejenigen, die nicht. Jedenfalls Um das Bild zu sehen, gibt es nichts wie ein visuelles Beispiel Die beiden Graphen oben geben Beispiele für die Guppy Moving Averages (GMMA), und das sind Exponential Moving Averages, nicht Simple Moving Averages. Interessant, da SMA eine runder Antwort haben, weil sie nicht überreagieren zu den aktuellsten Werten wie EMAs tun. Es gibt zwei Familien von diesen und die linke Seite zeigt die langfristige Band weg von den Preisen und konvergierenden Änderungen. Die rechte Seite zeigt die kurzfristigen Bewegungsdurchschnitte nach den (engen) Preisen näher. Wenn man eine andere Tangente durchführt, indem man eine geometrische Progression auf der Basis von Wurzel 2 nach einer Fotolinse aufbaut, ist eine typische Sequenz 5, 7, 10, 14, 20, 28, 40, 56, 80, 113, 200 usw. Die linke Hand ist auf EMA basiert und die auf der rechten Seite basiert auf SMA. Da die SMA eine lineare transiente Antwort hat, ist die Gesamtspur etwas abgerundet als die EMA, die eine verjüngte Zerfallsreaktion aufweist, also das Spray von exponentiellen gleitenden Durchschnitten im Vergleich zu der Anzahl der Frequenzweichen mit den einfachen gleitenden Durchschnitten. Dies ist ein sehr beliebtes Werkzeug und Guppys Regenbogen geben eine hohe Wirkung visuell, und wenn das ist, was Sie suchen, dann ist dies ist es nicht nur ist es interessant zu beobachten, die verschiedenen gleitenden Durchschnitte divergieren und konvergieren, aber gehen, dass ein Schritt weiter zu Berechnen und zeigen, dass Divergenz und Konvergenz der nächste logische Evolutionsschritt ist. Während diese Regenbogen von bewegten Durchschnitten eine visuelle Wirkung mit EOD-Daten haben, wenn es um Handelsdaten geht, ist es eine ganz andere Geschichte, da die Inkremente wegen der kurzen Zeitschlitze viel kleiner sind, und dies führt dazu, dass die Sequenz der Frequenzweichen tatsächlich analysiert wird , Da dies den Unterschied zwischen einem Handel und einer Investition, aber mehr später Ein alternativer Rückgriff auf Handel (Live) Daten ist es, einen besseren Filter verwenden - oder Kaskade (eins nach dem anderen) einige Filter erster Ordnung zu versuchen, eine höhere zu machen Verlust in der Stop-Band mit einem kürzeren und mehr linearen risetime - und Cascaded EMAs ist die nächste Abenteuer stepIm Implementierung eines 80-72-64-48 Multi-Pass-Gleit-Durchschnitt-Filter für ein eingebettetes System in C und in festen Punkt. Die Implementierung ist ein kreisförmiger Puffer, bei dem man eine laufende Summe beibehält und yn yn-1 xn-xn-M berechnet, wobei M die Länge eines Filters ist. Dies geschieht für jeden Teilfilter mit dem Ausgang von einem Serving als Eingang für einen anderen. Im Skalierung meiner Koeffizienten von 2, die mir Koeffizienten der Länge 2 oder 2 je nach Filterlänge gibt. Dann wird das Ergebnis wieder um 2 verkleinert, um die richtige Ausgabe zu erhalten. Nun, alles sieht gut aus auf kurze Zeit Skalen, aber über lange Zeit bekomme ich einen Drift. Der Grund für die rekursive Implementierung besteht darin, Berechnungen auf einem eingebetteten Prozessor zu speichern. Ich habe das Bild von einigen der Einbauten meines Filters aufgenommen, dies ist, wenn eine Schrittantwort angewendet wird, und wir können die Übertragungsfunktionen der Filter sehen, die Form, Quadrat, Dreieck nehmen und dann einen Gaußer annähern, so dass der Filter wie erwartet arbeitet. Gibt es irgendeine Möglichkeit, dies zu beheben, und wo ist die wahrscheinlichste Quelle dafür. Ist diese Drift durch ein bisschen verloren in der Verlagerung oder etwas anderes. Die Drift ist bei DC-Eingängen nicht vorhanden, aber bei AC-Signalen driftet es langsam. LÖSUNG: Das Problem war im Akkumulator, wie robert in den Kommentaren vorgeschlagen hat. Die Frage war, dass ein Element der Berechnung eine zusätzliche Auf - und Abwärtsbewegung im Vergleich zum Rest durchgemacht hatte, die einen runden Offset erzeugte, der sich angesammelt hatte. Fragte am 27. April um 21:12 ist dein Akkumulator yn gerundet oder quantisiert in irgendeiner Weise müssen Sie sicherstellen, dass die xn-M, die subtrahiert wird genau der gleiche Wert wie xn, die hinzugefügt wurde M Proben vor. Also willst du wirklich eine bewegliche Summe machen Anstatt einen gleitenden Durchschnitt und skalieren Sie die Ausgabe Ihrer bewegenden Summe (mit 1M), um Ihnen den Durchschnitt zu erhalten. Das ist ganz machbar und noch besser in Fixpunkt und nicht als Gleitkomma. Ndash robert bristow-johnson Apr 27 15 at 22:52 quotScaling die Koeffizienten quot Ich nehme an, dass Sie durch M nach jeder Stufe teilen und das ist der Koeffizient, den Sie skalieren Das ist wahrscheinlich die Ursache für den Offset. Besser dann, um von prod Mi am Ende aller Filter zu teilen. Sie müssen die internen Amplituden behalten, obwohl Sie die Akkumulatoren schließlich überlaufen werden. Dies ist jedoch leicht durch Modulo-Arithmetik (von denen zwei39s Komplement ist ein Sonderfall) gelöst. Ndash Oscar Apr 28 15 um 7:00 Oscar, das ist ein Fixpunktfilter. Das heißt, ich mache nur Integer-Arithmetik. Für einen gleitenden Durchschnitt der Länge gt 1 mit Verstärkung 1 werden die Filterkonstanten ein Bruchteil sein, der in ganzen Zahlen nicht darstellbar ist. So werden die Koeffizienten skaliert, um sie ganzzahlig zu machen, indem sie links x viele Bits verschieben. Aus diesem Grund muss die endgültige Ausgabe auch nach rechts um so viele Bits verschoben werden. Ich kann nicht eine laufende Summe durch alle 4 Filter halten, ohne den Ausgang dazwischen wiederherzustellen, das Eingangssignal ist 16 Bits und mit dem Koeffizienten Skalierung und Längen Ein einzelner filter benutzt meinen gesamten akkumulatorraum von 32 bit ndash user70614 Apr 28 15 um 8:20

No comments:

Post a Comment