Wednesday 15 February 2017

Vb Net Moving Average Funktion

Gleitender Durchschnitt in VBA Thnaks für Ihre Antworten. Ive hat zwei Interessen hier. Die erste ist einfach nur eine VBA (User Function) Routine für einen Simple Moving Average (SMA). Die zweite ist eine VBA (User Function) Routine für einen Optimal Weighted Moving Average (OMA). Anders als die SMA, wo alle Punkte gleiches Gewicht haben, hat sie Gewichte für jeden Punkt im Durchschnitt mit einer linearen Gewichtung, bei einer bestimmten Steigung, die durch die Gewichtung bestimmt wird. Der Code, den ich präsentieren, kam aus Mathcad Arbeitsblätter, die ich erstellt, so kann es ein wenig massieren, um VBA für Schleifen daraus zu erfordern. Der Beispielkalkulationstabellenabschnitt hat einen Index, die Daten und die Ausgabe der 5 Punkt SMA und OMA. Unten ist die Beispiel-Excel-Tabelle. Darunter ist der Code, den ich in Mathcad verwendet habe. Microsoft Excel - Book2 Vielen Dank für Ihre Kommentare. Was ich denke, dass Sie zeigen, ist statische Mittelung einer Gruppe von Zellen. Der gleitende Durchschnitt in diesem Fall mittelt die letzte N Anzahl von Zellen, wobei die vorherigen letzten Daten aus dem Durchschnitt abfallen, wenn der Durchschnitt sich über die neueren Daten bewegt. So beschreibt N nur die Anzahl der Zellen, die gemittelt werden, wenn der Durchschnitt von einer Anfangszelle zum Ende der Daten rollt. Der untenstehende Link beschreibt in meinem besseren Detail den Optimally Biased Moving Average. Ich nahm ursprünglich die Gleichungen in Vektor-Notation in Mathcad. Allerdings wollte ich Vielseitigkeit, so habe ich dann die Berechnungen wieder mit für Schleifen anstelle von Vektor (Summation Notation). Die Code-Snippets, die ich früher gepostet habe, sind aus dem Mathcad-Arbeitsblatt. Während ich die durchschnittliche Funktion verwenden kann, entweder in Excel oder VBA. Bietet der for-Loop-Ansatz die Vielseitigkeit, jede Art von Gewichtung für einen gleitenden Durchschnitt zu verwenden, da die grundlegende Summierungsfunktion bereits in der Schleife vorhanden ist. Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten. Es ist Ihnen nicht erlaubt, Anhänge hochzuladen. Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten. BB-Code ist an. Smileys sind an Ein Tag Blad7 Table-It Version 06 von Erik Van Geit Blad7 Table-It Version 06 von Erik Van Geit Warum nicht statistische Pakete verwenden - es gibt viele Zeitreihen-Varianten. Statistik ist nicht für Excel gedacht. Jeder Statistik-Professor wird dies sagen. Aus persönlichen Erfahrungen - ich arbeite an meinen Daten und beim Addieren alle meine Wahrscheinlichkeiten durch alle Zellen, die ich bekomme 0.999999999999977, beim Hinzufügen der Themen seine 2013265800020132658000 so technisch sein sollte 1. Gleitkomma-Fehler sind großartig in Excel so ARMA Zeitreihe-Analyse Sollte in statistischen Paketen getan werden - versuchen Minitab - Penn State University Daher können wir die Nullhypothese nicht ablehnen, dass es keine Beziehung gibt. Sie ist eine gleitende Durchschnittsfunktion von TAs-Bibliothek hier: Kennt jemand, wie man diese Bibliothek benutzt oder von einem kostenlosen wissen Open source alterative für dotnet Ich denke, einige der Funktionen aus der Bibliothek oben sind mit Visual Studio 2012 enthalten. Ihre ist nicht viel Erklärung auf ihrer Website über die Funktionen. Sobald Sie das Unmögliche beseitigen, was auch immer bleibt, egal wie unwahrscheinlich, muss die Wahrheit sein. - quotSherlock holmesquot quotspeak leise und tragen ein großes stickquot - theodore roosevelt. Angst führt zu Ärger, Ärger führt zu Hass, Hass führt zu Leiden - Yoda. Blog - computerprofessions. co. nr Editiert von The Thinker Samstag, 15. Dezember 2012 01:05 Uhr Geänderter Typ Paul Ishak MVP, Moderator Donnerstag, 7. Februar 2013 18:11 Asker will eine Antwort. Samstag, 15. Dezember, 2012 1:03 AMI Ich möchte die Berechnung für Aktienkurs gleitenden Durchschnitt zu entwickeln. Aber viel komplexe Berechnung wurden später geplant. Mein erster Schritt zu wissen, wie man Moving Average effizient zu berechnen. Ich muss wissen, wie die Input-und Return-Ausgang effizient zu nehmen. Als Eingabe Datum und Preis. Ausgegebenes Datum, Preis und gleitender Durchschnitt. Wenn ich 500 Datensätze haben und ich möchte gleitende Durchschnitt für 5 Tage zu berechnen, was ist der effient Weg anstatt hin und her im Array von Datum und Preis wieder bitte sugest, was ist der beste Weg, um Eingang (ArrayList, Tabelle, Array Etc) und Ausgang zurück. Anmerkung: Der heutige MA von 5 Tagen wird der Durchschnitt der letzten 5 Tage einschließlich heute Preis sein. Gestern ist MA durchschnittlich der letzten 5 Tage von gestern. Ich möchte die Tage halten, um flexibel zu sein anstatt 5 könnte es 9, 14, 20 etc. sein. Wenn Sie einfache Berechnung ohne Ihre Bemühung benötigen, als Sie TA-Lib verwenden können. Aber wenn Sie wollen, dass Ihre Berechnung effizienter ist als TA-Lib, dann können Sie Ihre eigene technische Indikator. TA-Lib ist groß, aber Problem ist, dass diese Bibliothek nur statische Methoden haben. Das bedeutet, wenn Sie SMA-Array-Werte auf Basis von 500 Preisleisten berechnen müssen, dann werden Sie das gesamte Array von Balken senden und es wird Array von SMA-Werten zurückgeben. Aber wenn Sie neue 501-st-Wert erhalten, dann sollten Sie wieder das gesamte Array und TA-Lib wieder berechnen und zurückgeben SMA-Array von Werten. Stellen Sie sich jetzt vor, Sie brauchen einen solchen Indikator für den realen Preis, und für jede Preisänderung benötigen Sie einen neuen Indikatorwert. Wenn Sie einen Indikator nicht ein großes Problem haben, aber wenn Sie Hunderte Indikatoren arbeiten, könnte es ein Leistungsproblem sein. Ich war in einer solchen Situation und beginnen die Entwicklung von Echtzeit-Indikatoren, die effizient sind und zusätzliche Berechnungen für neue Preisleiste oder für geänderte Preisleiste nur. Leider habe ich nie benötigt SMA-Indikator für meine Handelssysteme, aber ich habe solche für EMA, WMA, AD, und andere. Ein solcher Indikator AD ist in meinem Blog veröffentlicht und Sie können von dort sehen, was ist die grundlegende Struktur meiner Echtzeit-Indikator-Klasse. Ich hoffe, Sie benötigen kleine Änderungen, um SMA-Indikator zu implementieren, denn ist einer der einfachsten. Die Logik ist einfach. Zur Berechnung von SMA benötigen Sie nur die letzten Preiswerte. So Klasse Instanz haben Sammlung von Preisen, die Speicherung halten nur letzte n Anzahl der Preise als SMA definiert ist (in Ihrem Fall 5). Also, wenn Sie neue Bar haben, werden Sie älteste entfernen und neue hinzufügen und erstellen Berechnung. Donnerstag, 10. April 2008 16:04 Alle Antworten Es gibt eine Bibliothek namens TA-Lib, die alles für Sie erledigt und es ist Open Source. Es hat etwa 50 Indikatoren denke ich. Weve verwendet es in der Produktionsumgebung, und es ist sehr effizient und realible. Sie können es in C, Java, C, etc. verwenden. Wenn Sie einfache Berechnung ohne Ihren Aufwand benötigen, als Sie TA-Lib verwenden können. Aber wenn Sie wollen, dass Ihre Rechnung effizienter ist als TA-Lib, dann können Sie Ihre eigene technische Indikator erstellen. TA-Lib ist groß, aber Problem ist, dass diese Bibliothek nur statische Methoden haben. Das bedeutet, wenn Sie SMA-Array-Werte auf Basis von 500 Preisleisten berechnen müssen, dann werden Sie das gesamte Array von Balken senden und es wird Array von SMA-Werten zurückgeben. Aber wenn Sie neue 501-st-Wert erhalten, dann sollten Sie wieder das gesamte Array und TA-Lib wieder berechnen und zurückgeben SMA-Array von Werten. Stellen Sie sich jetzt vor, Sie brauchen einen solchen Indikator für den realen Preis, und für jede Preisänderung benötigen Sie einen neuen Indikatorwert. Wenn Sie einen Indikator nicht ein großes Problem haben, aber wenn Sie Hunderte Indikatoren arbeiten, könnte es ein Leistungsproblem sein. Ich war in einer solchen Situation und beginnen die Entwicklung von Echtzeit-Indikatoren, die effizient sind und zusätzliche Berechnungen für neue Preisleiste oder für geänderte Preisleiste nur. Leider habe ich nie benötigt SMA-Indikator für meine Handelssysteme, aber ich habe solche für EMA, WMA, AD, und andere. Ein solcher Indikator AD ist in meinem Blog veröffentlicht und Sie können von dort sehen, was ist die grundlegende Struktur meiner Echtzeit-Indikator-Klasse. Ich hoffe, Sie benötigen kleine Änderungen, um SMA-Indikator zu implementieren, denn ist einer der einfachsten. Die Logik ist einfach. Zur Berechnung von SMA benötigen Sie nur die letzten Preiswerte. So Klasse Instanz haben Sammlung von Preisen, die Speicherung halten nur letzte n Anzahl der Preise als SMA definiert ist (in Ihrem Fall 5). Also, wenn Sie neue Bar haben, werden Sie älteste entfernen und neue hinzufügen und erstellen Berechnung. Ich würde den gleitenden Durchschnitt in der Datenbank über eine gespeicherte Prozedur oder in einem Cube berechnen. Haben Sie sich Analysis Services angesehen, hat es die Möglichkeit, gleitende Durchschnitte zu berechnen. Donnerstag, 10. April 2008 16:05 Ja. TA-LIB ist gut, aber vielleicht nicht geeignet für mich. Wenn ich neuen Wert oder aktualisierten Wert für den Verlauf 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. Die Ausführungszeit eines TA-Lib-Aufrufs auf einem Array von 10000 Elementen beträgt etwa 15 Millisekunden (auf einem Intel Core Duo 2,13 Ghz). Dies ist der Durchschnitt aller Funktionen. Unter den schnellsten, nimmt SMA weniger als 2,5 Millisekunden. Der langsamste HTTRENDMODE benötigt 450 Millisekunden. Mit weniger Elementen ist es schneller. SMA benötigt ca. 0,22 Millisekunden für 1000 Eingangselemente. Die Geschwindigkeitsverstärkung ist fast linear (der Aufwand für die Ausführung des Funktionsaufrufs ist vernachlässigbar). Im Rahmen Ihrer Bewerbung ist TA-Lib höchstwahrscheinlich Ihr Engpass für die Geschwindigkeitsleistung. Auch ich in der Regel nicht empfehlen, solche quotlast nquot Lösung. Lesen Sie 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 der Größe 10000 haben, die Daten nur für die ersten 500 Elemente initialisieren, ein Element hinzufügen und TA-Lib aufrufen, um die SMA nur für das neue Element zu berechnen. TA-Lib schaut nicht mehr als nötig (wenn SMA von 5, dann wird TA-Lib ein einzelnes SMA mit den letzten 5 Werten berechnen). Dies wird mit dem Parameter startIdx und endIdx ermöglicht. Sie können einen zu berechnenden Bereich oder einen einzelnen Wert angeben. In diesem Szenario würden Sie startIdx endIdx 500 machen, um das 501st-Element zu berechnen. Warum ist solch eine Quell-nquot-Lösung für einige gefährlich? Unabhängig von der Auswahl der Boban. s-Lösung oder TA-Lib bedenkt man, dass die Verwendung einer kleinen endlichen Anzahl von vergangenen Daten nicht gut funktioniert mit den meisten TA-Funktionen. Mit SMA, ist es offensichtlich, dass Sie nur n Element benötigen, 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 vom vorherigen Wert ab, um den neuen Wert zu berechnen. Die Funktion ist rekursiv. Das bedeutet, dass alle vergangenen Werte einen Einfluss auf zukünftige Werte haben. Wenn Sie sich entscheiden, Ihr algo zu verwenden, um nur eine kleine Menge von Vergangenheit n Wert 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 dies oft im Zusammenhang mit TA-Lib diskutiert (ich nenne es die quotquellierbare Periodquot in der Dokumentation und Forum). Um es einfach zu halten, meine allgemeine Empfehlung ist, wenn Sie nicht den Unterschied zwischen einem Algo mit einer endlichen Impulsantwort (FIR) aus einem Algo mit einer unendlichen Impulsantwort (IIR) machen können, sind Sie sicherer zu berechnen, über alle Daten, die Sie haben verfügbar. TA-Lib spezifizieren im Code, welche seiner Funktionen eine instabile Periode (IIR) haben. Bearbeitet von mfortier Freitag, 15. August 2008 04:25 Richtig english sentence Freitag, 15. August 2008 04:20


No comments:

Post a Comment