Effet de bord sur le chemin du GRAAL - page 2

 
Et quelles ondelettes ont été utilisées, j'ai utilisé des ondelettes Matlab. Les effets de bord semblent y être moins visibles, mais bien sûr ils sont là (ils n'y peuvent rien). J'ai également essayé des décompositions (approximations) et un réseau neuronal. Sur les données sur lesquelles le réseau a appris très cool. et apprend le maillage semble facile, mais sur les nouveaux - l'enfer. J'en suis arrivé à la conclusion que les ondelettes sont une bonne chose, surtout si l'on applique le lag space. Mais jusqu'à présent, je ne l'ai pas appliqué dans la pratique.
 
vladevgeniy писал(а) >>
Et quel type d'ondelettes avez-vous utilisé, j'ai utilisé celles de Matlab. Il semble que les effets de bord soient moins visibles, mais bien sûr ils sont là (ils n'y peuvent rien) J'ai également essayé d'appliquer des décompositions (approximations) et un réseau neuronal. Sur les données sur lesquelles le réseau a appris très cool. et apprend le maillage semble facile, mais sur les nouveaux - l'enfer. J'en suis arrivé à la conclusion que les ondelettes sont une bonne chose, surtout si l'on applique le lag space. Mais jusqu'à présent, je ne l'ai pas appliqué dans la pratique.

On utilise des ondelettes de Dobeshi. On dit que les ondelettes de Meyer sont moins sujettes aux effets de bord, mais je ne l'ai pas encore essayé.

Le problème, c'est qu'il faut beaucoup de temps pour programmer chaque méthode.

Que sont les ondelettes de Matlab ? Je n'ai jamais travaillé en Matlab.

Tu veux dire des polynômes ? Comment cela a-t-il fonctionné ?

 
Desperado писал(а) >>

Le franchissement des niveaux ne donne pas un résultat très attrayant. Cela m'a également traversé l'esprit.

Dans l'indicateur, la distribution des hauts et des bas suit une loi gaussienne, mais avec des MO différents.

Les hauts ont environ 0,3, les bas -0,3.

Plus la barre est haute, plus les signaux sont fiables et moins ils sont nombreux.

Et il n'est pas intéressant de gagner 200 points par mois :)

Oui, malheureusement, soit des distorsions, soit des retards.

Je n'aime pas la distribution normale gaussienne. Je préfère Lognormal. Mais cela ne convient malheureusement pas à tout le monde. Je suis arrivé à la conclusion qu'il est raisonnable de faire une approximation par ajustement (comme je l'ai écrit ci-dessus). Et s'il y a un résultat, ou quelque chose d'intéressant, alors je vais ajuster la fonction de distribution. En général, les déviations ne sont pas grandes, donc on peut s'y fier.

 
Desperado, matlab any matlab toolbox on wavelets. Vous pouvez obtenir la décomposition, le détail et l'approximation nécessaires. La fonction M est écrite, puis une dll de transition, et connectée via la dll à MT. Je pense qu'il existe également une fonction Mayer, ou peut-être pas, je ne me souviens plus. Mais vous pouvez gagner du temps sur la programmation, bien que j'aie eu beaucoup de mal à traduire les matrices de Matlab en variables ordinaires et inversement. J'ai essayé de réécrire la célèbre bibliothèque écrite en Delphi en C++ (il y en a plein sur le Net). C'est là que les plus fortes distorsions des bords ont été observées. Mais Matlab n'a rien de tout cela, bien qu'il fasse aussi des courbes (il aime dessiner des crochets sur les bords lorsqu'il fait une courbe). Essayez de construire simplement l'ondelette requise dans Matlab, et si vous aimez le résultat, vous pouvez le connecter à Mt via une dll.
 
vladevgeniy писал(а) >>
Desperado, tous ceux de Matlab que vous pouvez trouver dans la boîte à outils de Matlab sur les ondelettes. Vous pouvez obtenir la décomposition dont vous avez besoin ainsi que le détail et l'approximation. La fonction M est écrite, puis une dll de transition, et connectée via la dll à MT. Je pense qu'il existe également une fonction Mayer, ou peut-être pas, je ne me souviens plus. Mais vous pouvez gagner du temps sur la programmation, bien que j'aie eu beaucoup de mal à traduire les matrices de Matlab en variables ordinaires et inversement. J'ai essayé de réécrire la célèbre bibliothèque écrite en Delphi en C++ (il y en a plein sur le Net). C'est là que les plus fortes distorsions des bords ont été observées. Mais Matlab n'a rien de tout cela, bien qu'il fasse aussi des courbes (il aime dessiner des crochets sur les bords lorsqu'il fait une courbe). Essayez de construire simplement l'ondelette requise dans Matlab, et si vous aimez le résultat, vous pouvez le connecter à Mt via une dll.

Merci beaucoup. En fait, c'est le delph que j'ai utilisé :) Seulement il y avait un module, je l'ai recyclé en bibliothèque.

Je vais d'abord essayer de trouver Matlab.

 
infinum13 писал(а) >>

Je n'aime pas la distribution normale gaussienne. Lognormal est meilleur. Mais, malheureusement, cela ne convient pas non plus à tout le monde. Je suis arrivé à la conclusion qu'il est raisonnable de faire une approximation par ajustement (comme je l'ai écrit ci-dessus). Et s'il y a un résultat, ou quelque chose d'intéressant, alors je vais ajuster la fonction de distribution. En général, les déviations ne sont pas importantes, donc je peux faire confiance à celle-ci aussi.

J'ai essayé votre algorithme. Comme prévu en principe, il élimine le bruit fin. Il fonctionne bien avec les petites périodes et les grandes TF.

Je vais voir ce que je peux faire avec.

Son résultat est indiqué par la ligne rouge. Et j'ai besoin de quelque chose comme la ligne verte.

 

C'est le genre de ligne verte que l'on obtient dans Matlab, avec de grands niveaux de décomposition. Tout cela se fait avec une seule ligne de code. Il existe un mode spécial de débruitage par ondelettes, dans lequel vous sélectionnez le type d'ondelette, et il y a quelques paramètres supplémentaires. La tâche principale est de faire un dll transitoire. Ce module Delph a des effets de bord très forts, oui. Je ne sais pas comment, mais dans Matlab, ils sont très réduits - parfois, il semble même qu'il n'y en ait pas du tout.

Le dernier Matlab fait presque 4 gigas sur un torrent. )))) Mieux vaut l'utiliser. Vérifié et la dll se compile bien et s'installe bien.

 

Extrait de l'article en pièce jointe :

Notre application - la prédiction - montre l'importance cruciale que revêtent pour nous les valeurs finales. Notre série temporelle est finie, et les valeurs n, n-1, n-2, ..., sont du plus grand intérêt pour nous. Toute fonction ondelette symétrique est problématique pour le traitement d'une telle limite (ou bord). Nous ne pouvons pas non plus utiliser les coefficients des ondelettes si ces coefficients ont été calculés à partir de valeurs de données "futures". Le site asymmetric filter peut nous permettre de contourner ce problème. Une telle fonction d'ondelette peut traiter correctement le bord qui nous importe. Les premières valeurs de notre série temporelle, qui constituent également une limite, peuvent être traitées arbitrairement comme un résultat, mais cela n'a aucune conséquence pratique.

Si je comprends bien, la fonction non symétrique est basée uniquement sur les valeurs précédentes de la série chronologique.

Symétrique - sur les valeurs passées et futures. Par exemple, voici l'algorithme CDF 9/7 :

// Prédire 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]);

Les effets de bord que crée la dernière ligne.

D'après l'article, d'ailleurs, c'est un indyuke qui l'a écrit :

Ici, chaque coefficient d'ondelette est calculé uniquement sur les valeurs précédentes de la série.

Il est possible de s'aligner, bien sûr :

La région inconnue est constituée de fonctions symétriques et remplie de quelque chose comme x[n-1]+=2*a*x[n-2].

C'est censé être redessiné.

Si vous voulez jouer avec, cliquez ici.

Dossiers :
 
vladevgeniy писал(а) >>

C'est le genre de ligne verte que l'on obtient dans Matlab, avec de grands niveaux de décomposition. Tout cela se fait avec une seule ligne de code. Il existe un mode spécial de débruitage par ondelettes, dans lequel vous sélectionnez le type d'ondelette, et quelques autres paramètres. La tâche principale est de faire un dll transitoire. Ce module Delph a des effets de bord très forts, oui. Je ne sais pas comment, mais dans Matlab, ils sont très réduits - parfois, il semble même qu'il n'y en ait pas du tout.

La dernière version de Matlab fait presque 4 gigas sur un torrent. )))) Mieux vaut l'utiliser. Je l'ai vérifié et la dll se compile bien et s'installe bien.

Désolé pour la question de style RTFM, mais pourriez-vous décrire en quelques mots ?

comment créer une dll dans MathLab et l'appeler depuis MT4 ?

Si possible, avec un exemple.

 

Oh, j'aurais eu la vie facile il y a quelques mois. J'ai oublié tout ça. Mais c'est un standard dans Matlab, il y a une description dans le manuel. En général, vous trouverez une aide de très bonne qualité dans Matlab. Après la compilation, un fichier .dll et un fichier lib sont créés, ainsi que quelques autres fichiers moins importants. Dans le fichier m vous aurez une fonction en langage matlab et cette fonction est appelée depuis la dll intermédiaire. Vous avez juste besoin d'appeler l'initialisation là d'abord, bien le helpe l'a. Cependant, il y a un "mais". Nous devons surcharger les variables double string, etc. dans mxArray, puis appeler la fonction dans Matlab et ensuite revenir en C.

Voici un exemple de travail avec mxArray en C

mxArray *inm = mxCreateDoubleMatrix(1,size,mxREAL) ; variable mxArray avec taille créée pour le tableau d'entrée
memcpy(mxGetPr(inm), &in[0], size*sizeof(double)) ; rempli de variables du tableau d'entrée

alors la fonction matlab est appelée

alors le tableau de sortie de mxArray est converti en un tableau double

// ---------------------- convertir mxArray en double ------
memcpy(out, mxGetPr(outm), size*sizeof(double))


C'est à peu près maintenant, c'est difficile de se souvenir exactement.

Inclusions pour travailler avec mxArray

#include "mex.h"

sont situés dans le dossier matlab