English Русский 中文 Español Deutsch 日本語 Português 한국어 Italiano Türkçe
Introduction à la méthode de décomposition en modes empiriques

Introduction à la méthode de décomposition en modes empiriques

MetaTrader 5Statistiques et analyses | 12 janvier 2022, 17:16
476 0
Victor
Victor

Introduction

Tous les processus réels que nous devons traiter dans la pratique sont complexes, en règle générale, constitués d’un grand nombre de composants. Par exemple, la météo. Lors de l’analyse des cartes de précipitations, nous devons garder à l’esprit qu’elles représentent une interaction entre de nombreux processus divers tels que les changements saisonniers, les processus de réchauffement / refroidissement de la planète, les changements de courant océanique, la dynamique des cyclones et des anticyclones, la quantité de dioxyde de carbone émise dans l’atmosphère, les cycles d’activité solaire, etc. La liste pourrait s'allonger indéfiniment.

Un graphique de ce type est donc assez difficile à analyser car ses composantes, en interagissant les unes avec les autres, masquent et déforment les régularités que l'on voudrait identifier. D'où le désir légitime de décomposer le processus considéré en composantes individuelles et d'analyser chacune de ces composantes séparément. L'analyse des composants individuels et la prise en compte de leur contribution au processus en cours nous aident à mieux comprendre le processus en cours et, par exemple, à augmenter la fiabilité des prévisions.

Et il n'y a pas d'exception lorsqu'il s'agit d'informations diverses sur le trading, y compris les cotations des devises qui sont également formées sur la base d'un grand nombre de facteurs différents. C'est pourquoi il est tout à fait naturel de s'attendre à ce qu'une décomposition initiale en composants individuels puisse grandement faciliter leur analyse ultérieure.

Le terme « décomposition » désigne formellement la décomposition d’un procédé composé ou d’un matériau composite en éléments constitutifs distincts. Mais dans de nombreux domaines liés à l’analyse de différents processus, à l’analyse de signaux, à l’analyse de divers types de séquences, etc., ce terme est depuis longtemps utilisé dans un sens plus large suggérant très souvent non pas une décomposition en composants initiaux réels mais plutôt une décomposition en certaines fonctions qui n'étaient pas réellement présentes lors de la formation des données initiales. Ces fonctions sont en quelque sorte formées artificiellement dans le processus de décomposition des données, mais malgré leur origine « artificielle », elles permettent une analyse plus approfondie des données aidant à identifier les modèles cachés.

La grande majorité des méthodes utilisées dans l’analyse de marché peuvent être explicitement ou implicitement attribuées à des méthodes qui distinguent certains composants du processus analysé, c’est-à-dire les méthodes de décomposition. Passons brièvement en revue quelques-unes d’entre elles.


1. Décomposition

Il existe de nombreuses méthodes de décomposition différentes qui peuvent être appliquées dans la pratique à une séquence donnée considérée. Ces méthodes peuvent avoir des approches mathématiques ou empiriques sous-jacentes différentes, un degré de complexité différent et différents domaines d’application.

Par exemple, même une analyse fondamentale du marché peut - dans une certaine mesure - être considérée comme une des méthodes de décomposition. Cette analyse porte sur l’effet produit par un ensemble d’événements initiaux qui influencent directement les conditions du marché. En d’autres termes, un processus de marché analysé est implicitement décomposé en un certain nombre d’événements qui le composent.

Les questions liées à l’analyse fondamentale ne seront pas abordées plus tard. Nous supposerons que toute autre information sur le processus à l’étude n’est pas disponible ; ce que nous avons n’est qu’une séquence représentant le comportement d’un processus donné

L'exemple de décomposition le plus simple peut être illustré par la décomposition d'une séquence en plusieurs composantes à l'aide des méthodes habituelles bien connues. Par exemple, nous traçons une MA sur un graphique pour n’importe quelle paire de devises. Soustrayez ensuite la courbe résultante de la séquence initiale. En conséquence, nous obtiendrons deux composants de la séquence initiale, la courbe MA et le résidu. La même procédure, mais en utilisant une MA de plus longue période, lorsqu'elle est appliquée au résidu obtenu, donnera trois composantes - deux courbes MA et le résidu de la transformation. Comme vous pouvez le constater, le processus de décomposition peut facilement être organisé en utilisant tous les moyens disponibles. Tout l’intérêt réside dans les propriétés des résultats d’un tel processus.

Parmi les méthodes de décomposition et d'analyse spectrale bien connues, la transformée de Fourier mérite d'être mentionnée ici. La transformée de Fourier appartient à la classe des transformations orthogonales qui utilise des fonctions de base harmonique fixes. Le résultat de la transformée de Fourier peut être montré comme une décomposition du processus initial en fonctions harmoniques avec des fréquences et des amplitudes fixes. Notez deux points particulièrement importants pour nous.

Tout d’abord, la transformation est toujours effectuée dans une base fixe et préalablement définie de fonctions orthogonales. C’est-à-dire qu’une base de transformation ne dépend pas de la nature d’une séquence transformée.

Deuxièmement, les valeurs d'amplitude et de fréquence des composantes harmoniques résultantes sont constantes. C’est-à-dire que leurs valeurs sont constantes sur toute la séquence initiale. Cela signifie que si la nature d’une séquence initiale donnée changeait au cours d’un intervalle considéré, ces changements ne seront pas reflétés dans les résultats de la transformation. Les résultats obtenus dans ce cas ne reflèteront qu'un certain état moyen du processus car cette transformation est basée sur l'hypothèse de stationnarité des données initiales.

Pour éviter les contraintes liées à la non-stationnarité de la séquence initiale, nous pouvons passer de la transformée de Fourier à une transformée en vaguelettes. Une transformée en vaguelette, comme la transformée de Fourier, effectue la décomposition dans une base fixe de fonctions. Contrairement à la transformée de Fourier, cette base doit être prédéfinie, c'est-à-dire qu'une vaguelette utilisée dans la transformée doit être sélectionnée.

De plus, contrairement à la transformée de Fourier, chaque composante résultant d'une transformée en vaguelettes possède des paramètres qui déterminent son échelle et son niveau dans le temps, ce qui résout le problème associé à une éventuelle non-stationnarité d'un processus analysé.

La transformée de Fourier et la transformée en vaguelettes ont toutes deux reçu une large reconnaissance en raison des techniques mathématiques bien établies utilisées et des algorithmes de mise en œuvre efficaces disponibles. En outre, les deux transformations semblent être assez polyvalentes et peuvent être appliquées avec succès dans différents domaines.

Mais pour des raisons pratiques, il serait bon de disposer d'une transformée qui non seulement permettrait de traiter les processus non stationnaires mais utiliserait également une base de transformée adaptative déterminée par les données initiales. Ce type de transformation existe et sera brièvement examiné ci-dessous, ce qui permettra d'aborder le sujet principal de cet article.


2. Décomposition en mode empirique

La décomposition en mode empirique (EMD) a été proposée comme la partie fondamentale de la Transformée de Hilbert-Huang (HHT). La transformation de Hilbert Huang s’effectue, pour ainsi dire, en 2 étapes. Tout d’abord, en utilisant l’algorithme EMD, nous obtenons des fonctions de mode intrinsèque (IMF).

Puis, dans un deuxième temps, le spectre de fréquence instantané de la séquence initiale est obtenu en appliquant la transformée de Hilbert aux résultats de l'étape précédente. Le HHT permet d'obtenir le spectre de fréquence instantané de séquences non linéaires et non stationnaires. Ces séquences peuvent donc également être traitées à l'aide de la décomposition empirique des modes.

Toutefois, cet article ne traitera pas du tracé du spectre de fréquence instantané à l'aide de la transformée de Hilbert. Nous nous concentrerons uniquement sur l’algorithme EMD.

Contrairement à la transformée de Fourier et à la transformée d’ondelettes mentionnées précédemment, l’EMD décompose toutes les données données en fonctions de mode intrinsèque (IMF) qui ne sont pas définies analytiquement et sont plutôt déterminées par une séquence analysée seule. Les fonctions de base sont dans ce cas dérivées de manière adaptative directement à partir des données d’entrée. Un IMF résultant de l'EMD ne doit satisfaire qu'aux exigences suivantes :

  1. Le nombre d'extrema de L'IMF (la somme des maxima et des minima) et le nombre de passages par zéro doivent être égaux ou différer au maximum de un ;
  2. En tout point d’un IMF, la valeur moyenne de l’enveloppe définie par les maxima locaux et de l’enveloppe définie par les minima locaux est nulle.

La décomposition se traduit par une famille de composants IMF ordonnés par fréquence. Chaque IMF successive contient des oscillations de fréquence inférieure à celle de la précédente. Et bien que le terme « fréquence » ne soit pas tout à fait correct lorsqu’il est utilisé par rapport aux IMF, il est probablement le mieux adapté pour définir leur nature. Le fait est que même si un IMF est de nature oscillatoire, il peut avoir une amplitude et une fréquence variables le long de l’axe temporel.

Il est assez difficile de visualiser les résultats des performances de l'algorithme EMD sur la base de la seule description, aussi passons à sa mise en œuvre logicielle qui nous donnera l'occasion de connaître les particularités de l'algorithme.


3. Algorithme EMD

L’algorithme tel que proposé par Huang est basé sur la production d’enveloppes lisses définies par des maxima et des minima locaux d’une séquence et la soustraction ultérieure de la moyenne de ces enveloppes de la séquence initiale. Cela nécessite l’identification de tous les extrema locaux qui sont ensuite reliés par des lignes de spline cubiques pour produire les enveloppes supérieure et inférieure.

La procédure de traçage des enveloppes est illustrée à la figure 1.


Fig. 1. Tracer les enveloppes et leur moyenne.

Fig. 1. Tracer les enveloppes et leur moyenne


La figure 1 donne la séquence analysée dans la fine ligne bleue. Les maxima et minima de la séquence sont représentés en rouge et bleu, respectivement. Les enveloppes sont indiquées en vert.

La moyenne est calculée sur la base des deux enveloppes et est représentée sur la figure 1 par la ligne pointillée. La valeur moyenne ainsi calculée est ensuite soustraite de la séquence initiale.

Les étapes ci-dessus aboutissent à l’extraction de la fonction empirique requise en première approximation. Pour obtenir le IMF final, de nouveaux maxima et minima seront à nouveau identifiés et toutes les étapes ci-dessus seront répétées. Ce processus répété est appelé tamisage. Le processus de tamisage est répété jusqu’à ce qu’un certain critère d’arrêt donné soit rempli. La sélection des critères d’arrêt du tamisage est l’un des points clés affectant le résultat de la décomposition dans son ensemble. Nous reviendrons sur la discussion de cette question un peu plus tard.

Si le processus de tamisage est terminé avec succès, nous obtiendrons le premier IMF. L'IMF qui suit peut être obtenu en soustrayant l'IMF précédemment extrait du signal original et en répétant une fois de plus la procédure décrite ci-dessus. Cela continue jusqu’à ce que tous les IMF soient extraits. Le processus de tamisage s’arrête généralement lorsque le résidu, par exemple, ne contient pas plus de deux extréma.

Comme on peut le voir, la procédure de décomposition en mode empirique décrite n’est pas basée sur des calculs mathématiques stricts, mais est plutôt vraiment empirique, justifiant ainsi pleinement son nom. Malgré la simplicité et la clarté de l’algorithme ci-dessus tel que proposé par Huang, certains points peuvent être considérés comme des inconvénients.

Diverses publications sur ce sujet fournissent des revues détaillées de ses points faibles, ainsi que des moyens de moderniser l’algorithme de Huang. Cet article ne va pas se concentrer sur les modernisations possibles de cette méthode mais va simplement démontrer une tentative de créer sa mise en œuvre logicielle. Les particularités de mise en œuvre seront brièvement décrites ci-dessous.


4. Classe CEMDecomp

La classe CEMDecomp qui met en œuvre l'algorithme EMD a été créée à partir des publications Internet consacrées à la transformée de Hilbert-Huang et à la décomposition en mode empirique. L'algorithme mis en œuvre est essentiellement très similaire à l'algorithme initialement proposé par Huang et ne contient pas de modifications majeures.

Vous trouverez ci-dessous un extrait du code source qui se trouve dans le fichier CEMDecomp.mqh à la fin de l’article.

//------------------------------------------------------------------------------------
// The Empirical Mode Decomposition (EMD).
//------------------------------------------------------------------------------------
class CEMDecomp:public CObject
  {
public:
  int     N;                 // Input and output data size
  double  Mean;              // Mean of input data
  int     nIMF;              // IMF counter
  int     MaxIMF;            // Maximum number of IMF
  int     MaxIter;           // Maximum number of iterations
  int     FixedIter;         // 0-variable number of sifting iterations;
                             // 1-always ten sifting iterations.
  double  IMFResult[];       // Result
private:
  double  X[];
  double  Imf[];
  double  XMax[];            // x of local maxima
  double  YMax[];            // y of local maxima
  double  XMin[];            // x of local minima
  double  YMin[];            // y of local minima
  double  EnvUpp[];          // Upper envelope
  double  EnvLow[];          // Lower envelope
  double  Eps;               // Accuracy comparison of floating-point numbers
  double  Tol;               // Accuracy of calculation IMF
public:  
  void    CEMDecomp(void);
  int     Decomp(double &y[]);          // Decomposition
  void    GetIMF(double &x[], int nn);  // Get IMF number nn
private:
  int     arrayprepare(void);
  void    extrema(double &y[],int &nmax,double &xmax[],double &ymax[], int &nmin,double &xmin[],double &ymin[]);
  int     SplineInterp(double &x[],double &y[],int n,double &x2[], double &y2[],int btype=0);
  };

Jetons un coup d’œil aux variables publiques et aux méthodes déclarées dans la classe CEMDecomp.

N est le nombre d'éléments de la séquence. La valeur de la variable N est générée après l’appel de la méthode Decomp() et est égale à la longueur de la séquence d’entrée. Les IMF extraits auront la même taille.

Moyenne est la valeur moyenne de la séquence d’entrée. La valeur est générée après l’appel de la méthode Decomp().

nIMF est le compteur du IMF. Après avoir appelé Decomp(), il contient le nombre d’IMF extraits plus deux. Ainsi, cette valeur indique combien de composants peuvent être lus à l’aide de la méthode GetIMF(). Cela dit, une composante d'indice 0 contiendra toujours la séquence initiale à partir de laquelle sa valeur moyenne est soustraite, tandis qu'une composante d'indice nIMF contiendra le résidu de la décomposition.

MaxIMF est le nombre maximal autorisé de IMF. La décomposition de la séquence d'entrée en IMF distincts s'arrête lorsque le nombre d'IMF atteint la valeur MaxIMF. La valeur de cette variable peut être définie avant d’appeler la méthode Decomp(). La valeur par défaut est _Digits.

MaxIter est le nombre maximal d’itérations autorisées dans le processus de tamisage. Si le nombre d’itérations dans le processus de tamisage atteint cette valeur, le tamisage s’arrêtera, que la précision requise ait été atteinte ou non. La valeur de cette variable peut être définie avant d’appeler la méthode Decomp(). La valeur par défaut est 2000.

FixedIter est l’indicateur qui définit un critère d’arrêt lors du tamisage. Si la valeur FixedIter est nulle, le processus de tamisage pour chaque IMF s’arrêtera une fois que la précision donnée sera atteinte. Le nombre d’itérations nécessaires pour atteindre la précision donnée pour l’extraction de différents IMF peut varier. Si le FixedIter est défini sur un, un IMF sera toujours extrait en 10 itérations. La valeur de cette variable peut être définie avant d’appeler la méthode Decomp(). La valeur par défaut est 0.

Decomp(double &y[]) est la méthode principale de la classe qui effectue la décomposition. Il reçoit une référence à un tableau contenant des données d’entrée, en tant que paramètre d’entrée. Une fois l’opération terminée, la variable N sera égale à la longueur du tableau d’entrée. Les IMF extraits auront la même taille. La variable Mean sera égale à la valeur moyenne de la séquence d’entrée, tandis que la variable nIMF sera égale au nombre de composants pouvant être lus à l’aide de la méthode GetIMF().

GetIMF(double &x[], int nn) sert à garantir l’accès aux résultats obtenus à l’aide de la méthode Decomp(). L’adresse du tableau dans lequel le composant avec le nombre défini par nn sera copié est passée en tant que paramètre d’entrée. Cela dit, une composante d'indice 0 contiendra toujours la séquence initiale à partir de laquelle sa valeur moyenne est soustraite, tandis qu'une composante d'indice nIMF contiendra le résidu de la décomposition. Si la longueur du tableau passé en tant que paramètre s’avère inférieure à la longueur des composants résultants, le tableau sera rempli autant que sa longueur le permet.

L’utilisation de la classe CEMDecomp peut être démontrée par l’exemple suivant :

#include "CEMDecomp.mqh"
//------------------------------------------------------------------------------------
// Script program start function
//------------------------------------------------------------------------------------
void OnStart()
  {
  int n,ret;
  double yy[],imf2[];
  
  n=400;                                    // Input sequence length
  ArrayResize(yy,n);                         // Array of input data
  ArrayResize(imf2,n);                       // Array for reading the results
  
  CopyOpen(_Symbol,PERIOD_CURRENT,0,n,yy);      // Generation of input data
  
  CEMDecomp *emd=new CEMDecomp();           // Creation of the CEMDecomp class instance
  ret=emd.Decomp(yy);                       // Decomposition of the input sequence
  
  if((ret==0)&&(emd.nIMF>3))                // If there is no error and the sufficient
                                            // number of components was extracted,
    emd.GetIMF(imf2,2);                     // copy component number 2 into
                                            // array imf2[].
  delete(emd);                              // Deletion of the CEMDecomp class instance
  
  // One of the extracted components in array imf2[].
  }
//------------------------------------------------------------------------------------

Un exemple complet de décomposition affichant des IMF extraits via l’interface Web se trouve dans l’archive CEMDecomposition.zip à la fin de l’article. Pour exécuter cet exemple, vous devez décompresser l'archive spécifiée et placer le répertoire \CEMDecomposition complet avec son contenu dans le répertoire \Indicators ou \Scripts du terminal. Ensuite, vous pouvez compiler et exécuter le script EMDecomp_Test.mq5. N'oubliez pas que l'utilisation de bibliothèques externes dans le terminal doit être autorisée.

La figure 2 montre un autre exemple de décomposition des cotations USDJPY quotidiens avec la longueur de séquence de 100 éléments. On peut voir que la décomposition de cette séquence a permis d'extraire quatre IMF et le résidu.


Fig. 2. Décomposition de la séquence des cotations USDJPY quotidiennes, oùN=100

Fig. 2. Décomposition de la séquence des cotations USDJPY quotidiennes, oùN=100


Tous les graphiques de la figure 2 sont affichés à la même échelle, ce qui permet d'évaluer la contribution de chacune des IMF extraites. Cependant, cette façon de tracer ne peut pas donner une image suffisamment claire pour voir les particularités de chacun des IMF. La figure 3 illustre les mêmes résultats, en utilisant uniquement le mode de mise à l’échelle automatique pour chacun des graphiques.


Fig. 3. Décomposition de la séquence de cotations quotidiennes USDJPY, où N=100. Mode de mise à l'échelle automatique.

Fig. 3. Décomposition de la séquence de cotations quotidiennes USDJPY, où N=100. Mode de mise à l'échelle automatique. Mode de mise à l’échelle automatique

Et bien que la figure 3 n’affiche pas la corrélation réelle des amplitudes des composants individuels, l’utilisation du mode de mise à l’échelle automatique permet une visualisation plus détaillée de chacun d’entre eux.


5. Notes relatives à la mise en œuvre proposée de l’algorithme EMD

La première chose sur laquelle je voudrais attirer votre attention est la méthode d’identification des maxima et des minima de la séquence initiale. Dans ce cas, deux options sont disponibles.

La figure 4 montre les résultats de performance de l’algorithme d’identification de l’extréma.

Fig. 4. Identification de l’extréma. La première option.

Fig. 4. Identification de l’extréma. La première option

Lorsqu’il s’agit d’identifier des maxima ou minima d’une fonction, l’algorithme le plus couramment utilisé est le suivant :

  1. La valeur de l’élément courant de la séquence est comparée aux valeurs précédentes et suivantes ;
  2. Si la valeur actuelle est supérieure à la valeur précédente et à la valeur suivante, elle est identifiée comme le maximum de la fonction ;
  3. Si la valeur courante est inférieure à la valeur précédente et à la valeur suivante, elle est identifiée comme le minimum de la fonction ;

Pour les séquences avec des extréma clairement définis, l’identification des maxima et des minima n’implique aucune difficulté. L’algorithme fourni fonctionne très bien. Ce cas est illustré dans la première moitié du graphique de la figure 4. Cependant, cet algorithme ne répondra pas aux sommets plats où les valeurs les plus proches de la séquence sont égales.

Si l’algorithme fourni avait été utilisé, le dernier maximum et les deux derniers minima illustrés à la figure 4 n’auraient jamais été identifiés. D’une part, ce résultat aurait été attendu et correct. Mais d'autre part, en faisant l'analogie avec les processus oscillatoires, si des passages à zéro se produisaient, ces extrema auraient été négligés. Il n’est pas tout à fait clair si les sommets plats d’une séquence rectangulaire ou des sections de valeurs de séquence égales peuvent être considérés comme extrema.

Néanmoins, l'algorithme utilisé pour l'identification des extrema lors de la mise en œuvre de la classe EMDecomp est une version améliorée de l'algorithme fourni ci-dessus. Ses résultats de performance peuvent être observés à la figure 4. Cet algorithme identifie les intervalles avec des valeurs de séquence égales comme extrema et place les points d'extremum au milieu de ces intervalles.

L’algorithme d’identification des maxima et des minima dont les résultats de performance sont présentés à la figure 4 est utilisé dans la classe CEMDecomp pour le calcul du nombre d’extréma lors de la détermination du point où le cycle de décomposition doit s’arrêter. Par exemple, si un IMF extrait n’a pas d’extremum, la décomposition s’arrête et ce IMF est rejeté.

Si cet algorithme d’identification est utilisé lors du traçage d’enveloppes, alors, dans les cas où la séquence d’entrée, par exemple, prend la forme indiquée à la figure 4, les enveloppes résultantes seront représentées par deux lignes parallèles droites. Le processus de tamisage ne parviendra pas non plus à transformer la séquence d'entrée et cette séquence d'entrée ne sera pas adaptée à la décomposition en composants.

Un moyen de sortir de cette situation peut être trouvé dans l’utilisation d’un algorithme quelque peu différent pour l’identification de l’extréma pour tracer les enveloppes.

La figure 5 illustre les résultats obtenus à l’aide de cet algorithme alternatif pour l’identification des extrema.

Graphique 5. Identification de l’extréma. La deuxième option.

Fig.  5. Identification de l’extréma. La deuxième option


Examinons de plus près la figure 5. Contrairement à la figure 4, elle montre des points verts qui sont à la fois des maxima et des minima. Si les enveloppes sont tracées sur la base de ces extrema, elles ne seront plus des lignes droites parallèles et les composantes cachées de la séquence rectangulaire seront disponibles pour une extraction ultérieure dans le processus de tamisage. Une bonne illustration de ce qui précède peut être un cas de test situé dans l’archive CEMDecomposition.zip à la fin de l’article.

Malheureusement, cette approche ne résout pas tous les problèmes liés à l’extraction de composants cachés. Par exemple, les composants cachés ne peuvent pas être extraits de cette manière pour une séquence triangulaire. Ce fait peut être l'un des inconvénients de cette mise en œuvre de l'algorithme EMD. Cette situation difficile peut probablement être résolue en passant à l'algorithme de décomposition CEEMD (Méthode de décomposition en modes empiriques d'ensemble complémentaire) dont l'examen n'est pas abordé dans cet article.

Outre les particularités liées à la mise en œuvre des algorithmes d'identification des extrema, il convient également de prêter attention au problème des effets finaux typiques de ce type d'algorithmes. Pour développer ce qui précède, voyons la figure 1. La figure 1 montre clairement que les maxima sont reliés par une fonction de spline d’interpolation cubique comme enveloppe supérieure.

Cela dit, l’enveloppe doit être définie pour les sections situées à la fois à gauche du premier maximum et à droite du dernier maximum. La manière dont cette enveloppe est allongée est susceptible de déterminer la nature des IMF extraits à côté de ses extrémités. Sans entrer dans les détails de la mise en œuvre logicielle de la correction de l’effet final, ce fait est simplement porté ici à l’attention du lecteur.

Il convient en outre de noter que la nature et le nombre d’IMF extraits peuvent dépendre et dépendront de la méthode choisie pour arrêter le cycle de tamisage. La classe CEMDecomp utilise le calcul du ratio indiquant l’étendue de la différence dans l’IMF actuel telle que déterminée par le dernier cycle de tamisage comme méthode principale qui sert à arrêter le processus de tamisage.

Si le tamisage n’a presque aucun effet sur un IMF inconnu, le processus de tamisage s’arrête et l’IMF est considéré comme produit. Une valeur limite par défaut déterminant la précision d’extraction de l’IMF est définie dans le constructeur de classe. Après avoir fixé la valeur limite par défaut, le nombre d'itérations de tamisage peut parfois atteindre 200, voire 300. Dans les publications sur ce sujet, de nombreux auteurs mettent en garde contre l’utilisation d’un si grand nombre d’itérations de tamisage. Il a néanmoins été décidé d’utiliser cette valeur limite par défaut dans cette mise en œuvre de l’algorithme EMD.

Cette mise en œuvre de l’algorithme EMD permet d’utiliser un autre critère d’arrêt. À cette fin, la variable FixedIter doit être définie sur 1 avant d’appeler la méthode Decomp(). Dans ce cas, tous les IMF seront toujours extraits en 10 itérations de tamisage. Et il est facile de voir que les résultats de décomposition obtenus à l’aide de ce critère d’arrêt seront quelque peu différents de ceux de la méthode par défaut.


6. Application de l’algorithme EMD

Étant donné que l’algorithme EMD faisait initialement partie de la transformée de Hilbert-Huang, le calcul du spectre de fréquence instantané d’une séquence peut servir d’exemple démontrant l’application de cet algorithme. Cela implique l'exécution de la transformée de Hilbert sur les composantes de l'IMF extraites à l'aide de l'EMD. Cette procédure n’est toutefois pas prise en compte dans cet article.

Outre le calcul du spectre, l’algorithme EMD peut être utilisé pour lisser des séquences.

La figure 6 montre un exemple d’un tel lissage.


Fig. 6. Lissage de la séquence d’entrée.

Fig. 6. Lissage de la séquence d’entrée


Un fragment arbitraire de cotations quotidiennes USDCHF composé de 100 valeurs de prix « ouvertes » a été sélectionné pour le lissage. Dans le processus de décomposition, quatre IMF et le résidu ont été obtenus. Tous les IMF, à l’exception du premier, ont été ajoutés au résidu.

Ainsi, la composante la plus élevée trouvée a été exclue de la séquence d’entrée. Si nous ne tenions pas compte des deux premiers composants lors de leur addition, la courbe résultante serait encore plus lisse.

Un autre exemple de l’application EMD peut être la génération d’une prévision basée sur des IMF extraits de la séquence d’entrée. Pour générer une prévision, vous pouvez utiliser n'importe quel extrapolateur permettant de générer une prévision pour chacun des IMF et du résidu séparément.

Les prévisions générées de cette manière sont ensuite additionnées pour produire le résultat de la prévision requise pour la séquence d'entrée. Compte tenu de la nature oscillatoire des différentes IMF, on peut supposer que pour générer une prévision, il serait raisonnable d'utiliser des extrapolateurs prenant en compte le comportement périodique des séquences de prévisions.

Dans notre cas, nous examinerons un exemple d’opération d’un extrapolateur plus simple où une prévision pour chacun des IMF sera générée à l’aide d’une extrapolation linéaire en 10 étapes. Le résultat de cette prévision est illustré à la figure 7.


Fig. 7. Génération d’une prévision pour les cotations USDCHF, H4.

Fig. 7. Générer une prévision pour les cotations USDCHF, H4


Il convient de noter que lors de la génération d’une prévision, une ou plusieurs composantes à la fréquence la plus élevée peuvent être écartées. Ainsi, l’effet du bruit à haute fréquence sur la prévision peut être atténué. Le résultat de la prévision qui exclut le premier IMF est illustré à la figure 7. La prévisibilité de cette méthode n'a pas été évaluée dans ce cas. Une analyse détaillée des méthodes de prévision basées sur la décomposition empirique des modes n'est pas fournie ici car ce sujet dépasse le cadre de cet article.

On ne peut s'empêcher de mentionner également la dé-stratification. Une fois que les composantes individuelles de la séquence sont obtenues à l'aide de l'EMD, un algorithme assez flexible peut être développé pour la dé-stratification. Le résidu de décomposition ou le résidu ajouté à un ou plusieurs des derniers IMF extraits peut être considéré comme une tendance. Le nombre d’IMF impliqués dans la création d’une ligne de tendance avec le résidu peut varier en fonction du nombre de composants à basse fréquence nécessaires pour rester dans la séquence après la dé-stratification.

Ainsi, pour déstabiliser, il suffit d'additionner toutes les IMF extraites à la suite de la décomposition, à l'exception de la dernière composante ou de plusieurs dernières composantes. Cette procédure peut facilement être combinée avec le lissage du résultat obtenu, si la composante de plus haute fréquence est également exclue du processus d'addition des composantes. La figure 8 montre un exemple de dé-stratification à l’aide de la technique ci-dessus.


Fig. 8. Dé-stratification combiné à un lissage.

Fig. 8. Dé-stratification combinée à un lissage


Une séquence de cotations EURUSD, quotidiennes a été prise comme données initiales. Après la décomposition, tous les composants extraits ont été additionnés, à l’exclusion du résidu de décomposition, du dernier et du premier IMF. Il en résulte non seulement une dé-stratification mais aussi un certain lissage de la courbe résultante.

Le domaine d'application de la méthode de décomposition empirique des modes ne se limite certainement pas aux exemples simples donnés dans l'article. Mais puisque cet article se concentre davantage sur les questions de mise en œuvre de la méthode EMD en tant que telle, plutôt que sur son application, examinons les exemples fournis ci-dessous.

La figure 9, qui montre le résultat de la décomposition obtenu en utilisant les paramètres définis par défaut dans CEMDecomp.mqh, peut servir d'illustration supplémentaire de la fonctionnalité offerte par cette mise en œuvre de la méthode EMD. Cet exemple est basé sur l'utilisation des cotations XAUUSD H4. La longueur de la séquence est de 150 éléments.


Fig. 9. Exemple de décomposition à l’aide des cotations XAUUSD H4.

Fig. 9. Exemple de décomposition à l’aide des cotations XAUUSD H4

La mise à l’échelle automatique a été appliquée à chacun des composants de la figure 9.


Conclusion

N'oubliez pas que la méthode de décomposition en modes empiriques, ainsi que la transformée de Hilbert-Huang, sont destinées à l'analyse de données provenant de processus non stationnaires et non linéaires. Cela ne signifie pas que cette approche ne peut pas être appliquée aux séquences linéaires et stationnaires.

Quelques approches utilisées dans les algorithmes de décomposition ont été brièvement évoquées au début de l'article. Et il a été mentionné que la majorité de ces algorithmes décomposent une séquence en composantes qui ne représentent pas en fait les processus initiaux composant réellement la séquence considérée.

Ces composants sont en quelque sorte synthétiques ; leur extraction permet simplement de mieux comprendre la structure d'une séquence d'entrée et, dans de nombreux cas, de faciliter son analyse. La méthode EMD ne fait pas exception. Il ne faut jamais penser que les composantes obtenues par cette méthode reflètent les processus physiques réels dont sont issues les données initialement analysées.

La mise en œuvre proposée dans cet article nécessitera probablement d'autres tests et améliorations car elle peut difficilement être considérée comme idéale.

L'objectif principal de cet article était cependant de familiariser le lecteur avec la méthode EMD et certaines particularités liées à sa mise en œuvre.

En résumé.

  1. L’article aborde très brièvement certaines questions générales liées à la décomposition ;
  2. En quelques mots, il expose l'essence de la méthode de décomposition empirique des modes ;
  3. La liste et une brève description de l'interface de la classe CEMDecomp où la méthode EMD est mise en œuvre sont introduites ;
  4. L'exemple d'interaction avec la classe CEMDecomp démontrant également comment ses méthodes sont appelées est donné ;
  5. Certaines particularités de la mise en œuvre proposée de la méthode EMD sont soulignées ;
  6. Quelques exemples simples démontrant l’application de la méthode EMD dans l’analyse des données sont fournis;
  7. À la fin de l'article, vous trouverez le fichier CEMDecomp.mqh mettant en œuvre la méthode EMD, ainsi que l'archive EMDecomposition.zip contenant le cas de test complet présentant l'utilisation de la classe CEMDecomp.


Références

  1. Transformée de Hilbert-Huang.
  2. Transformée de Hilbert-Huang.
  3. Décomposition en mode empirique.


Annexe

L’article original a été publié le 28 juin 2012. Cette annexe a été proposée le 5 juillet 2012.

Une mise en œuvre alternative de la méthode EMD est proposée en complément de l'article. Cette mise en œuvre est affichée comme classe CEMD et placée dans le fichier CEMD_2.mqh joint ci-dessous.

Traduit du russe par MetaQuotes Ltd.
Article original : https://www.mql5.com/ru/articles/439

Fichiers joints |
cemdecomp.mqh (33.83 KB)
emdecomposition.zip (89.17 KB)
cemd_2.mqh (33.03 KB)
ID MetaQuotes dans le terminal mobile MetaTrader ID MetaQuotes dans le terminal mobile MetaTrader
Les appareils Android et iOS nous offrent de nombreuses fonctionnalités que nous ne connaissons même pas. L'une de ces fonctionnalités est les notifications push qui nous permettent de recevoir des messages personnels, quel que soit notre numéro de téléphone ou notre opérateur de réseau mobile. Le terminal mobile MetaTrader peut déjà recevoir de tels messages directement de votre robot de trading. Vous ne devez connaître que l'ID MetaQuotes de votre appareil. Plus de 9 000 000 de terminaux mobiles l'ont déjà reçu.
Application de la méthode des coordonnées propres à l'analyse structurelle de distributions statistiques non extensives Application de la méthode des coordonnées propres à l'analyse structurelle de distributions statistiques non extensives
Le problème majeur de la statistique appliquée est le problème de l'acceptation des hypothèses statistiques. On a longtemps considéré qu'il était impossible de le résoudre. La situation a changé avec l'apparition de la méthode des coordonnées propres. Il s'agit d'un outil fin et puissant pour l'étude structurelle d'un signal permettant de voir plus que ce qui est possible en utilisant les méthodes de statistiques appliquées modernes. L'article se concentre sur l'utilisation pratique de cette méthode et présente des programmes en MQL5. Il traite également le problème de l'identification des fonctions en utilisant comme exemple la distribution introduite par Hilhorst et Schehr.
Exploration des classes de stratégies de trading de la bibliothèque standard - Personnalisation des stratégies Exploration des classes de stratégies de trading de la bibliothèque standard - Personnalisation des stratégies
Dans cet article, nous allons vous montrer comment explorer la bibliothèque standard de classes de stratégies de trading et comment ajouter des stratégies et des filtres/signaux personnalisés en utilisant la logique Patterns-and-Models de l'assistant MQL5. En fin de compte, vous pourrez facilement ajouter vos propres stratégies à l'aide des indicateurs standard MetaTrader 5, et l'assistant MQL5 créera un code propre et puissant et un Expert Advisor entièrement fonctionnel.
Obtenez 200 USD pour votre article sur le trading algorithmique ! Obtenez 200 USD pour votre article sur le trading algorithmique !
Rédigez un article et contribuez au développement du trading algorithmique. Partagez votre expérience en matière de trading et de programmation, et nous vous paierons 200 dollars. La publication d'un article sur le site populaire MQL5.com offre également une excellente occasion de promouvoir votre marque personnelle au sein d'une communauté professionnelle. Des milliers de traders liront votre travail. Vous pouvez discuter de vos idées avec des personnes partageant les mêmes, acquérir de nouvelles expériences et monétiser vos connaissances.