Fourier-basierte Hypothese - Seite 11

 
equantis >> :

Das stimmt, es lohnt sich, es zu behalten...

Um das Thema abzuschließen, möchte ich ein Bild mit typischen Ergebnissen zeigen:

Blau - Preis

Rot - Vorhersage durch ein Programm mit Kosinustransformation von 0

violett - dieselbe Kurve, aber berechnet vom Ausgangspunkt der Prognose (100)

Grün - einfache Vorhersage auf der Grundlage der Preiskurve (ich habe die integrierte Vorhersagefunktion verwendet)



Wie ich bereits geschrieben habe, besteht der Trick darin, das Modell zu identifizieren. Das Problem ist wirklich kompliziert, es kann nicht einfach mit dem Auge gelöst werden. Und konzeptionell, wenn ich das so sagen darf, wird die "Vorhersage im Frequenzbereich" bei einigen Aufgaben verwendet, aber sehr spezifisch.

 
grasn писал(а) >>

Wie ich bereits geschrieben habe, besteht der Trick darin, das Modell zu identifizieren. Das Problem ist wirklich kompliziert und kann nicht einfach mit dem Auge gelöst werden. Und konzeptionell, wenn ich das so sagen darf, wird die "Vorhersage im Frequenzbereich" bei einigen Aufgaben verwendet, aber sehr spezifisch.

Ich habe fast einen Monat für die Demontage mit PF und alle vergeblich verbracht. Ich habe versucht, alles vorherzusagen, Zeitreihen, gleitende Durchschnitte, Indikatoren, aber alle Ergebnisse waren 50-50 (oder so).

Ich habe versucht, Ihre Idee mit diskreter Kosinustransformation umzusetzen. Leider ergab sich nach der umgekehrten Kosinustransformation folgendes Bild: Im wiederhergestellten Signal wiederholte der letzte Takt (für den die Vorhersage eigentlich gemacht wurde) einfach den vorletzten Takt (den letzten im Trainingssatz) mit einem gewissen kleinen Fehler.

Vorsichtshalber beschreibe ich einen kurzen Algorithmus, wie ich vorgegangen bin:

  1. Aufnahme eines Testdatensatzes, beginnend mit START = 1:FRAME
  2. Auswahl eines WIND-Fensters für jeden Datensatz (d. h. die Probenahme wurde im Bereich START:START+WIND durchgeführt)
  3. Für jedes Fenster wurde eine Kosinustransformation durchgeführt.
  4. Alle Ergebnisse wurden in einer Matrix der Größe FRAME x WIND zusammengefasst, wobei die Spalten die Kosinus-Umwandlungskoeffizienten für jede Frequenz und die Zeilen die Koeffizienten für eine Frequenz für jeden Testdatensatz enthielten
  5. Für jede Spalte von Koeffizienten wurde ein kleines neuronales Netz trainiert, das auf der Grundlage von vier vorherigen Werten die kommende Änderung der Sinuskurve um 1 bar sehr gut vorhersagte. Das neuronale Netz wurde eingesetzt, weil die AR-Vorhersage sehr schlechte Ergebnisse lieferte.

  1. Es ergab eine Reihe von vorhergesagten Koeffizienten für den vorhergesagten Datensatz, wobei der letzte Balken der gewünschte Wert war. Eine inverse Kosinustransformation wurde über die vorhergesagten Koeffizienten durchgeführt.

Nun eine Pause... leider gibt es keine Wunder - der vorhergesagte Balken mit einem kleinen Fehler wiederholt den vorletzten Balken aus der Testsequenz. Bei der Analyse des Ergebnisses stellte ich fest, dass sich der erste Balken ein wenig verändert hatte, während alle anderen unverändert blieben und sich lediglich um eine Position verschoben (wie es sein sollte). Aber der letzte Takt wiederholte einfach den vorletzten anstelle von Vorhersagen. (Siehe das Bild oben).

Dieses Ergebnis mag vielleicht für einige Mathematiker nützlich sein, aber für die Aufgabe der EURUSD-Prognose erwies es sich als nutzlos. Leider. Dennoch. )))

 
equantis >> :

Ich habe fast einen Monat lang versucht, die Dinge mit dem PF zu klären, und es war alles umsonst. Ich habe versucht, alles vorherzusagen: Zeitreihen, gleitender Durchschnitt, Indikatoren, und alle Vorhersageergebnisse waren 50:50 (oder so).

Ich habe versucht, Ihre Idee mit diskreter Kosinustransformation umzusetzen. Leider ergab sich nach der umgekehrten Kosinustransformation folgendes Bild: Im wiederhergestellten Signal wiederholte der letzte Takt (für den die Vorhersage eigentlich gemacht wurde) einfach den vorletzten Takt (den letzten im Trainingssatz) mit einem gewissen kleinen Fehler.

Vorsichtshalber beschreibe ich einen kurzen Algorithmus, wie ich vorgegangen bin:

  1. Aufnahme eines Testdatensatzes, beginnend mit START = 1:FRAME
  2. Auswahl eines WIND-Fensters für jeden Datensatz (d. h. die Probenahme wurde im Bereich START:START+WIND durchgeführt)
  3. Für jedes Fenster wurde eine Kosinustransformation durchgeführt.
  4. Alle Ergebnisse wurden in einer Matrix der Größe FRAME x WIND zusammengefasst, wobei die Spalten die Kosinus-Umwandlungskoeffizienten für jede Frequenz und die Zeilen die Koeffizienten für eine Frequenz für jeden Testdatensatz enthielten
  5. Für jede Spalte mit den Koeffizienten wurde ein kleines neuronales Netz trainiert, das auf der Grundlage von vier vorherigen Werten die kommende Änderung der Sinuskurve um 1 bar sehr gut vorhersagte. Das neuronale Netz wurde eingesetzt, weil die AR-Vorhersage sehr schlechte Ergebnisse lieferte.

  1. Es ergab eine Reihe von vorhergesagten Koeffizienten für den vorhergesagten Datensatz, wobei der letzte Balken der gewünschte Wert war. Eine inverse Kosinustransformation wurde über die vorhergesagten Koeffizienten durchgeführt.

Jetzt eine Pause... leider gibt es keine Wunder - der vorhergesagte Balken mit einem kleinen Fehler wiederholt den vorletzten Balken der Testsequenz. Bei der Analyse des Ergebnisses stellte ich fest, dass sich der erste Balken ein wenig verändert hatte, während alle anderen unverändert blieben und sich lediglich um eine Position verschoben (wie es sein sollte). Aber der letzte Takt wiederholte einfach den vorletzten anstelle von Vorhersagen. (Siehe das Bild oben).

Dieses Ergebnis mag vielleicht für einige Mathematiker nützlich sein, aber für die Aufgabe der EURUSD-Prognose erwies es sich als nutzlos. Leider. Dennoch. )))

Und ich habe nicht gesagt, dass es ein Wunder geben wird. Es gibt einige Unwägbarkeiten:

Für jede Säule wurde ein kleines neuronales Netz mit Koeffizienten trainiert, das auf der Grundlage der vier vorhergehenden Werte die kommende Änderung der Sinuskurve um 1 bar sehr gut vorhersagte. Das neuronale Netz wurde eingesetzt, weil die AR-Vorhersage sehr schlechte Ergebnisse lieferte.

Ich bin mir nicht sicher, ob ein NS auf 4 Zahlen einer so komplexen Reihe die Zukunft sehr gut vorhersagen kann. Sehr zweifelhaft. Und wenn das der Fall ist, warum gibt es dann eine so große Diskrepanz? Und was hat die "Sinuswelle" damit zu tun? Was das AR-Modell betrifft, so ist jede Krümmung tatsächlich ein AR-Prozess, der in seinen Eigenschaften dem AR-Prozess sehr nahe kommt. Die Identifizierung eines solchen Modells ist kompliziert, es werden viele Methoden verwendet (seltsamerweise komplizierter als NS): Backtracking und Vorhersage, Akiache-Kriterium, "Koffer", autoregressive Übertragungsfunktionen, Übereinstimmungs- und Maximum-Likelihood-Kriterien (und ihre Varianten), gegenseitige Korrelation, stochastische Annäherung, Filterung (sie wird auch zur Modellidentifizierung verwendet).


Zumindest ist die Idee so gut wie Ihre. :о) Wenn es nicht geklappt hat - es hat nicht geklappt, und das kommt vor -, tut es mir aufrichtig leid für Ihre Zeit, ich kann Ihnen nicht helfen, sie zurückzugeben. Übrigens, hier https://forum.mql4.com/ru/24888/page9 nur für den Fall, dass Sie gewarnt wurden. Es gibt viele Feinheiten in diesem Modell, von denen ich einige bescheiden weggelassen habe. Eine dieser Feinheiten ist, dass es sinnlos ist, mit einem solchen Modell eine einzelne Zählung vorherzusagen, einfach sinnlos. Sie werden einfach nicht die gewünschte Genauigkeit erreichen, und das wird auch nie der Fall sein. Sie müssen Vorhersagen in einem "statistischen" Sinne treffen. So ist das nun einmal in der Literatur.


 

Grasn, trotzdem vielen Dank für die Idee! Der Prozess war angenehm und es wurde keine Zeit verschwendet)) Und das Ergebnis lässt noch auf sich warten!

grasn писал(а) >>

Ich bin mir nicht sicher, ob die NS auf 4 Zahlen einer so komplexen Reihe die Zukunft gut vorhersagen kann. Das bezweifle ich sehr. Und wenn ja, warum gibt es dann eine so große Diskrepanz? Und was hat die "Sinuswelle" damit zu tun?

1. Betrachtet man die Veränderung jedes DCT-Koeffizienten, wie Sie es geschrieben haben, sieht es sehr nach einer Art "Kurven-Sinusoid" aus (mit einer Frequenz, die der Ordnungszahl des Koeffizienten entspricht, insbesondere bei hochfrequenten Schwingungen), das seine Amplitude mit der Zeit verändert. Ich habe versucht, AR zu verwenden, um "frontal" vorherzusagen, ungefähr wie in Ihrem Beispiel in Matcad.

Wenn wir die Vorhersage von "curvulina" für 1 bar betrachten, dann liefert AR (zumindest habe ich alle Formeln ausprobiert, die ich in Matlab habe) sehr ungenaue Ergebnisse, insbesondere für "curvulina-sinusoids" mit ungeraden Perioden (obwohl ich vielleicht nicht alle ausprobiert habe). In diesem Fall liefert ein einfaches neuronales Netz (in Matlab mit der Funktion newlind implementiert - ich glaube, es ist nicht einmal ein neuronales Netz, sondern nur ein Löser für eine Reihe linearer Gleichungen) bei einer Vorhersage von einem Punkt sehr gute (visuelle) Ergebnisse.

2. Ich sehe ziemlich gut, von 50 Bars es genau vorhergesagt (fast genau) 48 Bars und bewegt sie 1 Position nach links, so dass nur 1 Fehler (ich weiß nicht, warum) und die letzte (es tut mir leid, ich war es für alle). Offensichtlich addieren sich die "Mikrofehler" der Vorhersage auf jeder "Curveline" bei der Rückrechnung auf diese Weise.

Ich habe versucht, den Algorithmus zu "betrügen", indem ich den letzten Takt innerhalb des Testsegments ausblendete (ich habe eine einfache zirkuläre Verschiebung vorgenommen), aber es waren immer noch der letzte und der erste Takt, die falsch waren.

3. Übrigens, versucht, nicht nur schließen (als die am schlechtesten vorhergesagten Serie), sondern auch hoch / niedrig / offen, und die Differenz und sogar die Minima-Maxima des Zickzacks vorherzusagen. (Als Beispiel für eine Reihe, mit einer verzerrten Zeitachse). Da das Ergebnis dasselbe ist, liegt die Schlussfolgerung auf der Hand: Diese Methode verschiebt nur N-2 Takte um 1 Takt "frontal" nach links, sagt aber die Zickzacklinien nicht voraus.

Was das AR-Modell betrifft, so ist jede Kurve in der Tat ein AR-Prozess, der ihm in seinen Eigenschaften sehr nahe kommt. Die Identifizierung eines solchen Modells ist kompliziert, es werden viele Methoden verwendet (seltsamerweise komplizierter als NS): Umkehrung und Vorhersage, Akiache-Kriterium, "Koffer", autoregressive Übertragungsfunktionen, Übereinstimmungs- und Maximum-Likelihood-Kriterien (und ihre Varianten), gegenseitige Korrelation, stochastische Annäherung, Filterung (die auch zur Modellidentifizierung verwendet wird).

Danke ein zweites Mal - viele neue Namen - mehr zum Ausprobieren!

Es gibt eine Menge Feinheiten in diesem Modell, von denen ich einige bescheidenerweise weggelassen habe. Eine dieser Feinheiten besteht darin, dass es sinnlos ist, eine einzelne Stichprobe mit einem solchen Modell vorherzusagen, es ist einfach sinnlos. Sie werden einfach nicht die gewünschte Genauigkeit erreichen, und das wird auch nie der Fall sein. Sie müssen Vorhersagen in einem "statistischen" Sinne treffen. So ist das nun einmal in der Literatur.

Danke ein drittes Mal, versuchen wir es im "statistischen" Sinne))

 

Ich freue mich, Ihnen helfen zu können. Viel Glück :o)


Übrigens werde ich versuchen, hier in der Nähe eine Vorhersage im Thread "Echtzeit-Vorhersagesystemtest" zu veröffentlichen. Wenn ich es bis Montag schaffe, wenn nicht, werde ich es später posten. Also, melden Sie sich".

 
2 grasn:

1. Mir kam eine Idee: Wenn ich die Kosinustransformation zweimal anwende (zuerst auf den Testabschnitt und dann auf jede der "Kurven", die den Sinuswellen so ähnlich sind), würde das nicht die Vorhersageeigenschaften des Prozesses "verbessern"? Ich werde versuchen, Ihnen morgen die Ergebnisse mitzuteilen.

2. im Falle einer langfristigen Vorhersage bestimmter Arten von Prozessen wird AR natürlich besser sein, obwohl die Überlagerung zweier Sinuskurven durchaus durch ein neuronales Netz interpoliert werden kann.

3. Habe ich richtig verstanden (ich habe Ihren Beitrag irgendwo gelesen), dass es bei dieser Methode besser ist, ln(Xi/Xi-1) anstelle von Close selbst vorherzusagen?

 
equantis >> :

1. Mir kam eine Idee: Wenn ich die Kosinustransformation zweimal anwende (zuerst auf den Testabschnitt und dann auf jede der "Kurven", die den Sinuswellen so ähnlich sind), würde das nicht die Vorhersageeigenschaften des Prozesses "verbessern"? Ich werde versuchen, Ihnen morgen die Ergebnisse mitzuteilen.

2. Im Falle einer langfristigen Vorhersage bestimmter Arten von Prozessen ist AR natürlich besser, obwohl die Überlagerung zweier Sinuskurven gut durch ein neuronales Netz interpoliert werden kann.

3. Habe ich es richtig verstanden (ich habe Ihren Beitrag irgendwo gelesen), dass es bei dieser Methode besser ist, ln(Xi/Xi-1) anstelle von Close selbst vorherzusagen?

1. Sie muss ausprobiert werden.

2. der Punkt ist, dass die Dynamik nach Frequenzen keine Perioden hat, es ist ein komplizierter Prozess und keineswegs eine Überlagerung von Sinuswellen

3. Ja, dies ist eine der Möglichkeiten, um eine stationäre Reihe zu erreichen.