Diskussion zum Artikel "MQL5 Wizard-Techniken, die Sie kennen sollten (Teil 06): Fourier-Transformation"
Hallo Stephan,
Das ist ein großartiger Artikel, obwohl ich ihn genauer studieren muss, da ich seit 60 Jahren keine Fourier-Transformationen mehr verwendet habe. Ich bin überrascht, dass es keine anderen Kommentare gab. Kannst du den mq5-Quellcode des Experten posten, damit die drei Optionen im Experten kompiliert und getestet werden können.
Vielen Dank!
CapeCoddah
Hallo,
guter Artikel. Interessante Idee. Ein Beispiel für mq5-Code zum Testen/Probieren dieser Optionen wäre toll. Danke!
Hallo
die in den Artikeln verwendeten Experten werden über den MQL5-Assistenten kompiliert, so dass der Rest des Quellcodes bereits auf Ihrem PC ist, wenn Sie Metatrader haben.
Hallo Stephan
ich habe mein liebstes Mathefach (Fourier) 30 Jahre lang liegen lassen. So ist es unmöglich, zu kommentieren, aber ich habe deine wunderbare "Übung" gelesen.
Tut mir leid, dass ich dir nicht helfen kann, aber danke, dass du es mit mir geteilt hast.
Stephan
Danke für den Hinweis, ich werde ihn anwenden und Ihnen meine Ergebnisse mitteilen,
CapeCoddah
Hallo Stephen,
sehr interessanter Artikel!
Ein Hinweis noch dazu: Die Parameter "Points" und "Epicycles" müssen in der "Description of the class" gelöscht werden, sie werden im Code nicht verwendet und der Compiler beschwert sich nach dem Kompilieren des generierten EA.
Meine Frage: Der EA läuft problemlos, aber ich kann Ihre Ergebnisse in keiner Weise reproduzieren, vielleicht habe ich etwas falsch gemacht. Würden Sie die *.set-Datei oder sogar den EA-Quellcode posten, den Sie generiert haben?
Haben Sie einen Vorwärtstest gemacht?
Auf jeden Fall ist es eine gute Lektion in der Verwendung der FFT. Ich danke Ihnen!
Ich verstehe, dass der Autor nicht einmal die Fast Fourier Transform studiert hat :) Das stimmt, wozu sich die Mühe machen, FT und FFT sind leer und bringen im Handel nichts. Ich habe diese Transformationen vor 15 Jahren in Matlab gemacht, und dann habe ich die inverse Transformation in die Zeitform gemacht, und es war ein kompletter Flop. FFTs sind in anderen Bereichen gut, zum Beispiel beim Radar.
Aber Wavelets sind viel interessanter. Wenn man alle Hochfrequenzbänder herausschneidet und die Rücktransformation in den Zeitbereich durchführt, erhält man einen hervorragenden Tiefpassfilter ohne Verzögerungen. Es geht aber auch viel einfacher - durch 2-Pass-Filter.....
Hallo,
ich erhalte 12 Fehler
double CTrailingFT::ProcessFT(int Index) { double _ft = 0.0; static double _a[6]; // Array mit fester Größe al_complex _f[5]; // 5 Epizyklen // _a mit Preisdifferenzen befüllen for(int p=0; p<6; p++) { _a[p] = m_close.GetData(Index+p) - m_close.GetData(Index+p+1); } // Alglib-FFT durch eine benutzerdefinierte 6-Punkt-FFT ersetzen CustomFFT6(_a, _f); // Hypothetische optimierte Funktion // Berechnung von _ft anhand der dominanten Frequenz (z. B. des größten Betrags) double maxMagnitude = 0.0; for(int s=0; s<5; s++) { double mag = MathSqrt(_f[s].re*_f[s].re + _f[s].im*_f[s].im); if(mag > maxMagnitude) { maxMagnitude = mag; _ft = _f[s].re; // Oder verwenden Sie eine gewichtete Kombination } } return _ft * 100.0; // Skalierung nach Bedarf anpassen }
Ersetzen Sie Alglib durch Custom FFT:
-
Die FFT von Alglib kann für kleine Datensätze langsamer sein. Implementieren Sie eine leichtgewichtige FFT, die auf Ihre Fenstergröße (6 Punkte) zugeschnitten ist.
Berechnen Sie MathExp(-2.0*M_PI*...) Terme vor, um zu vermeiden, dass diese bei jedem Tick neu berechnet werden.
Fehlerbehandlung:
Hinzufügen von Überprüfungen zur Verhinderung von Division durch Null in _f[s].im / _f[s].re.Vermeiden Sie Matrixoperationen in ProcessFT() . Berechnen Sie den erforderlichen Wert für _ft direkt mit Hilfe dominanter Frequenzen.
Fehlerbehandlung:
-
Hinzufügen von Prüfungen zur Verhinderung der Division durch Null in _f[s].im / _f[s].re .
Es gibt bereits wesentlich effizientere Methoden, die eine elementare Struktur (M-Form) verwenden. Eine Änderung ihrer Parameter ergibt ein vollständiges Bild der Preisdynamik (dies ist die Theorie des Impulsgleichgewichts).
Was die Fourier-Transformation angeht, so ist sie meiner Meinung nach eine "langwierige" Methode für die Finanzmärkte, da die Preisbewegung von Finanzinstrumenten ein nicht-stationärer Prozess ist und die Analyse solcher Prozesse mit Hilfe von Fourier-Methoden ineffizient ist.
Die Wavelet-Analyse ist in der Tat interessanter, da verschiedene wellenartige Strukturen verwendet werden. Dabei handelt es sich jedoch nur um eine Art subjektive Auswahl von Standards anstelle der Verwendung einer einzigen elementaren Struktur, wie sie in der Theorie des Impulsgleichgewichts zu finden ist.

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel MQL5 Wizard-Techniken, die Sie kennen sollten (Teil 06): Fourier-Transformation :
Die von Joseph Fourier eingeführte Fourier-Transformation ist ein Mittel zur Zerlegung komplexer Wellen aus Datenpunkten in einfache Teilwellen. Diese Funktion könnte für Händler sehr nützlich sein, und dieser Artikel wirft einen Blick darauf.
Bei der Kompilierung mit der integrierten RSI-Signalklasse und dem integrierten Fixed-Margin Money Management erhalten wir diese Ergebnisse für: EURJPY während des Zeitraums: 2022.01.01 bis 2023.01.01 mit dem Zeitrahmen: 4-Stunden. Bei der Durchführung dieses Tests setzen wir weder Gewinnziele noch verwenden wir die Standard-Stop-Loss-Einstellung, daher sind beide Eingaben für diese Werte Null. Wir möchten, dass der Ausstieg ausschließlich durch die Umkehrung des Signals oder das Auslösen des durch unseren Trailing-Stop festgelegten Stop-Loss bestimmt wird.
Autor: Stephen Njuki