und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
dt_FFT - Bibliothek für den MetaTrader 5
- Ansichten:
- 1103
- Rating:
- Veröffentlicht:
- 2016.06.29 10:01
- Aktualisiert:
- 2016.11.22 07:34
- Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Echter Autor:
klot
Bibliothek von Fast Fourier Transformations Funktionen (FFT).
Dieser Indikator wurde erstmalig in MQL4 implementiert und in der CodeBase am 2. Oktober 2006 veröffentlicht.
Die Bibliothek hat sieben Fast Fourier Transformationsfunktionen;
- FFT einer komplexen Funktion (direkt und invers)
- FFT einer realen Funktion (direkt und invers)
- FFT von zwei realen funktionen (nur direkt)
- Schnelle diskrete Sinustransformation
- Schnelle diskrete Cosinustransformation
- Schnelle Vereinfachung mit FFT
- Schnelle Korrelation mit FFT.
1. FFT einer komplexen Funktion (direkt und invers) void fastfouriertransform(double& a[], int nn, bool inversefft);
Der Algorithmus führt eine FFT einer komplexen Funktion definiert durch nn Zähler auf einer realen Achse aus. Abhängig von den übergebenen Parametern können beide - direkte oder inverse - Transformationen ausgeführt werden.
Eingabeparameter:
- nn - Anzahl von Werten der Funktion. Muss eine Potenz von zwei sein!!! Der Algorithmus prüft nicht die Richtigkeit des übergebenen Wertes.
- a - Array [0 .. 2*nn-1] des Typs Real. Werte der Funktion. Die Elemente a[2*I] (Realteil) und a[2*I+1] (Imaginärteil) korrespondieren mit dem ersten Wert.
- InverseFFT - Richtung der Transformation. True, wenn sie rückwärts ist; False, wenn sie direkt ist.
Eingabeparameter:
- a - Ergebnis einer Transformation. Für weitere Informationen siehe Beschreibung auf http://alglib.net/fasttransforms/
2. FFT einer realen Funktion (direkt und invers)void realfastfouriertransform(double& a[], int tnn, bool inversefft);
Der Algorithmus führt die FFT einer realen Funktion definiert nur n Zähler auf einer realen Achse aus. Abhängig von den übergebenen Parametern können beide - direkte oder inverse - Transformationen ausgeführt werden.
Eingabeparameter:
- tnn - Anzahl von Werten der Funktion. Muss eine Potenz von zwei sein!!! Der Algorithmus prüft nicht die Richtigkeit des übergebenen Wertes.
- a - Array [0 .. nn-1] des Typs Real. Werte der Funktion.
- InverseFFT - Richtung der Transformation. True, wenn sie rückwärts ist; False, wenn sie direkt ist.
Eingabeparameter:
- a - Ergebnis einer Transformation. Für weitere Informationen siehe Beschreibung auf http://alglib.net/fasttransforms/
3. FFT von zwei realen funktionen (nur direkt) void tworealffts(double a1[], double a2[], double& a[], double& b[], int tn);
Der Algorithmus fürht die FFT von zwei realen Funktionen aus, wovon jede durch tn Zähler auf einer realen Achse definiert sind. Der Algorithmus spart Ihnen Zeit aber führt nur eine direkte Transformation aus.
Eingabeparameter:
- tn - Anzahl von Werten der Funktion. Muss eine Potenz von zwei sein. Der Algorithmus prüft nicht die Richtigkeit des übergebenen Wertes.
- a1 - Array [0 .. nn-1] des Typs Real. Werte der ersten Funktion.
- a2 - Array [0 .. nn-1] des Typs Real. Werte der zweiten Funktion.
Eingabeparameter:
- a - die erste Funktions Fourier Transformation
- b - die zweite Funktions Fourier Transformation (siehe Details auf der Webseite) http://alglib.net/fasttransforms/
4. Schnelle diskrete Sinustransformation void fastsinetransform(double& a[], int tnn, bool inversefst);
Der Algorithmus führt eine schnelle Sinustransformation einer realen Funktion aus, die durch tnn Zähler auf einer realen Achse definiert ist. Abhängig von den übergebenen Parametern können beide - direkte oder inverse - Transformationen ausgeführt werden.
Eingabeparameter:
- nn - Anzahl von Werten der Funktion. Muss eine Potenz von zwei sein. Der Algorithmus prüft nicht die Richtigkeit des übergebenen Wertes.
- a - Array [0 .. nn-1] des Typs Real. Werte der Funktion.
- InverseFST - Richtung der Transformation. True, wenn sie rückwärts ist; False, wenn sie direkt ist.
Eingabeparameter:
- a - Ergebnis einer Transformation. Für weitere Informationen siehe Beschreibung auf http://alglib.net/fasttransforms/
5. Schnelle diskrete Cosinustransformation void fastcosinetransform(double& a[],int tnn, bool inversefct);
Der Algorithmus führt eine schnelle Cosinustransformation einer realen Funktion aus, die durch nn Zähler auf einer realen Achse definiert ist. Abhängig von den übergebenen Parametern können beide - direkte oder inverse - Transformationen ausgeführt werden.
Eingabeparameter:
- tnn - Anzahl von Werten der Funktion minus eins. Muss eine Potenz von zwei sein (zum Beispiel 1024). Der Algorithmus prüft nicht die Richtigkeit des übergebenen Wertes.
- a - Array [0..nn] des Typs Real. Werte der Funktion (beispielsweise 1025).
Besonderheit der Vorbereitung eines Arrays für die Funktion Transfer:
int element_count2=ArrayResize(Array,tnn1+1); //Für Cosinus!!! - InverseFCT - Richtung der Transformation. True, wenn sie rückwärts ist; False, wenn sie direkt ist.
Eingabeparameter:
- a - Ergebnis einer Transformation. Für weitere Informationen siehe Beschreibung auf http://alglib.net/fasttransforms/
6. Schnelle Vereinfachung mit FFTvoid fastcosinetransform(double& a[],int tnn, bool inversefct);
Vereinfachung. Eine der Funktionen wird als Signal betrachtet. Die zweite wird als Antwort betrachtet.
Eingabe:
- Signal - ein Signal mit dem eine Vereinfachung durchgeführt wird. Array realer Zahlen, Nummerierung der Elemente von 0 bis SignalLen-1.
- SignalLen - Signallänge.
- Response - Antwortfunktion. Sie besteht aus zwei Teilen die den positiven und negativen Werten eines Argumentes entsprechen.
Antwortwerte in Punkten von -NegativeLen bis 0 korrespondieren mit Arrayelementen mit den Zahlen von 0 bis NegativeLen.
Antwortwerte in Punkten von 1 bis PositiveLen korrespondieren mit Arrayelementen mit den Zahlen von NegativeLen+ bos NegativeLen+PositiveLen. - NegativeLen - "Negative Länge" einer Antwort.
- PositiveLen -"Positive Länge" einer Antwort.
Eine Antwort ist gleich Null außerhalb [-NegativeLen, PositiveLen].
Ausgabe:
- Signal - Werte der Funktion Simplification in Punkten von 0 bis SignalLen-1.
7. Schnelle Korrelation mit FFT.void fastcorellation(double& signal[], int signallen, double& pattern[], int patternlen);
Eingabe:
- Signal - Array signal mit dem die Korrelation ausgeführt wird. Nummerierung der Elemente von 0 bis SignalLen-1
- SignalLen - Signallänge.
- Pattern - Array Muster Korrelation eines Singal nach dem wir suchen. Nummerierung der Elemente von 0 bis PatternLen-1
- PatternLen - Musterlänge
Ausgabe:
- Signal - Werte der Korrelation in Punkten von 0 bis SignalLen-1. Besuchen Sie die Web-site für eine detailliertere Beschreibung. http://alglib.net/fasttransforms/
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/7000
Der Indikator zeichnet Kerzen größerer TimeFrames als farbig gefüllte Rechtecke in Übereinstimmung mit den Farben der AMkA Indikatorpunkte.
Imp_XMA_HTFDer Imp_XMA Indikator mit der Option TimeFrames in den Eingabeparametern auszuwählen.
Der Indikator zeigt exemplarisch die Glättung von Preiszeitreihen durch Filterung von Harmonischen einer größeren Ordnung.
i-SpectrAnalysis_RSIDer Indikator zeigt exemplarisch die Glättung von Preiszeitreihen des RSI-Indikators durch Filterung von Harmonischen einer größeren Ordnung.