Monday 24 April 2017

Exponentiell Gleitender Durchschnitt Sql Server

Ich versuche, eine exponentielle gleitende durchschnittliche EMA auf postgres zu implementieren, aber da ich die Dokumentation überprüfe und darüber nachdenke, desto mehr versuche ich das verwirrter ich bin. Die Formel für EMA x ist. Es scheint perfekt für einen Aggregator zu sein Ergebnis des zuletzt berechneten Elements ist genau das, was hier zu tun ist. Allerdings produziert ein Aggregator ein einziges Ergebnis als reduzieren oder falten und hier benötigen wir eine Liste eine Spalte von Ergebnissen als Karte Ich habe überprüft, wie Prozeduren und Funktionen funktionieren, aber AFAIK Sie produzieren eine einzige Ausgabe, nicht eine Spalte, die ich viel von Prozeduren und Funktionen gesehen habe, aber ich kann nicht wirklich herausfinden, wie dies mit der relationalen Algebra interagiert, besonders wenn man so etwas macht, ein EMA. Ich hatte kein Glück, das zu suchen Internets so weit Aber die Definition für eine EMA ist ganz einfach, ich hoffe es ist möglich, diese Definition in etwas zu übersetzen, das in postgres arbeitet und einfach und effizient ist, weil das Umziehen auf NoSQL in meinem Kontext übertrieben wird Berechnet die Aggregation, die das Ergebnis in jeder Zeile für jede Unterliste der Eingabedaten erzeugt. Weil es so aussieht, dass es den Aggregator bis zur Zeile n verwendet, das Ergebnis zurückgibt und dann in die Zeile 0 geht, um die Aggregation bis zur Zeile n 1 zu berechnen Wieder Gibt es eine Möglichkeit, die Akkumulation oder eine statische Variable wie in C zu verwenden, so dass dies einmal berechnet werden muss Danke Trylks Jan 20 12 um 11 59. Nein, es s mit dem akkumulierten Wert Wenn Sie die Abfrage mit der Erhöhung ausführen Info-Befehl unkommentiert, Sie werden sehen können, dass die Funktion nur einmal für jede Zeilenausgabe aufgerufen wird. Postgresql gibt den Statuswert auf jeder Zeile aus, wenn es eine endgültige Funktion gibt, die aufgerufen wurde, um den Zustand in einen Ausgangswert araqnid Jan umzuwandeln 20 12 am 12 04. ErwinBrandstetter Ich habe die meisten Änderungen zurückgestellt - im Falle des Formats des ersten Ankerteils der Abfrage kann EMA x1 mit einer einzigen Zeile klar dargestellt werden - dies entspricht der einzelnen Zeile, die es definiert Die Frage in Der Fall des rekursiven Teils der Abfrage, habe ich mn - 1 in der Join - Bedingung verwendet, um die Äquivalenz der Beziehung mit EMA xn - 1 in der Frage anzugeben, obwohl dies weniger performant ist, wenn Leistung ein Problem ist OP kann die Join-Bedingung ändern, um zu sein, wie du vorgeschlagen hast Mark Bannister Jan 16 12 bei 9 27. Ich habe die Diskussion gelesen, die du erwähnt hast. Es ist anwendbar auf PostgreSQL, da es erlaubt ist, benutzerdefinierte Aggregatfunktion mit SQL in PostgreSQL zu erstellen, aber nicht Erlaubt in SQL Server Mit rekursiven CTE ist eine machbare Möglichkeit in SQL Server, aber ich merke, dass CTE-Weg kann mehr Tabellen-Scan als Fenster-Funktionen Also ich mache diesen Beitrag zu fragen, ob es möglich ist, exponentielle gleitenden Durchschnitt mit SQL Server 2012-Fenster zu berechnen Funktion genau wie die Berechnung einfach gleitenden Durchschnitt xiagao1982 Apr 14 13 bei 2 53.First, Sie berechnen die EMA SMA x anstelle der EMA x Zweitens ist Ihre Glättung Konstante tatsächlich der Beta-Wert in meiner Formel, nicht die Alpha Mit diesen beiden Ändert sich das SQLFiddle sieht so aus. Allerdings gibt es noch einen kleinen Unterschied zwischen dem tatsächlichen Ergebnis und dem erwarteten Ergebnis würde ich zurückgehen und sehen, ob ihre EMA-Definition mit dem übereinstimmt, den ich sebastian Meine 7. Mai 13 um 13 46. Ich habe gerade gesehen Das Formular in der Kalkulationstafel, die Sie angeschlossen haben und es ist weg von der Standard-EMA-Definition Meine Formel berechnet den exponentiellen gleitenden Durchschnitt der letzten zehn Zeilen Die Kalkulationstabelle berechnet zuerst den Standard-Durchschnitt über die letzten zehn Zeilen und dann den uneingeschränkten exponentiell gewichteten gleitenden Durchschnitt über alle Durchschnitte Dies folgt dem Formular hier Sebastian Meine Mai 7 13 bei 13 52.SQL kommt nicht mit vielen analytischen Funktionen, und wenn ein Benutzer analytische Berechnungen in der Datenbank durchführen will, muss man eine große Anzahl von gespeicherten Prozeduren oder Funktionen schreiben Dies ist ein einfacher Weg, um einen exponentiellen gleitenden Durchschnitt zu schaffen, der für eine Reihe von Zwecken verwendet werden kann. Diese Implementierung konzentriert sich auf Marktdaten. Exponential Moving A - Es ist ein gleitender Durchschnitt, bei dem die Gewichte des jüngsten Datenpunktes wichtiger sind als der entfernte Datenpunkt. In einem einfachen Umzug ist es wichtig, dass es sich um eine effiziente Verschiebung handelt. Deutsch: www. tab. fzk. de/de/projekt/zusammenf...ng/ab117.htm. Englisch: www. tab. fzk. de/en/projekt/zusammenf...ng/ab117.htm Durchschnitt, alle Beobachtungen haben das gleiche Gewicht EMA sind in Finanzanwendungen beliebt, wo es zu beachten ist, dass Risk Metrics ist mit einer Reihe von EMA, um Value-at-Risk zu berechnen Es ist auch ziemlich häufig in technischen Analyse-Anwendungen, wie es wahrgenommen wird Um weniger aufzuhalten als gewöhnliche bewegte Mittelwerte auf die einfache gleitende durchschnittliche SMA, eine EMA hat auch einen Parameter Während die SMA das Lookback-Fenster als Einzelparameter hat, hat eine EMA einen Glättungsfaktor als Hauptparameter Der Glättungsfaktor lässt sich leicht umwandeln In einen Halbwertsfaktor, der sich auf die Anzahl der Tage bezieht. Die Formel für EMA ist besonders effizient für rechnerische Berechnungen, da sie mit dem vorherigen EMA va abgeschlossen werden kann Lue und die neuen Informationen Hier ist der Rahmen Finanzdaten, wo wir die EMA auf einer Reihe von Schlusskursen berechnen. Wo ist heute s Preis, ist Zeit und ist der Zerfall Faktor ist weniger oder gleich 1 und die EMA ist nicht In der Regel für den Zeitraum kleiner als 2 definiert In den meisten Fällen wird der Startwert auf den aktuellen Preis gesetzt. Sample Implementation mit Cursors. Below ist ein Code-Beispiel für die Implementierung der EMA in T-SQL, mit SQL Server 2008 verwendet, aber es sollte Auch mit früheren Versionen von SQL Server kompatibel sein Bitte beachten Sie, dass die Funktion vom Längenparameter abhängt, der gleich der Halbwertszeit ist. Dies wird im Glättungsfaktor in der ersten Zeile konvertiert. Während die Implementierung Cursor verwendet, könnte man auch implementieren Dies ist ein sauberer Weg mit inneren Joins Jedoch für große Datasets, die sind wahrscheinlich sowohl zeitaufwendig und Speicher intensiv. Glättung 2 Länge 1 SET Signalname Signalname konvertieren varchar 15, konvertieren int length SET cursor CURSOR FÜR SELECT Ein Datum A close FROM dbo Marktdaten A WHERE Ein Marktmarkt und ein Datum zwischen Startdatum und Enddatum ORDER BY Ein Datum OPEN Cursor FETCH NEXT Vom Cursor IN DEN FOCHSTATUS 0 BEGINNEN WENN AUSSCHLIESSEN NICHT SET Expoverage schließen ELSE SET expaverage expaverage smoothing close - expaverage INSERT INTO Ergebnisdatum close avg signal SELECT date close exploses signalname FETCH NEXT Vom cursor INTO date close END.


No comments:

Post a Comment