Tuesday 10 January 2017

Moving Average Gradient

Wie bekomme ich den Winkel eines gleitenden Mittelwertes, der auf einem Diagramm gezeichnet wird, zum Beispiel: Ich habe 2 bis 3 gleitende Mittelwerte, die auf meinen Diagrammen gezeichnet werden. Basierend auf dem Winkel (f. e 60 Grad) habe ich einen Indikator, wie stark der aktuelle Aufwärtstrend ist. Soll ich den Winkel selber berechnen, basierend auf den MA-Werten der f. e. Letzte 10 Kerzen, oder sollte ich die ObjectGet () - Funktion Ich habe versucht, die letztere, aber Sie müssen einen Namen angeben, und da alle meine MAs den gleichen Namen haben (und ich nicht sehen, wie ich sie ändern kann), theres nichts Herauskommen. (Theyre wirklich die gleichen MAs, aber basiert auf nahen, hohen und niedrigen Preisen). Jede mögliche Hilfe würde sehr geschätzt Dank im Voraus. Der Winkel hängt davon ab, wie viel Zeit Sie auf der horizontalen Achse haben. Angenommen, Ihr Diagramm zeigt 2 Tage, und Sie ändern das auf 1 Tag, wird der Winkel kleiner. So schlage ich vor, Sie verwenden nicht einen Winkel, aber etwas wie quotaverage Unterschied in den Zacken pro timeframequot. Das bedeutet: Nehmen Sie den Wertunterschied von MA1 und MA2 und dividieren Sie ihn durch die Anzahl der Zeitrahmen zwischen dem Moment der MAs und dem Moment, in dem Sie den Winkel wünschen. Danke für den Vorschlag. Hört sich gut an. In der Tat, ich habe bereits etwas Arbeit Aber es braucht ein wenig Tweaking. Sie können nicht messen eine Ecke der Neigung einer Geraden auf dem Zeitplan, weil haben unterschiedliche Einheiten - der Preis und die Zeit. Es ist möglich, nur ähnlich mit ähnlichen (ähnlich wie) zu messen. In diesem Fall versuchen Sie, eine Ecke der Neigung einer Geraden auf dem Zeitplan zu messen, ausgedrückt durch Pixel. Sie können authentische Maßnahme nur Geschwindigkeit der Änderung des Preises in Bezug auf Point-Einheit für eine Time-Einheit. Gann Fan Lines von Gann Fan werden in verschiedenen Winkeln s gebaut. MT kann die Winkelfunktion auf der Basis von Bildschirmpixeln (trans von zwei Werten und zweimal coodiniert) liefern. Da Angle ist besser für Leute zu beobachten. MathArctan (/ (WindowPriceMax () - WindowPriceMin ())) / ((shift2-shift1) / WindowBarsPerChart ()))) 180 / 3.14 Ich stimme voll und ganz zu Ihnen. Angles Materie und sie werden die ganze Zeit verwendet. Ich interessiere mich für die Formel, die Sie geschrieben haben. Ich habe immer den Winkel mit der folgenden Formel: Slope wird in einer anderen Funktion berechnet. Anglefactor-Steuerelemente für das Format des Yen. Wie auch immer, es wird nah, aber es ist immer noch nicht richtig. Wenn ich Ihre Formel stattdessen, bekomme ich eine Division durch Null Fehler in der Strategie-Tester. Ist dies, weil die Fenster-Funktionen nicht innerhalb des Testers arbeiten oder habe ich etwas falsch machen Besonderheiten des Optimierungsprozesses Nichts wird in der Zeitschrift ausgegeben (entweder Print () - Funktion) Dies wurde getan, um die Prüfung zu beschleunigen und Speicherplatz zu sparen. Wenn vollständige Protokolle ausgegeben werden die Journaldateien benötigen Hunderte von MByte. Zeichnungsobjekte werden nicht gesetzt Die Objekte sind deaktiviert, um die Prüfung zu beschleunigen. Es wird verwendet, um die Tabelle und das Diagramm mit Testergebnissen zu verstümmeln, die Möglichkeit, sehr schlechte Ergebnisse zu überspringen, wird verwendet. Diese Funktion kann im Kontextmenü von quotOptimization Resultsquot - gt ampquotSkip unbrauchbare Resultsquot-Registerkarte aktiviert werden. Hinweis. Basierend auf Bildschirmpixeln. Dx, dy sollte in der gleichen Einheit, am besten trans auf Bildschirm-Pixel. MathArctan (MathTan ((Preis1-Preis2) / (WindowPriceMax () - WindowPriceMin ())) / ((shift2-shift1) / WindowBarsPerChart ()))) 180 / 3.14 dividieren durch Nullfehler. Check (shift2-shift1) sollte vor der Berechnung nicht gleich ZERO sein. Ich teste sie auf der neuesten Version 203. Ich teste sie nicht beim Testen von EA. Ich möchte Ihnen meine tiefste Wertschätzung für die Formel geben, die Sie geteilt haben. Ich reagierte nicht früher, weil ich fertig war, meine EA zusammen zu erhalten. Klappt wunderbar. Frieden und guten Willen .-- Das Rad des FeuersDas Papier in Frage ist bei theastuteinvestor. net/f/IJEFPublishedPaper. pdf Der relevante Abschnitt ist Abschnitt 3, wo es heißt quotUsing Kalkül, die neun und zwei Monate SMA Trendlinien werden in umgewandelt Ein mathematisches Modell, gefolgt von Beschreibungen der Verwendung in den Abschnitten 3.1 und 3.2 ndash babelproofreader Ein gleitender Durchschnitt ist definitionsgemäß der Durchschnitt einer Anzahl von vorherigen Datenpunkten. Im Fall der stetigen Funktion f: mathbb tomathbb können wir den einfachen gleitenden Mittelwert (SMA) mit der Fenstergröße mathbb ni w gt 0 definieren, um die Funktion zu sein. Im Falle einer diskreten Funktion g: mathbb tomathbb als wahrscheinlich im Fall von Finanz-Anwendungen, die SMA mit Fenstergröße winmathbb ist einfach Nun, für den kontinuierlichen Fall, durch die grundlegenden Theorem der Kalkül, ist die Ableitung der SMA einfach und für den diskreten Fall, mit dem Unterschied Quotient, haben wir, dass die Formel Für die Ableitung der SMA ist die gleiche im diskreten und kontinuierlichen Fall Nun kann ich nicht erklären, den Satz Verwenden von Kalkül. Das Papier, mit dem Sie verbunden sind, ist auch etwas fehlt in Details für mich zu entziffern, was genau die Autoren im Sinn hatte. Eine Möglichkeit ist jedoch, dass sie nur die obige Beobachtung bedeuten: Obwohl die Finanzdaten diskret und nicht kontinuierlich in der Zeit gegeben werden, haben wir durch die obige Beobachtung die folgende schöne Tatsache: Sei g: mathbb tomathbb eine definierte Funktion Nur auf ganzzahligen Zeitschritten. Dann ist f: mathbb tomathbb jede feste beliebige stetige Erweiterung von g, dh f ist eine stetige Funktion mit der Eigenschaft, daß f (n) g (n) für irgendeine ganze Zahl n ist. Definiere die SMA wie oben und berechne ihre Ableitungen, dann notwendigerweise frac bar w (n) D-bar w (n) für jede ganze Zahl n. Was bedeutet, dass es keine Rolle, dass Kalkül kann nicht auf Funktionen, die auf einer diskreten Domain bei den Umgang mit SMAs angewendet werden, die diskrete und kontinuierliche Bilder geben die gleichen Antworten, wenn Sie sie auf der integralen timesteps. Introduction auf Gradient-Based Learning dann können wir Finden Sie die Minima (und Maxima und Sattelpunkte), aber im Allgemeinen sind wir nicht in der Lage, die Lösungen dieser Gleichung zu finden, so verwenden wir numerische Optimierungsmethoden. Die meisten von ihnen basieren auf der Idee der lokalen Abstammung. Iterativ so modifizieren, dass sie abnehmen, bis wir nicht mehr können, d. H. Wir haben ein lokales Minimum erreicht (vielleicht global, wenn wir Glück haben). Die einfachste aller gradientenbasierten Optimierungstechniken ist der Gradientabfall. Es gibt viele Varianten der Gradientenabstufung, so definieren wir hier gewöhnlichen Gradientenabstieg: Stochastische Gradientabstufung Wir nutzen die Tatsache, dass ein Durchschnitt ist, in der Regel über i. i.d. (Unabhängig und identisch verteilte) Beispiele, um Updates zu viel öfter zu machen, im äußersten Fall (und am häufigsten) nach jedem Beispiel: Wo ist das nächste Beispiel aus dem Trainingsset oder aus dem nächsten Beispiel, Die Online-Einstellung (wo wir kein festes Trainingsset haben, sondern stattdessen auf einen Strom von Beispielen aus dem Datenerzeugungsprozess zugreifen). Stochastischer Gradientenabfall (SGD) ist ein allgemeineres Prinzip, bei dem die Aktualisierungsrichtung eine Zufallsvariable ist, deren Erwartungen der wahre Gradient von Interesse ist. Die Konvergenzbedingungen von SGD ähneln denen der Gradientenabstufung trotz der zusätzlichen Zufälligkeit. SGD kann viel schneller als gewöhnliche (auch als Batch) Gradienten Abstieg, weil es Updates viel häufiger macht. Dies gilt insbesondere für große Datensätze oder in der Online-Einstellung. Tatsächlich verwendet man bei maschinellen Lernaufgaben gewöhnlich einen gewöhnlichen Gradientenabfall anstelle von SGD, wenn die zu minimierende Funktion nicht wie oben beschrieben (wie ein Mittelwert) zerlegt werden kann. Minibatch Stochastischer Gradientabstand Dies ist eine kleine Variation von SGD, in der wir die Aktualisierungsrichtung erhalten, indem wir den Durchschnitt über einen kleinen Batch (Minibatch) von Beispielen (z. B. 10, 20 oder 100) nehmen. Der Hauptvorteil ist, dass man anstelle von Vector x Matrix Produkten oft ein Matrix x Matrix Produkt einsetzen kann, bei dem die erste Matrix Zeilen aufweist und diese effizienter realisiert werden kann (manchmal 2 bis 10 Mal schneller, je nach den Größen der Matrizen). Minibatch SGD hat den Vorteil, dass es mit einer etwas weniger lauten Schätzung des Gradienten arbeitet (um so mehr steigt). Wenn jedoch die Minibatchgröße zunimmt, sinkt die Anzahl der durchgeführten Berechnungen je getroffene Berechnung (letztlich wird sie sehr ineffizient, wie der Batchgradientenabfall). Es gibt einen optimalen Kompromiss (in Bezug auf die Recheneffizienz), der abhängig von der Datenverteilung und den Einzelheiten der betrachteten Funktionsklasse variieren kann, sowie wie Berechnungen durchgeführt werden (z. B. Parallelität kann einen Unterschied machen). Eine andere Variante, die im Geist zu Minibatch SGD ähnlich ist, ist die Verwendung des sogenannten Impulses: Die Idee besteht darin, on-the-fly (online) einen gleitenden Durchschnitt der vergangenen Gradienten zu berechnen und diesen gleitenden Durchschnitt anstelle des aktuellen Beispiels zu verwenden Gradienten, in der Aktualisierungsgleichung. Der gleitende Durchschnitt ist typischerweise ein exponentiell abklingender gleitender Durchschnitt, d. H. Wo ist ein Hyperparameter, der steuert, wie viel Gewicht in diesem mittleren bis älteren vs jüngsten Gradienten gegeben wird. Auswählen des Lernratenplans Wenn die Schrittweite zu groß ist 8211, die größer als das Doppelte des größten Eigenwertes der zweiten Ableitungsmatrix (Hessian) von 8211 ist, gehen die Gradientenschritte nach oben statt nach unten. Wenn die Schrittweite zu klein ist, dann ist die Konvergenz langsamer. Dies ist die häufigste Wahl. Es gibt in der Theorie ein exponentiell größeres Gewicht für neuere Beispiele und ist besonders geeignet in einer nichtstationären Umgebung, wo sich die Verteilung ändern kann. Es ist sehr robust, aber der Fehler hört auf, nach einer Weile zu verbessern, wo eine kleinere Lernrate eine genauere Lösung liefern könnte (nähert sich dem Minimum ein wenig mehr). Dieser Zeitplan garantiert eine asymptotische Konvergenz (as), da er die folgenden Anforderungen erfüllt: Nachteilig ist, dass ein zusätzlicher Hyperparameter eingeführt wird. Eine andere ist, dass trotz ihrer Garantien, eine schlechte Wahl kann sehr langsam Konvergenz. Strömungsdiagramme, Kettenregel und Backpropagation: Effiziente Berechnung des Gradienten Betrachten wir eine Funktion (in unserem Fall ist sie) von mehreren Argumenten, und wir wollen sie ebenso berechnen wie ihre Ableitung (Gradient) w. r.t. Einige ihrer Argumente. Wir werden die Berechnung der Funktion in Form von Elementarberechnungen, für die partielle Ableitungen leicht zu berechnen sind, zerlegen, die einen Flussdiagramm bilden (wie bereits dort diskutiert). Ein Flussdiagramm ist ein azyklischer Graph, wobei jeder Knoten das Ergebnis einer Berechnung darstellt, die unter Verwendung der Werte durchgeführt wird, die mit verbundenen Knoten des Graphen assoziiert sind. Es hat Eingangsknoten (ohne Vorgänger) und Ausgangsknoten (ohne Nachfolger). Jeder Knoten des Flussdiagramms ist mit einem symbolischen Ausdruck verknüpft, der festlegt, wie sein Wert in Bezug auf die Werte seiner Kinder (die Knoten, von denen er seine Eingabe erhält) berechnet wird. Wir konzentrieren uns auf Flußdiagramme zum Zwecke der effizienten Berechnung von Gradienten, so daß wir die Gradienten in Bezug auf einen speziellen Ausgangsknoten beibehalten (hier bezeichnet als einen zu unterscheidenden Verlust in bezug auf Parameter in unserem Fall). Wir werden jedem Knoten den Knotenwert des symbolischen Ausdrucks zuordnen, der angibt, wie der Knotenwert in Bezug auf den Wert seiner Vorgänger (Kinder) die partielle Ableitung in Bezug auf den Knotenwert der symbolischen Ausdrücke berechnet wird, die festlegen, wie die Berechnung berechnet wird Partielle Ableitung jedes Knotenwertes in bezug auf die Werte seiner Vorgänger. Beachten Sie, dass die Rekursion an dem Wurzelknoten des Graphen beginnt (Knoten, der im Allgemeinen ein Graph ist, nicht ein Baum, weil es mehrere Pfade von einem gegebenen Knoten zum Wurzel 8211 Ausgang 8211 Knoten geben kann). Beachten Sie auch, dass jeder ein Ausdruck (und ein entsprechender Wert, wenn die Eingaben gegeben werden), die mit einem Bogen des Graphen zugeordnet ist (und jeder Bogen ist eine solche partielle Ableitung zugeordnet ist). Beachten Sie, wie die an diesem Rezept beteiligten Gradientenberechnungen genau in die entgegengesetzte Richtung gehen, verglichen mit denen, die für die Berechnung benötigt werden. In der Tat sagen wir, dass Farbverläufe zurück-propagiert sind. Nach den Bogen nach hinten. Die Instanziierung dieser Prozedur zur Berechnung von Gradienten im Falle von Feedforward-Multilayer-Neuronennetzen wird als Back-Propagation-Algorithmus bezeichnet. Man beachte, daß es viele Wege gibt, um diese Gradienten zu berechnen, und während der obige Algorithmus der schnellste ist, ist es leicht, eine scheinbar einfache Rekursion aufzuzeichnen, die stattdessen exponentiell langsamer wäre, z. B. im . Im allgemeinen kann man als Summe über alle Pfade in dem Graphen von bis zu den Produkten der partiellen Ableitungen entlang jedes Pfades schreiben. Eine Illustration von diesem ist mit einem Diagramm mit der folgenden Struktur:


No comments:

Post a Comment