Vergleich von zwei Kurstabellen mit nichtlinearen Verzerrungen auf der X-Achse - Seite 7

 
hrenfx:

Wie wird dieses Problem über DTW gelöst (Beispiel):

  1. Wir müssen ähnliche Situationen in der Geschichte finden wie die extremen 100 Balken.
  2. Die verfügbare Historie beträgt 1 000 000 Takte.
  3. Zuerst haben wir 1.000.000 Sequenzen von 50 Takten genommen und sie mit dem Muster durch DTW verglichen.
  4. Dann nahmen wir weitere 1.000.000 Sequenzen von 55 Takten und verglichen sie mittels DTW mit der Vorlage.
  5. Diesmal sind es 60 Takte.
  6. .....
  7. Bei 100 bar.
  8. .....
  9. 300 bar. Und an dieser Stelle können wir aufhören.

Insgesamt haben wir 50.000.000 Vergleiche mit dem DTW-Algorithmus durchgeführt, der eine Komplexität von O(N^2) hat. Das bedeutet, dass sehr grob geschätzt 5 * 10^11 (500 Milliarden) elementare Rechenoperationen durchgeführt wurden.

Jetzt ist ein neuer Balken da - wir haben wieder 500 Milliarden Berechnungen gemacht.

Wir haben beschlossen, es auf die Geschichte anzuwenden, beginnend mit 200 000 des äußersten Elements. Für einen Durchlauf werden 200.000 mal 500 Milliarden Berechnungen benötigt. Das sind insgesamt 10^17 Berechnungen.

Selbst wenn es eine knifflige Optimierung gibt, wird sie keinen Gewinn von mehr als zwei Größenordnungen bringen. Das heißt, Sie müssen höchstens 10^15 Berechnungen durchführen.


Verstehen Sie zuerst das Prinzip des Algorithmus, bevor Sie solchen Unsinn erzählen. Die Komplexität des Algorithmus ist O(n*m), wobei n und m die Längen der beiden Eingangsvektoren sind.

p.s. Ein "bei 50 Takten, bei 55 Takten" sollte nicht gemacht werden, denn eine der drei möglichen Verzerrungen ist das Fehlen einer Beobachtung.

p.p.s. DTW mit Pfadformbeschränkungen gibt es auch, Ihr "und dort können wir anhalten" ist auch völlig unnötig.

p.p.p.s. Ihre Methode "Zickzack + Korrelationsberechnung" ist unsinnig, da der Zickzack auf den Maxima einer verrauschten Zufallsvariablen beruht, die wenig aussagt.

p.p.p.s. Für die Suche in einem großen Audiostrom werden ganz andere Methoden verwendet.

 
IgorM:
Der Artikel über DTW auf Habrahabr http://habrahabr.ru/blogs/algorithm/135087/ scheint ziemlich gut geschrieben zu sein, aber ich kann nicht herausfinden, wie man DTW für OHLC verwendet, könnte mir das jemand erklären?


Für OHLC müssen Sie sich eine Funktion für den Balkenabstand ausdenken. Zum Beispiel:

1. zwei Balken sind gegeben

2. Approximiere jeden der Balken durch ein Polynom dritten Grades (für den Balken C>O durch Punkte: {(t[0];Open), (t[1];Low), (t[2];High), (t[3];Close)}, für Bar O>C durch Punkte {(t[0];Open), (t[1];High), (t[2];Low), (t[3];Close)}, wobei t[i]=i/3)

3. betrachten Sie die Entfernung als Quadratwurzel des Integrals des Quadrats der Differenz zweier Polynome auf dem Intervall 0..1.

(die Methode wurde nicht von mir erfunden, sondern ist allgemein bekannt und für alle Interessierten zugänglich).

 
Integer:

Sie sollten zunächst die Aufgabe des Verfassers des Threads und seine Antworten lesen.

Ich stimme zu, die Aufgabe wurde formuliert, um ein Ähnlichkeitskriterium zu finden. Ich habe einen weiteren logischen Schritt gemacht, den der Autor auf der Grundlage seiner früheren Arbeit mit dem Ähnlichkeitskriterium über Spearmans QC anwenden wird. Vielleicht irrt sich der Autor, wenn er meint, ein für ihn neues Ähnlichkeitskriterium auf ein anderes anzuwenden.
 
hrenfx:

Ich beschloss, mit dem 200.000sten Element zu beginnen. Grob geschätzt erfordert der Lauf 200.000 mal 500 Milliarden Berechnungen. Das sind insgesamt 10^17 Berechnungen.

Selbst wenn es eine knifflige Optimierung gibt, wird sie keinen Gewinn von mehr als zwei Größenordnungen bringen. D.h. es müssen höchstens 10^15 Berechnungen durchgeführt werden.

Die Aufgabe ist viel bescheidener - zu vergleichen, was heute bereits geschehen ist, mit dem Beginn des Vortages (die Muster sind unterschiedlich groß!) und die Ähnlichkeit zu bewerten. Falls vorhanden - um eine ungefähre Kurskurve für den Rest des heutigen Tages zu zeichnen. Wenn wir H1 nehmen, sind es 24 Takte. Auf jeden Fall nicht mehr als 24 Vergleiche. Bei M15 sind es maximal 96 Vergleiche. Nach meinen Beobachtungen ist die Ähnlichkeit innerhalb von höchstens 2 Tagen gegeben, und dann "vergisst" der Markt alles. Eine Optimierung über Monate und Jahre hinweg ist selbstzerstörerisch.
 
anonymous:


Machen Sie sich erst mit dem Prinzip des Algorithmus vertraut, bevor Sie solchen Unsinn erfinden. Die Komplexität des Algorithmus ist O(n*m), wobei n und m die Längen der beiden Eingangsvektoren sind.

Warum sind Sie so feindselig und aggressiv? Lesen Sie die Schätzungen der Komplexität des Algorithmus. O(N^2) steht nicht im Widerspruch zu dem, was Sie geschrieben haben. Algorithmen mit einer solchen Komplexität eignen sich für Aufgaben mit kleinen Datenmengen.

p.s. Ein "bei 50 Takten, bei 55 Takten" ist nicht erforderlich, da eine der drei möglichen Verzerrungen das Fehlen einer Beobachtung ist.

p.p.s. DTW mit Pfadformbeschränkungen gibt es auch, Ihr "und dort kann man anhalten" ist auch völlig unnötig.

Beachten Sie das Wort "rau", das in dem obigen Beispiel mehrmals erwähnt wird. Wenn alle Nuancen berücksichtigt werden, wird der Posten zu einem riesigen, unauffälligen Umfang anwachsen. Sie können den FastDTW-Algorithmus und andere zusätzliche algorithmische Optimierungen erwähnen. Es ist besser, seinen Verstand und sein Wissen in der Praxis unter Beweis zu stellen.

p.p.p.s. Ihre Methode "Zickzack + Korrelationsberechnung" ist unsinnig, da der Zickzack auf den Maxima einer verrauschten Zufallsvariablen beruht, die wenig aussagt.

In Ihrer Sprache - "Unsinn". Könnten Sie dies anhand eines Beispiels konstruktiv veranschaulichen?

p.p.p.s. Für die Suche in einem großen Audiostrom werden ganz andere Methoden verwendet.

Das ist interessant.
 
wmlab:
Die Aufgabe ist viel bescheidener.

Dann habe ich es übertrieben. Es gibt wahrscheinlich nichts Einfacheres als DTW für eine so einfache Aufgabe. Der Vergleich solch kleiner Datenreihen ist jedoch fragwürdig.

Können Sie ein Beispiel aus dem Leben nennen, bei dem Ihre Hypothese zu funktionieren scheint?

 
hrenfx:

Dann habe ich es übertrieben. Es gibt wahrscheinlich nichts Einfacheres als DTW für eine so einfache Aufgabe. Der Vergleich solch kleiner Datenreihen ist jedoch fragwürdig.

Können Sie ein Beispiel aus dem Leben nennen, bei dem Ihre Hypothese zu funktionieren scheint?


Das kommt irgendwie aus dem wirklichen Leben - ich habe festgestellt, dass ich beim EURUSD den bereits erhaltenen Chart von heute mental auf den von gestern verschiebe. Wenn zumindest die erste Hälfte des Tages visuell übereinstimmt, können wir eine Vorhersage machen (wenn es nicht Freitag ist und keine Nachrichten vorliegen). "Visuell" ist eine Abwechslung von Höhen und Tiefen, die Ebenen passen nicht zusammen. Es ist wie bei einer Illustration der Evolution - die benachbarten Bilder sind ähnlich, die entfernten nicht. Nun, wenn die Bilder von heute und gestern nicht übereinstimmen, dann funktioniert diese Methode nicht.
 
Ist es möglich, Diagramme von visuell übereinstimmenden Seiten zu zitieren?
 
wmlab:
Die Aufgabe ist viel bescheidener: Vergleichen Sie, was heute bereits geschehen ist, mit dem Beginn des Vortages (die Muster sind unterschiedlich groß!) und bewerten Sie die Ähnlichkeit. Wenn ja, zeichnen Sie eine ungefähre Flugbahn für den Rest des heutigen Tages. Wenn wir H1 nehmen, sind es 24 Takte. Auf jeden Fall nicht mehr als 24 Vergleiche. Bei M15 sind es maximal 96 Vergleiche. Nach meinen Beobachtungen ist die Ähnlichkeit innerhalb von höchstens 2 Tagen gegeben, und dann "vergisst" der Markt alles. Die Optimierung im Abstand von Monaten und Jahren ist eine Selbsttäuschung.

Allerdings, mein Indikator und Expert Advisor auf H4, zum Beispiel, arbeiten mit Rückblick von 900-1000 Bars und klar fangen die Ereignisse der letzten Bars https://forum.mql4.com/ru/46596/page124, bedeutet dies, dass der Markt Speicher ist nicht so flüchtig Sache?
 

Ich habe etwas... Ich habe es nur nicht bemerkt. Ein Gefühl der mystischen Ekstase erleben:)

Dateien:
idtw2.mq4  8 kb
Grund der Beschwerde: