Thursday 1 June 2017

Exponential Moving Average Ruby

Der exponentiell gewichtete gleitende Durchschnitt kann nach folgender Formel berechnet werden: ewmai (1) ewmai-1 x wobei ewma exponentieller gewichteter gleitender Durchschnitt, x aktueller Wert im Array-Glättungsfaktor Wenn nun Welles Wilder glatter verwendet wird, 1 / n ist der Standardwert von 2 / (n1). Auf der Grundlage von ähnlichen Gedanken, was ist die Formel für exponentiell gewichtet verschieben Varianz Was ist der Wert von und wie sollte es verwendet werden, fragte am April 6, um 16.45 Uhr als unklar, was Sie fragen, von excaza. Legoscia Karthik Darwin von Corax. Piotrek1543 Apr 6 at 18:00 Bitte klären Sie Ihr spezifisches Problem oder fügen Sie zusätzliche Details zu markieren, genau das, was Sie brauchen. Wie es derzeit geschrieben, seine schwer zu sagen, genau das, was Sie fragen. Auf der Seite Fragen zur Seite finden Sie Hilfe zur Klärung dieser Frage. Wenn diese Frage umformuliert werden kann, um die Regeln in der Hilfe zu passen. Bearbeiten Sie bitte die Frage. Ist dies eine Programmiersprache ndash EdChum Nun, ich bin infact machen Funktionen für exponentielle gleitenden Durchschnitt und Varianz in ruby ​​auf einem Array zu berechnen. Also, seine eine Programmierfrage. Ndash Saurabh Shah Funktionen in welcher Sprache Sie haben 2 getaggt und erwähnen ein Drittel in Ihrem Kommentar. Was haben Sie versucht so weit ist nicht ein Code schreiben Service. Ich weiß, dies ist erreichbar mit Boost als 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 Jun 8 14 um 14: 27Liste der enthaltenen Funktion SimpleMA (n :) - Moving Average über die letzten n Tage / Daten. EMA (a :) - Exponential Moving Average mit einem als alpha-Parameter. IEMA (g :) - Exponential Moving Average über eine irreguläre zeitgesteuerte Events serie mit einem als alpha-Parameter. NDayEMA (n :) - Exponential Moving Average über n Tage / Daten wie in Wikipedia definiert. Entspricht der Verwendung von EMA (a) mit einem 2 / (n1). CMA - kumulierter gleitender Durchschnitt. Jede Funktion wird als Klasse zur Verfügung gestellt, sie kann entweder rekursiv den gleitenden Durchschnitt berechnen, sobald neue Werte vorgegeben oder initialisiert werden, um von einem bestimmten Punkt fortzufahren, vorausgesetzt, Sie geben die notwendigen Informationen. Lassen Sie sehen: Exponential Moving Average (EMA) jedes Mal, wenn Sie die Ema mit einem neuen Ereignis Wert zu berechnen, erhalten Sie es. Ich habe nur die erste und letzte hier.


No comments:

Post a Comment