Vorhersage der Zukunft mit Fourier-Transformationen - Seite 2

 
ANG3110:

Nur der beigefügte Indikator zeichnet nichts.

Das tut sie. Wenn Sie das Diagramm nach links scrollen, werden Sie sehen.

 

Im parallelen Thread 'Not Mashka's Business!' wird über die Vorhersage mit 'perfect MA' diskutiert. Ich glaube, dass eine perfekte Glättung nur mit Fourier und Schwellenwerten erreicht werden kann, wie hier geschehen. Die genaueste Schätzung liegt genau in der Mitte des Stichprobenfensters. Sie müssen ähnliche Nachforschungen anstellen, sich dabei aber auf diesen Algorithmus und nicht auf MA stützen.

Zweitens kann man den Wert des Schwellenwerts(porog) mathematisch genau begründen, so dass man sich das Ausprobieren (Finden des optimalen Werts) dieses Werts sparen kann.

Drittens: Um die Vorhersagezeit zu verlängern, muss die Genauigkeit der aktuellen Wertmessungen erhöht werden. Dies ist auf zwei Arten möglich: durch die gleichzeitige Analyse mehrerer Währungen oder durch die Erhöhung der Anzahl der Anbieter von Angeboten . Optimierung. DDE in VB (VBA)".

 

Um die Zukunft zu sehen,

Das Kontrollkästchen "Offsetgrafik" muss in den Einstellungen des Grafikfensters aktiviert sein,

extern int InPast=0,

extern inttern Futur=100 für die Anzahl der Takte der Vorhersage

 

Was Porog betrifft, so werde ich diesen Teil im Prinzip überarbeiten, denn wenn eine Frequenz den Schwellenwert überschreitet, ändert sich das Diagramm stark, vielleicht werde ich es so lassen, wie es bei klot war, oder ich werde eine sanfte Abnahme vornehmen.

 

Witzig, idyuk, danke!

Ich habe es sozusagen im Testgerät unter realen Bedingungen ausprobiert. Manchmal scheint es dasselbe zu sein, aber manchmal ist es auch umgekehrt, besonders vor den starken Bewegungen oder am Ende der starken Bewegungen.

Sehr interessant ist die Situation, wenn 3 Indikatoren mit unterschiedlichen Zweierpotenzen, wie z.B. 8, 9 und 10, auf das Diagramm angewandt werden, und sie oft in unterschiedliche Richtungen schauen. Was ist, wenn wir versuchen, den Durchschnittswert dieser 3 Indikatoren zu verwenden?

Haben Sie es ausprobiert?

 
m_keeper:

Was Porog betrifft, so werde ich diesen Teil im Prinzip überarbeiten, denn wenn eine Frequenz den Schwellenwert überschreitet, ändert sich das Diagramm stark, vielleicht werde ich es so lassen, wie es bei klot war, oder ich werde eine sanfte Abnahme vornehmen.

Eine weitere Sache, die ich gerne tun würde, ist, die FFT loszuwerden (Grad zwei ist nicht die beste Wahl, um das beste Fenster zu finden). Besser eine diskrete Transformation.

Was den Schwellenwert betrifft, so gibt es die Neumann-Pearson-Kriterien, die idealen Beobachter, die man nachschlagen kann. Die Anwendung dieser Theorie erlaubt es, von der Optimierung wegzukommen (einen optimalen Wert in der Geschichte zu finden) und erlaubt es, eine adaptive Schwelle zu machen, es gibt eine ganze Reihe von Varianten der Realisierung.

 

Sieht so aus, als ob die Digitizer-Ecke jetzt in diesem Thread ist :), dann ist hier eine Gedanken-Frage. Nimmt man die durchschnittliche Spektraldichte für das Preisdiagramm, so ergibt sich folgendes Bild


Man kann sehen, dass es bei niedrigen Frequenzen kein schlechtes 1/f ist, aber bei hohen Frequenzen gibt es eine deutliche Abweichung von diesem Gesetz. Dies wurde vor einiger Zeit diskutiert, und in der Hauptversion wurde vorgeschlagen, eine Art Digitalisierungsrauschen zu erzeugen. Der Gedanke ist, dass es sinnvoll sein könnte, diese Komponente herauszufiltern. Das heißt, ein sauberes 1/f über den gesamten Frequenzbereich. Und die Frage ist, wie man das macht. Die Idee ist, eine Prozedur zu haben, die als Eingabe ein Array der Spektraldichte nimmt und Koeffizienten eines digitalen Filters ausgibt. Im Prinzip kann ich mir eine einfache Gewichtungsfunktion für die Fourier-Amplituden vorstellen, aber ein digitaler Filter wäre wirtschaftlicher zu verwenden.
 

Die Bibliothek enthält nun die Datei __lib_FFT.mq4, während der Indikatortext die Datei #_lib_FFT.mq4 enthält, weshalb er nicht gezeichnet wird.

 
Prival:
m_keeper:

Was die Porog betrifft, so werde ich diesen Teil im Prinzip überarbeiten, denn wenn eine Frequenz den Schwellenwert überschreitet, ändert sich das Diagramm stark, vielleicht werde ich es so lassen, wie es bei klot war, oder ich werde eine sanfte Abnahme vornehmen.

Eine weitere Sache, die ich gerne tun würde, ist, die FFT loszuwerden (Grad zwei ist nicht die beste Wahl, um das beste Fenster zu finden). Besser eine diskrete Transformation.

Was den Schwellenwert betrifft, so gibt es die Neumann-Pearson-Kriterien, die idealen Beobachter, die man nachschlagen kann. Die Anwendung dieser Theorie ermöglicht es, von der Optimierung (Suche nach dem optimalen Wert in der Vergangenheit) wegzukommen und einen adaptiven Schwellenwert festzulegen, wobei es eine ganze Reihe von Implementierungsmöglichkeiten gibt.

Im Prinzip ist es sehr einfach, Grad 2 loszuwerden:

w=2*pi/T;

for (int k=0; k<=N; k++)
   {                                                              
      sum_cos=0.0; 
      sum_sin=0.0;                                           
      for (int n=0; n<T; n++) 
      {
         sum_cos+=Close[n]*MathCos(k*n*w); 
         sum_sin+=Close[n]*MathSin(k*n*w);
      }
      ak[k]=sum_cos*2/T; 
      bk[k]=sum_sin*2/T;
   }
   ak[0]=ak[0]/2;
   //------------------------------------
   for (n=T-1; n>=0; n--)
   {                                                        
      sum=0.0;                                       
      for (k=0; k<=N; k++)
      {                                                             
         sum+=ak[k]*MathCos(k*n*w)+bk[k]*MathSin(k*n*w);
      }                                                             
      fx[n]=sum;
   }

N - Anzahl der Oberschwingungen,

T - Zeitraum.


Das optimale Fenster, genauer gesagt die optimale Periode T, lässt sich am einfachsten anhand von zwei Kriterien auswählen: dem minimalen Effektivwert und dem Maximum der Summe der harmonischen Amplituden. Da es jedoch mehrere Wellen auf dem Markt gibt, wird es mehrere optimale Zeitfenster geben.

Und wir sollten auch bedenken, dass bei der Extrapolation aufgrund der periodischen Sinus- und Kosinuskurven frühere periodische Komponenten einfach an das Ende angehängt werden, und obwohl die Wiederholungswahrscheinlichkeit recht hoch ist, werden die Phase und vor allem die Amplitude immer noch unterschiedlich sein, so dass man wie bei einem Phasendetektor immer die Phase anpassen sollte.


Die Phasendefinition als MathArctan() taugt wegen der arctan-Eigenschaften nicht, es muss mindestens +/- pi/2 berücksichtigt werden.

Es ist besser, die Phase auf eine etwas andere Weise zu definieren.

 

Es besteht keine Notwendigkeit, von der FFT wegzukommen, denn es ist nicht notwendig, die Reihe genau zu halbieren, sie wird geteilt, um die Zählgeschwindigkeit zu erhöhen, und nicht, weil es notwendig ist, streng durch zwei zu teilen. Ich habe einmal mit einer FFT gearbeitet, die mit beliebig langen Reihen arbeitet, ich werde sie später für mql umschreiben.


Ich versuche herauszufinden, welche Merkmale auf falsch-positive Ergebnisse hinweisen können.

Hier sind zwei Bilder, mit n=9 und n=10

In beiden Fällen hat der Fensterschwanz eine scharfe Spitze erreicht, die in der Zukunft auftreten kann.

Jetzt experimentiere ich mit der Serienvorverarbeitung, vielleicht hilft das ja.


Geänderte Glättungsbedingung, keine Diagrammsprünge mehr, alles läuft reibungslos.


Was die Neugestaltung des Diagramms betrifft, sehe ich kein Problem.

Die Schlusskurse sind nicht die Vergangenheit, sondern die Ereignisse, die sie hervorgebracht haben - die Wellen (im Fall von Fourier) - sind die Vergangenheit

und mit jeder neuen Bar lernen wir mehr und mehr über sie.

Dateien: