Exponentiell Gleitender Durchschnitt Cuda


Exponential Moving Average - EMA BREAKING DOWN Exponential Moving Average - EMA Die 12- und 26-Tage-EMAs sind die beliebtesten Kurzzeitmittelwerte und werden verwendet, um Indikatoren wie die gleitende durchschnittliche Konvergenzdivergenz (MACD) und den prozentualen Preisoszillator zu erzeugen (PPO). Im Allgemeinen werden die 50- und 200-Tage-EMAs als Signale von langfristigen Trends verwendet. Trader, die technische Analyse verwenden finden fließende Mittelwerte sehr nützlich und aufschlussreich, wenn sie richtig angewendet werden, aber Chaos verursachen, wenn sie falsch verwendet werden oder falsch interpretiert werden. Alle gleitenden Mittelwerte, die gewöhnlich in der technischen Analyse verwendet werden, sind von Natur aus nacheilende Indikatoren. Folglich sollten die Schlussfolgerungen aus der Anwendung eines gleitenden Durchschnitts auf ein bestimmtes Marktdiagramm eine Marktbewegung bestätigen oder ihre Stärke belegen. Sehr oft, bis eine gleitende durchschnittliche Indikatorlinie eine Änderung vorgenommen hat, um eine bedeutende Bewegung auf dem Markt zu reflektieren, ist der optimale Punkt des Markteintritts bereits vergangen. Eine EMA dient dazu, dieses Dilemma zu einem gewissen Grad zu lindern. Da die EMA-Berechnung mehr Gewicht auf die neuesten Daten setzt, umgibt sie die Preisaktion etwas fester und reagiert damit schneller. Dies ist wünschenswert, wenn ein EMA verwendet wird, um ein Handelseintragungssignal abzuleiten. Interpretation der EMA Wie alle gleitenden Durchschnittsindikatoren sind sie für Trendmärkte viel besser geeignet. Wenn der Markt in einem starken und anhaltenden Aufwärtstrend ist. Zeigt die EMA-Indikatorlinie auch einen Aufwärtstrend und umgekehrt einen Abwärtstrend. Ein wachsamer Händler achtet nicht nur auf die Richtung der EMA-Linie, sondern auch auf das Verhältnis der Änderungsgeschwindigkeit von einem Balken zum nächsten. Wenn zum Beispiel die Preisaktion eines starken Aufwärtstrends beginnt, sich zu verflachen und umzukehren, wird die EMA-Rate der Änderung von einem Balken zum nächsten abnehmen, bis zu dem Zeitpunkt, zu dem die Indikatorlinie flacht und die Änderungsrate null ist. Wegen der nacheilenden Wirkung, von diesem Punkt, oder sogar ein paar Takte zuvor, sollte die Preisaktion bereits umgekehrt haben. Daraus folgt, dass die Beobachtung einer konsequenten Abschwächung der Veränderungsrate der EMA selbst als Indikator genutzt werden könnte, der das Dilemma, das durch den nacheilenden Effekt von gleitenden Durchschnitten verursacht wird, weiter beheben könnte. Gemeinsame Verwendung der EMA-EMAs werden häufig in Verbindung mit anderen Indikatoren verwendet, um signifikante Marktbewegungen zu bestätigen und deren Gültigkeit zu messen. Für Händler, die intraday und schnelllebigen Märkten handeln, ist die EMA mehr anwendbar. Häufig benutzen Händler EMAs, um eine Handel Bias zu bestimmen. Zum Beispiel, wenn ein EMA auf einer Tages-Chart zeigt einen starken Aufwärtstrend, eine Intraday-Trader-Strategie kann nur von der langen Seite auf einem Intraday-Chart handeln. Ich bin kein Programmierer mit allen Fähigkeiten. Nur jemand neugierig CUDA und so Im tut ein wenig lesen. Ich lief über ein Beispiel der Verwendung von Thrust, um einen gleitenden Durchschnitt zu tun: Das Beispiel, wie es ist, läuft und funktioniert meistens richtig. Allerdings trivial in dem Sinne, dass es nur eine gleitende durchschnittliche Operation. Wie würde ich sagen, 352 dieser gleitenden durchschnittlichen Operationen parallel, die alle auf dem gleichen Datenstrom In meinem Kopf könnte der Programmablauf sein: Generieren Sie die Daten amp senden Sie es an einen CUDA-Kern. Kopieren Sie es aus dem CUDA-Kern in alle anderen 351 CUDA-Kerne in meinem GTX 465 Sagen Sie jedem CUDA-Kern, welche Anzahl der Datenelemente durchschnittlich über. (4. 5. 6. 352. 353. 354) Sagen Sie dem Gerät, den Durchschnitt in jedem Kern parallel ausführen Lesen Sie die Ergebnisse von jedem Kern Ich erhalte, dass dieser Code macht es alle passieren, aber wie bekomme ich Thrust zu tun Viele von ihnen parallel Mein Interesse hier ist über etwas wie Bestandsdaten. Wenn Im Blick auf GOOG Preise Id gesetzt, dass in der GPU mit allen Kernen und lassen Sie es dort. Id dann frei sein, um viel Verarbeitung zu tun, ohne das Laden der Daten mehr und nur das Lesen zurück Ergebnisse aus jedem Kern. HINWEIS: Ich möchte nicht GOOG in allen Kernen verwenden. Einige Kerne konnten GOOG sein, andere mit irgendein anderem Symbol, aber Kranke erhalten dort später. Ich denke gerade, dass ich nicht die auf lagerdaten im globalen Gedächtnis wünsche, wenn theres genügend Raum in jedem Kern. Ich nehme an, dies ist ziemlich einfach für CUDA amp Thrust Sep 12 12 at 19:39 Mein Verständnis ist, dass Sie sich für die folgenden zwei Situationen interessieren: Sie haben eine lange Abfolge von Elementen, und Sie wollen eine bestimmte Anzahl von Durchschn Mittelwertbildung auf unterschiedliche Stückzahlen, dh unterschiedliche Längen für das gleitende Mittelfenster. Dies ist, was ich aus Ihrer ursprünglichen Frage zu verstehen. Sie haben eine Folge von Sequenzen, die nacheinander im Speicher abgelegt werden, und Sie möchten sie parallel zu einem festen Mittelungsfenster der Größe 2 RADIUS 1 zu klassifizieren. Dies ist, was der ArrayFire-Code von asm vorgeschlagen hat - Sie haben ihn akzeptiert. Statt mit CUDA Thrust, ich denke, es wäre einfacher, Ihre eigenen CUDA Kernel schreiben, um die oben genannten Operationen zu tun. Unten, ein voll gearbeitetes Beispiel, das in der gleichen Weise arbeitet wie der von asm vorgeschlagene ArrayFire-Code, also für Fall 2. Die Änderung an Fall 1 wäre einfach. Sie können das exponentielle gleitende durchschnittliche Fenster abschneiden und dann Ihr gefiltertes Signal berechnen, indem Sie eine Faltung zwischen Ihrem Signal und dem fensterartigen Exponential durchführen. Die Faltung kann mit Hilfe der freien CUDA-FFT-Bibliothek (cuFFT) berechnet werden, da, wie Sie vielleicht wissen, die Faltung als punktweise Multiplikation der beiden Signale in der Fourier-Domäne ausgedrückt werden kann (Dies ist der treffende Name Faltungstheorem, Die mit einer Komplexität von O (n log (n)) verläuft). Diese Art von Ansatz wird Ihre CUDA-Kernel-Code zu minimieren und laufen sehr sehr schnell, auch auf einer GeForce 570 Besonders, wenn Sie alle Ihre Berechnungen in Single (Float) Präzision zu tun. Ich würde vorschlagen, die oben genannten Differenz-Gleichung zu manipulieren, wie unten angegeben und dann mit CUDA Thrust primitives. DIFFERENCE GLEICHSTELLUNG MANIPULATION - EXPLIZIT FORM DER DIFFERENZGLEICHUNG Durch einfache Algebra können Sie folgendes finden: Dementsprechend ist die explizite Form die folgende: CUDA THRUST IMPLEMENTATION Sie können das obige explizite Formular durch die folgenden Schritte implementieren: Initialisieren einer Eingabesequenz dinput to Alpha mit Ausnahme von dinput0 1. Definiere einen Vektor d1overbetatothen gleich 1, 1beta, 1beta2, 1beta3. Multiplizieren Sie elementweise dinput durch d1overbetatothen Führen Sie eine inclusivescan, um die Sequenz der yn betan zu erhalten Teilen Sie die obige Sequenz durch 1, 1beta, 1beta2, 1beta3. Der obige Ansatz kann für Linear Time-Varying (LTV) - Systeme empfohlen werden. Für lineare zeitinvariante (LTI) Systeme kann der von Paul erwähnte FFT-Ansatz empfohlen werden. Ich bin ein Beispiel für diesen Ansatz, indem ich CUDA Thrust und cuFFT in meiner Antwort auf FIR-Filter in CUDA.

Comments

Popular posts from this blog

Sechs Figur Forex Playbook

Bollinger Bänder Vorlage

Diver 1 0 (Forex Divergence Strategiesystem)