Tuesday 21 November 2017

Moving Average Iskell


Ich arbeite an Lernen Haskell, also habe ich versucht, eine gleitende durchschnittliche Funktion zu implementieren Hier ist mein Code. wo der Benutzer mAverage mit einer Länge für jeden Durchschnitt und die Liste der Werte z. B. mAverage 4 1,2 100.Jedoch, wenn ich laufe Der Code auf der Eingabe mAverage 4 1,2 100000 bekomme ich, dass es 3 6 Sekunden in Ghci mit Set s und verwendet ein Gigabyte Speicher Dies scheint sehr ineffizient zu mir, da die entsprechende Funktion nimmt einen Bruchteil einer Sekunde in Python Is Dort irgendeine Art und Weise, dass ich meinen Code effizienter machen könnte. das 27. Dezember 19 um 19 59. Ein Weg, um das Schiebefenster zu machen, ist, die erste Summe als Float-Pass in der ursprünglichen Liste zu übergeben, um verwendet zu werden, um von der aktuellen zu subtrahieren Summe und die ursprüngliche Liste mit k Einträgen gelöscht, um verwendet werden, um die aktuelle Summe hinzuzufügen Dann ist die nächste Summe die Summe in minus das erste Element der Subtraktionsliste plus das erste Element der Addition Liste Chai T Rex Dez 27 16 an 20 33.Wenn Sie etwas Neues lernen wollen, können Sie sich diese schöne Lösung für Moving Average-Problem anschauen. Es ist von einem meiner Schüler geschrieben, also habe ich t beansprucht Autorenschaft Ich mag es wirklich, weil es sehr kurz ist Das einzige Problem hier Ist die durchschnittliche Funktion Diese Funktionen sind bekannt, um schlecht zu sein Stattdessen können Sie schöne Falten von Gabriel Gonzalez verwenden Und ja, diese Funktion nimmt O k Zeit, wo k ist Größe des Fensters für die Berechnung der Durchschnitt des Fensters Ich finde es besser, weil Sie Flimmerpunkt Fehler Gesicht Wenn du versuchst, nur neues Element zum Fenster hinzuzufügen und das letzte zu subtrahieren Oh, es benutzt auch staatliches monad. UPD nach irgendeinem Codeüberblick Ich bemerkte, daß es nicht notwendig ist, Falten hier zu verwenden, um durchschnittlich zu berechnen Sie wissen, dass Länge immer n ist, also Sie Kann einfach nur durchschnittliche Funktion in wo clause. answered Dec 27 16 at 23 26.Hier eine Lösung für Sie. Die Idee ist, zwei Listen zu scannen, eine, wo das Mittelungsfenster beginnt, und ein anderes, wo es endet Getting ein Schwanz Ende einer Liste Kostet so viel wie das Scannen des Teils, den wir überspringen, und wir kopieren nichts Wenn die Fenstergröße in der Regel ziemlich groß war, konnten wir die restlichen Daten zusammen mit dem Zählen der Summe initialdata in einem go berechnen. Wir erzeugen eine Liste von Teilsummen wie beschrieben In meinem Kommentar, dann teilen Sie sie durch die Fensterbreite, um Mittelwerte zu erhalten. Während gleitendGroß berechnet Mittelwerte für voreingenommene Position Fensterbreite nach rechts, zentriertSlidingAverage berechnet zentrierte Mittelwerte, mit halber Fensterbreite nach links und nach rechts. Wenn ich versuche, length slidingAverage 10 1 1000000 es dauert weniger als eine Sekunde auf meinem MBP Aufgrund der Faulheit centeredSlidingAverage dauert etwa die gleiche Zeit. answered Dec 27 16 bei 22 25.Your Antwort.2017 Stack Exchange, Inc. Moving Average Indicator. Shorter Länge gleitende Durchschnitte sind mehr Empfindlich und neue Trends früher identifizieren, aber auch mehr falsche Alarme geben Längere bewegte Durchschnitte sind zuverlässiger, aber weniger reaktionsschnell, nur Abholung der großen Trends. Use einen gleitenden Durchschnitt, dass die Hälfte der Länge des Zyklus, die Sie verfolgen sind Wenn die Peak - To-Peak-Zyklus-Länge beträgt etwa 30 Tage, dann ist ein 15-Tage-Gleitender Durchschnitt angemessen. Wenn 20 Tage, dann ist ein 10-Tage-Gleitender Durchschnitt angemessen. Einige Händler werden jedoch 14 und 9 Tage gleitende Durchschnitte für die oben genannten Zyklen in der Hoffnung verwenden Der Erzeugung von Signalen etwas vor dem Markt Andere befürworten die Fibonacci Zahlen von 5, 8, 13 und 21.100 bis 200 Tag 20 bis 40 Woche bewegte Durchschnitte sind für längere Zyklen beliebt.20 bis 65 Tag 4 bis 13 Woche gleitende Durchschnitte sind nützlich für Zwischenstufe Zyklen und 5 bis 20 Tage für kurze Zyklen. Die einfachste gleitende durchschnittliche System erzeugt Signale, wenn der Preis kreuzt den gleitenden Durchschnitt. Go lange, wenn der Preis kreuzt über den gleitenden Durchschnitt von unten. Go kurz, wenn der Preis kreuzt unter dem gleitenden Durchschnitt von oben . Das System ist anfällig für Whipsaws in riesigen Märkten, mit Preis überqueren hin und her über den gleitenden Durchschnitt, die Erzeugung einer großen Anzahl von falschen Signalen Aus diesem Grund bewegten durchschnittliche Systeme normalerweise Filter, um Whipsaw zu reduzieren. Mehr anspruchsvolle Systeme verwenden mehr als eins Gleitender Durchschnitt. Two Moving Averages nutzt einen schnelleren gleitenden Durchschnitt als Ersatz für die Schließung Preis. Three Moving Averages beschäftigt einen dritten gleitenden Durchschnitt zu identifizieren, wenn der Preis reicht. Mehrere Moving Averages verwenden eine Reihe von sechs schnell gleitenden Durchschnitten und sechs langsam gleitende Durchschnitte Um sich gegenseitig zu bestätigen. Displatzierte Moving Averages sind nützlich für Trend-Follow-Zwecke, die Verringerung der Anzahl der whipsaws. Keltner Kanäle verwenden Bänder, die auf einem Vielfachen von durchschnittlichen wahren Bereich gezeichnet werden, um gleitende durchschnittliche Crossover zu filtern. Der populäre MACD Moving Average Convergence Divergence Indikator ist ein Variation der beiden gleitenden durchschnittlichen System, als Oszillator aufgezeichnet, die den langsamen gleitenden Durchschnitt von der schnell gleitenden Durchschnitt subtrahiert. Colin Twiggs wöchentliche Überprüfung der globalen Märkte wird Ihnen helfen, Marktrisiko zu verbessern Ihr Timing. Gegeben, dass wir in einer Sprache ohne Arrays , Ich nehme an, dass du ein Sprachanfänger bist. So oder so, zusätzliche Informationen sollten in die Frage selbst editiert werden, so dass andere Benutzer nicht brauchen, um Informationen aus den Kommentaren zu fangen Ich habe keine Zeit, um eine komplette Antwort zu geben, aber das sollte Machbar mit Schwänzen zipWith und ein bisschen Grenze fummeln Zeta Nov 6 16 bei 10 43.Moving Durchschnitt kann mit einer mealy Maschine berechnet werden, wo der interne Zustand ist vorherige Werte. I ll zeigen einen gleitenden Durchschnitt über drei Argumente Beispiel, Sie Kann sich selbst zögern, zB machen es parametrisierbar in size. Mealy Maschine ist im Wesentlichen ein Anfangszustand und Zustand Eingang zu neuen Zustand Ausgang function. Let s nehmen an, dass der Anfangszustand alle Nullen ist, und schreiben Sie eine Funktion für gleitenden Durchschnitt über 3.Now wir Bekam alle Stücke, lassen Sie die Maschine auf den Eingang laufen. Sie können zuerst produzierte Werte fallen lassen, da der Maschinen-Innenzustand sich aufwärmt. Für beliebig große gleitende durchschnittliche Maschine, könnten Sie verwenden, da es viel bessere Datenstruktur, wenn Sie zu drücken Ein Ende, während Pop von einem anderen, dann einzelne verknüpfte list. Why ich rede über Mealy Maschine Weil irgendwann Sie wahrscheinlich in Situationen laufen, wo Sie brauchen, um einige Streaming-Bibliothek in Haskell Pfeifen Rohrleitung oder Maschinen Dann Mealy Maschine Ansatz wird Sei die einzige vernünftige Lösung. So kannst du auch autoregressive Modelle machen.

No comments:

Post a Comment