Randeffekt auf dem Weg zum GRAAL - Seite 2

 
Und welche Wavelets wurden verwendet? Ich habe Matlab-Wavelets verwendet. Die Randeffekte scheinen dort weniger sichtbar zu sein, aber natürlich sind sie da (sie können nicht anders). Ich habe auch Dekompositionen (Annäherungen) und ein neuronales Netz ausprobiert. Auf die Daten, auf denen das Netzwerk sehr cool gelernt. und lernt Mesh scheint einfach, aber auf die neuen - Hölle. Ich bin zu dem Schluss gekommen, dass Wavelets eine gute Sache sind, vor allem, wenn man den Lag Space anwendet. Aber bisher habe ich sie noch nicht in der Praxis angewandt.
 
vladevgeniy писал(а) >>
Und welche Art von Wavelets haben Sie verwendet, ich habe die von Matlab benutzt. Es scheint, dass die Randeffekte weniger sichtbar sind, aber natürlich sind sie da (sie können nicht anders). Ich habe auch versucht, Zerlegungen (Annäherungen) und ein neuronales Netz anzuwenden. Auf die Daten, auf denen das Netzwerk sehr cool gelernt. und lernt Mesh scheint einfach, aber auf die neuen - Hölle. Ich bin zu dem Schluss gekommen, dass Wavelets eine gute Sache sind, vor allem, wenn man den Lag Space anwendet. Aber bisher habe ich sie noch nicht in der Praxis angewandt.

Verwendete Dobeshi-Wavelets. Es heißt, dass Meyer-Wavelets weniger anfällig für Kanteneffekte sind, aber ich habe es noch nicht ausprobiert.

Die Sache ist die, dass es viel Zeit kostet, jede Methode zu programmieren.

Was sind die Matlab-Wavelets? Ich habe noch nie mit Matlab gearbeitet.

Meinen Sie Polynome? Wie gut hat es funktioniert?

 
Desperado писал(а) >>

Das Überschreiten von Ebenen führt nicht zu einem sehr attraktiven Ergebnis. Das ist mir auch schon aufgefallen.

Im Indikator folgt die Verteilung der Höchst- und Tiefstwerte einem Gaußschen Gesetz, nur mit unterschiedlichen MO.

Die Höchstwerte liegen bei etwa 0,3, die Tiefstwerte bei -0,3.

Je höher der Balken ist, desto zuverlässiger sind die Signale und desto weniger sind sie.

Und es ist nicht interessant, 200 Punkte pro Monat zu verdienen :)

Ja, leider entweder Verzerrungen oder Verzögerungen.

Ich mag die Gaußsche Normalverteilung nicht. Ich bevorzuge Lognormal. Aber das ist leider nicht für jeden geeignet. Ich bin zu dem Schluss gekommen, dass eine Annäherung durch Anpassung sinnvoll ist (wie ich oben schrieb). Und wenn es ein Ergebnis gibt, oder etwas Interessantes, dann werde ich die Verteilungsfunktion anpassen. Im Allgemeinen sind die Abweichungen nicht groß, so dass man ihnen vertrauen kann.

 
Desperado, matlab any matlab toolbox on wavelets. Sie können die notwendige Zerlegung, Detaillierung und Angleichung erreichen. M-Funktion geschrieben wird, wird eine transitive DLL verwendet und über die DLL mit der Metrik verbunden. Ich glaube, es gibt auch eine Mayer-Funktion, oder vielleicht auch nicht, ich weiß es nicht mehr. Aber man kann Zeit beim Programmieren sparen, obwohl ich viel Mühe hatte, Matrizen von Matlab in normale Variablen und zurück zu übersetzen. Ich habe versucht, die bekannte Bibliothek, die in Delphi geschrieben wurde, in C++ umzuschreiben (es gibt viele davon im Netz). Dort wurden die stärksten Randverzerrungen beobachtet. Aber Matlab hat nichts davon, obwohl es sich auch krümmt (es zeichnet gerne Haken an den Rändern, wenn es triggert). Versuchen Sie einfach, das gewünschte Wavelet in Matlab zu erstellen, und wenn Ihnen das Ergebnis gefällt, können Sie es über eine DLL mit Mt verbinden.
 
vladevgeniy писал(а) >>
Desperado, alle Matlab-Tools, die Sie in der Matlab-Toolbox für Wavelets finden können. Sie können die von Ihnen benötigte Zerlegung, Detailgenauigkeit und Annäherung erhalten. M-Funktion geschrieben wird, wird eine transitive DLL verwendet und über die DLL mit der Metrik verbunden. Ich glaube, es gibt auch eine Mayer-Funktion, oder vielleicht auch nicht, ich weiß es nicht mehr. Aber man kann Zeit beim Programmieren sparen, obwohl ich viel Mühe hatte, Matrizen von Matlab in normale Variablen und zurück zu übersetzen. Ich habe versucht, die bekannte Bibliothek, die in Delphi geschrieben wurde, in C++ umzuschreiben (es gibt viele davon im Netz). Dort wurden die stärksten Randverzerrungen beobachtet. Aber Matlab hat nichts davon, obwohl es sich auch krümmt (es zeichnet gerne Haken an den Rändern, wenn es triggert). Versuchen Sie einfach, das gewünschte Wavelet in Matlab zu erstellen, und wenn Ihnen das Ergebnis gefällt, können Sie es über eine DLL mit Mt verbinden.

Ich danke Ihnen vielmals. Das ist das Delph, das ich benutzt habe :) Es gab nur ein Modul, das ich zu einer Bibliothek recycelt habe.

Ich werde zuerst versuchen, Matlab zu finden.

 
infinum13 писал(а) >>

Ich mag die Gaußsche Normalverteilung nicht. Lognormal ist besser. Aber auch das ist leider nicht jedermanns Sache. Ich bin zu dem Schluss gekommen, dass es vernünftig ist, sich durch Anpassen anzunähern (wie ich oben schrieb). Und wenn es ein Ergebnis gibt, oder etwas Interessantes, dann werde ich die Verteilungsfunktion anpassen. Im Allgemeinen sind die Abweichungen nicht sehr groß, so dass ich auch diesem Ergebnis vertrauen kann.

Ich habe Ihren Algorithmus ausprobiert. Wie im Prinzip zu erwarten, wird feines Rauschen entfernt. Es funktioniert gut mit kleinen Zeiträumen und großen TFs.

Ich werde sehen, was ich damit machen kann.

Sein Ergebnis ist als rote Linie dargestellt. Und ich brauche so etwas wie eine grüne Linie.

 

Das ist die Art von grüner Linie, die man in Matlab bei großen Zerlegungsgraden erhält. Es ist alles mit einer Zeile Code erledigt. Es gibt einen speziellen Modus für die Wavelet-Entrauschung, bei dem Sie den Wavelet-Typ und einige andere Parameter auswählen. Die Hauptaufgabe besteht darin, eine transiente dll zu erstellen. Das Delph-Modul hat sehr starke Randeffekte, ja. Ich weiß nicht wie, aber in Matlab sind sie sehr reduziert - manchmal scheint es sogar so, als gäbe es überhaupt keine.

Das neueste Matlab ist fast 4 Gigabyte groß. )))) Es ist besser, sie zu benutzen. Überprüft und dll kompiliert gut und dockt gut an.

 

Aus dem Artikel in der Anlage:

Unsere Anwendung - die Vorhersage - weist darauf hin, dass die Endwerte für uns von entscheidender Bedeutung sind. Unsere Zeitreihe ist endlich, und die Werte n, n-1, n-2, ..., sind für uns von größtem Interesse. Jede symmetrische Wavelet-Funktion ist für die Behandlung einer solchen Grenze (oder Kante) problematisch. Wir können auch keine Wavelet-Koeffizienten verwenden, wenn diese Koeffizienten aus "zukünftigen" Datenwerten berechnet wurden. Mit asymmetric filter können wir dieses Problem umgehen. Eine solche Wavelet-Funktion kann den für uns wichtigen Rand richtig behandeln. Die ersten Werte unserer Zeitreihe, die ebenfalls eine Grenze darstellen, können als Ergebnis willkürlich behandelt werden, was jedoch keine praktische Bedeutung hat.

So wie ich es verstehe, basiert die nicht-symmetrische Funktion nur auf früheren Werten der Zeitreihe.

Symmetrisch - für vergangene und zukünftige Werte. Zum Beispiel hier vom CDF 9/7 Algorithmus:

// Vorhersage 1

a=-1.586134342;

for (i=1; i<n-2; i+=2) {

x[n-1]+=2*a*x[n-2];

}

x[i]+=a*(x[i-1]+x[i+1]);

Die Randeffekte, die die letzte Zeile erzeugt.

Dem Artikel zufolge hat ihn übrigens ein Indyuke geschrieben:

Hier wird jeder Wavelet-Koeffizient nur aus den vorherigen Werten der Reihe berechnet.

Eine Angleichung ist natürlich möglich:

Der unbekannte Bereich ist eine symmetrische Funktion und wird mit etwas wie x[n-1]+=2*a*x[n-2] gefüllt.

Sie soll neu gezeichnet werden.

Wenn Sie damit spielen wollen, klicken Sie hier.

 
vladevgeniy писал(а) >>

Das ist die Art von grüner Linie, die man in Matlab bei großen Zerlegungsgraden erhält. Es ist alles mit einer Zeile Code erledigt. Es gibt einen speziellen Modus für die Wavelet-Entrauschung, bei dem Sie den Wavelet-Typ und einige andere Parameter auswählen. Die Hauptaufgabe besteht darin, eine transiente dll zu erstellen. Das Delph-Modul hat sehr starke Randeffekte, ja. Ich weiß nicht wie, aber in Matlab sind sie sehr reduziert - manchmal scheint es sogar so, als gäbe es überhaupt keine.

Das neueste Matlab ist fast 4 Gigabyte groß. )))) Es ist besser, sie zu benutzen. Ich habe es überprüft und die DLL lässt sich gut kompilieren und andocken.

Entschuldigen Sie die RTFM-Frage, aber könnten Sie bitte kurz beschreiben,

Wie erstelle ich eine DLL in MathLab und rufe sie von MT4 aus auf?

Wenn möglich, mit einem Beispiel.

 

Oh, vor ein paar Monaten hätte ich es noch leicht gehabt. Das habe ich ganz vergessen. Aber das ist Standard in Matlab, es gibt eine Beschreibung im Handbuch. Im Allgemeinen finden Sie in Matlab eine sehr gute Hilfe. Nach der Kompilierung werden eine .dll- und eine lib-Datei sowie ein paar andere, weniger wichtige Dateien erstellt. In der m-Datei ist eine Funktion in Matlab-Sprache enthalten, und diese Funktion wird von der Zwischen-DLL aufgerufen. Sie müssen nur die Initialisierung dort zuerst aufrufen, die Hilfe hat es ja. Es gibt jedoch ein "aber". Wir müssen die Variablen double string, etc. in mxArray überladen und dann die Funktion in Matlab und dann wieder in C aufrufen.

Hier ist ein Beispiel für die Arbeit mit mxArray in C

mxArray *inm = mxCreateDoubleMatrix(1,size,mxREAL); mxArray-Variable der Größe wird für das Eingabe-Array erstellt
memcpy(mxGetPr(inm), &in[0], size*sizeof(double)); sie wird mit Variablen aus dem Eingabe-Array gefüllt

dann wird die Matlab-Funktion aufgerufen

dann wird das Ausgabe-Array von mxArray in ein doppeltes

// ---------------------- mxArray in double umwandeln ------
memcpy(out, mxGetPr(outm), size*sizeof(double))


Das ist ungefähr jetzt, es ist schwer, sich genau zu erinnern.

Einschlüsse für die Arbeit mit mxArray

#include "mex.h"

befinden sich im Matlab-Ordner