Thursday 6 July 2017

Einfach Gleitender Durchschnitt C #


Ein einfacher gleitender Durchschnitt ist ein Durchschnitt der Daten, die über einen Zeitraum berechnet werden. Der gleitende Durchschnitt ist der populärste Preisindikator, der in technischen Analysen verwendet wird. Dieser Durchschnitt kann mit jedem Preis einschließlich der Hi, Low, Open oder Close verwendet werden, und kann auch auf andere Indikatoren angewendet werden. Ein gleitender Durchschnitt glättet eine Datenreihe, die in einem volatilen Markt sehr wichtig ist, da sie hilft, wichtige Trends zu identifizieren. Dundas Chart für Reporting Services hat vier Arten von gleitenden Durchschnitten einschließlich Simple, Exponential. Dreieckig. Und Gewichtet. Der wichtigste Unterschied zwischen den obigen gleitenden Durchschnitten ist, wie sie ihre Datenpunkte gewichten. Wir empfehlen Ihnen, mit den Finanzformeln zu lesen, bevor Sie fortfahren. Mithilfe von Finanzformeln erhalten Sie eine ausführliche Erläuterung, wie Sie Formeln verwenden können, und erläutert auch die verschiedenen Optionen, die Ihnen beim Anwenden einer Formel zur Verfügung stehen. FormulaFinancial (FinancialFormula. MovingAverage, 20, Serie 1: Y2, Serie 2: Y) Ein Liniendiagramm ist eine gute Wahl, wenn ein einfacher gleitender Durchschnitt angezeigt wird. Finanzinterpretation: Der "Moving Average" wird verwendet, um die Sicherheitspreise mit dem gleitenden Durchschnitt zu vergleichen. Das wichtigste Element, das bei der Berechnung des gleitenden Durchschnitts verwendet wird, ist ein Zeitraum, der dem beobachteten Marktzyklus entsprechen sollte. Der gleitende Durchschnitt ist ein nachlaufender Indikator und wird immer hinter dem Preis sein. Wenn der Preis folgt einem Trend der gleitende Durchschnitt ist sehr nah an den Wertpapieren Preis. Wenn ein Preis steigt, wird der gleitende Durchschnitt wahrscheinlich aufgrund des Einflusses der historischen Daten bleiben. Berechnung: Der gleitende Mittelwert wird nach folgender Formel berechnet: In der vorhergehenden Formel stellt der n-Wert eine Zeitperiode dar. Die häufigsten Zeiträume sind: 10 Tage, 50 Tage und 200 Tage. Ein gleitender Durchschnitt bewegt sich, da bei jedem neuen Datenpunkt der älteste Datenpunkt gelöscht wird. Ein einfacher gleitender Durchschnitt gibt jedem Datenpunktpreis gleiches Gewicht. Dieses Beispiel veranschaulicht, wie ein 20-Tage-Moving-Durchschnitt mit der Formel-Methode zu berechnen. 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 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 erneut 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 erneut 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, 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 quotquartierbare Periodquot in der Dokumentation und Forum). Um es einfach, meine allgemeine Empfehlung ist, wenn Sie kann den Unterschied zwischen einem algo mit endlicher Impulsantwort (FIR) von einem algo mit unendlicher Impulsantwort (IIR) machen, werden 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. Herausgegeben von mfortier Freitag, 15. August 2008 04.25 korrektem Englisch Satz Freitag, 15. August 2008 04.20 AMI haben eine 4000 Menge Daten von Lager und Tring den gleitenden Durchschnitt für alle Datenwerte zu berechnen, aber da der Bewegungs Durchschnitt basiert auf früheren Daten und ich kann nicht berechnen, die 15-Tage-SMA für die ersten 14 Tage, überspringen die ersten 14 Tage und berechnen die SMA auf den Rest der Daten. Und es ist zu LINQ verwenden, um zu erreichen. Kann jemand eine Probe geben oder Hinweis, wie man mit LINQ zu berechnen gleitenden Durchschnitt Die Ausgabe für die durchschnittlichen Werte sind alle um 500s Ich wirklich nicht verstehen, wie ist, dass möglich, dass hohe Wert zu bekommen. Verschieben Mittelwertbildner mit Summen-Array: 06072012 562,49 571,72 06082012 565,84 580,32 06112012 568,56 571,17 06122012 569,55 576,16 06132012 570,56 572,16 06142012 570,63 571,53 06152012 571,21 574,13 06182012 572,78 585,78 06192012 573,79 587,41 06202012 574,23 585,74 06212012 574,22 577,67 06222012 575,63 582,10 06252012 576,06 570,77 06262012 576,68 572,03 06272012 576,88 574,50 06.282.012 576,7 569,05 06.292.012 576,95 584,00 578,37 592,52 07.022.012 07.032.012 579,92 599,41 581,74 599,41 07.032.012 Herausgegeben von Leemx Freitag, 16. November 2012 02.59 Gerührt von Lisa Zhu Microsoft Kontingent Personal Montag, 19. November 2012 07.38 Linq (von : Visual C General) Um einen gleitenden Durchschnitt zu erstellen, würde ich zunächst einen Bereich von 0 bis (Länge der Datenliste - Länge der bewegten Periode) und dann für jeden Wert im Bereich erstellen Elemente x bis x 43 Länge der Bewegungsperiode auswählen und den Mittelwert berechnen. in einer schönen LINQ-Anweisung All: Beachten Sie, dass dies nicht sehr effizient ist, da man im Grunde über die Datenliste iterieren für jeden Wert im Bereich .. Hey, schauen Dieses System ermöglicht Unterschriften von mehr als 60 cha Herausgegeben von Arno Brouwer Freitag November 23, 2012 4:42 PM Als Antwort markiert von Alexander Sun Friday, December 07, 2012 4:41 PM Alle Antworten Eine Probe Ihrer LINQ-Anweisung würde helfen. Ich möchte mit dem Erstellen eines Bereichs von 0 bis (Länge der Datenliste - Länge der bewegten Periode), dann für jeden Wert in den Bereich wählen Elemente x Bis x 43 Länge der Bewegungsperiode und berechnen den Durchschnitt. in einer schönen LINQ-Anweisung All: Beachten Sie, dass dies nicht sehr effizient ist, da man im Grunde über die Datenliste iterieren für jeden Wert im Bereich .. Hey, schauen Dieses System ermöglicht Unterschriften von mehr als 60 cha Herausgegeben von Arno Brouwer Freitag November 23, 2012 4:42 PM Als Antwort markiert von Alexander Sun Freitag, den 07. Dezember 2012 um 04:41 Uhr Microsoft führt eine Online-Umfrage durch, um Ihre Meinung über die Msdn-Website zu verstehen. Wenn Sie sich für eine Teilnahme entscheiden, wird Ihnen die Online-Umfrage präsentiert, wenn Sie die Msdn-Website verlassen. Möchten Sie teilnehmen Helfen Sie uns, MSDN zu verbessern. Besuchen Sie unsere UserVoice Seite, um auf Ideen Dev Centers Lernressourcen vorzulegen und abzustimmen

No comments:

Post a Comment