English Русский 中文 Español Deutsch 日本語 Português 한국어 Italiano Türkçe
Utiliser l'Analyse Discriminante pour Élaborer des Systèmes de Trading

Utiliser l'Analyse Discriminante pour Élaborer des Systèmes de Trading

MetaTrader 5Systèmes de trading | 12 janvier 2022, 14:50
100 0
ArtemGaleev
ArtemGaleev

Introduction

L'une des tâches principales de l'analyse technique est de déterminer la direction dans laquelle le marché évoluera dans un avenir proche. D'un point de vue statistique, il s'agit de sélectionner des indicateurs et de déterminer leurs valeurs à partir desquelles il serait possible de diviser la condition future du marché en deux catégories : 1) mouvement ascendant, 2) mouvement descendant.

L'analyse discriminante offre l'un des moyens de décider quel type d'indicateurs et quelles valeurs permettent une meilleure discrimination entre ces catégories. En d'autres termes, l'analyse discriminante permet de créer un modèle qui prédit l'orientation du marché sur la base des données reçues des indicateurs.

Une telle analyse est cependant assez compliquée nécessitant une grande quantité de données à l'entrée. Par conséquent, son utilisation manuelle pour analyser la situation du marché prend beaucoup de temps. Heureusement, l'avènement du langage MQL5 et du logiciel statistique nous a permis d'automatiser la sélection et la préparation des données et l'application de l'analyse discriminante.

Cet article donne un exemple d’élaboration d'une évaluation environnementale pour la collecte de données du marché. Il sert de didacticiel pour l’application d’une analyse discriminante dans la création d’un modèle prognostique dans le marché FOREXlogicielStatistica


1. Qu'est-ce que l'Analyse Discriminante ?

L'analyse discriminante (ci-après « DA ») est l'une des méthodes de reconnaissance de formes. Les réseaux neuronaux peuvent être considérés comme un cas particulier de DA. La DA est utilisée dans la majorité des systèmes de défense performants basés sur la reconnaissance de formes.

Il permet de déterminer quelles variables divisent (discriminent) le flux de données entrant en groupes et de voir le mécanisme d'une telle discrimination.

Jetons un coup d'œil à un exemple simplifié d'utilisation de DA pour le marché FOREX. Nous avons des valeurs de données de Indice de Force Relative (RSI), MACD et Indice de Force RelativeIndicateurs (RVI) et nous devons prédire la direction des prix. À la suite de DA, nous pouvons obtenir ce qui suit.

a. L'indicateur RVI ne contribue pas à la prévision. Excluons-le donc de l'analyse.

b. DA a produit deux équations discriminantes :

  1. G1 = a1*RSI+b1*MACD+с1, l'équation pour les cas où le prix a augmenté ;
  2. G2 = a2*RSI+b2*MACD+с2, l'équation pour les cas où le prix a baissé.

En calculant G1 et G2 au début de chaque barre, nous prédisons que si G1 > G2, alors le prix augmentera ; alors que si G1 < G2, le prix baissera.

DA peut s'avérer utile pour une première connaissance des réseaux neuronaux. Lorsque vous utilisez DA, nous obtenons des équations similaires à celles calculées pour le fonctionnement des réseaux neuronaux. Cela permet de mieux comprendre leur structure et de déterminer au préalable s'il vaut la peine d'utiliser des réseaux neuronaux dans vos stratégies.


2. Étapes de l'analyse discriminante

L'analyse peut être divisée en plusieurs étapes.

  1. Préparation des données;
  2. Sélection des meilleures variables à partir des données préparées ;
  3. Analyse et test du modèle résultant à l'aide de données de test ;
  4. Création du modèle à partir d'équations discriminantes.

L'analyse discriminante fait partie de presque tous les progiciels modernes conçus pour l'analyse de données statistiques. Les plus populaires sont Statistica (by StatSoft Inc.) et SPSS (par IBM Corporation). Nous examinerons davantage l'application de l'analyse discriminante à l'aide du logiciel Statistica. Les captures d'écran fournies sont obtenues à partir de la version 8.0 de Statistica. Celles-ci auraient plus ou moins la même apparence dans les versions antérieures du logiciel. Il convient de noter que Statistica propose de nombreux autres outils utiles pour le trader, y compris les réseaux de neuronaux.


2.1. Préparation des données

La collecte de données dépend d'une certaine tâche en question. Définissons la tâche comme suit : à l'aide d'indicateurs, prédire la direction du graphique des prix sur la barre suivant la barre avec les valeurs connues des indicateurs. Une évaluation environnementale sera développée pour la collecte de données afin d'enregistrer les valeurs des indicateurs et les données de prix dans un fichier.

Ce doit être un fichier CSV avec une structure suivante. Les variables doivent être organisées en colonnes où chaque colonne correspond à un certain indicateur. Les lignes doivent comporter des mesures consécutives (cas), c'est-à-dire des valeurs d'indicateurs pour certaines barres. En d'autres termes, les en-têtes de tableau horizontaux comportent des indicateurs, les en-têtes de tableau verticaux comportent des barres consécutives.

Le tableau doit avoir une variable sur la base de laquelle le regroupement sera effectué (la variable de regroupement). Dans notre cas, cette variable sera basée sur le changement de prix sur la barre suivant la barre dont les valeurs des indicateurs ont été obtenues. La variable de regroupement doit comporter le numéro du groupe dont les données sont affichées sur la même ligne. Par exemple, le numéro 1 pour les cas où le prix a augmenté et le numéro 2 pour les cas où le prix a baissé.

Nous aurons besoin des valeurs des indicateurs suivants :

La fonction OnInit() créé des indicateurs (obtient des poignées d’indicateur) et le fichier masterData.csv où elle sauvegarde l’en-tête de la colonne des données.

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- initialization of the indicators
   h_AC=iAC(Symbol(),Period());
   h_BearsPower=iBearsPower(Symbol(),Period(),BearsPower_PeriodBears);
   h_BullsPower=iBullsPower(Symbol(),Period(),BullsPower_PeriodBulls);
   h_AO=iAO(Symbol(),Period());
   h_CCI=iCCI(Symbol(),Period(),CCI_PeriodCCI,CCI_Applied);
   h_DeMarker=iDeMarker(Symbol(),Period(),DeM_PeriodDeM);
   h_FrAMA=iFrAMA(Symbol(),Period(),FraMA_PeriodMA,FraMA_Shift,FraMA_Applied);
   h_MACD=iMACD(Symbol(),Period(),MACD_PeriodFast,MACD_PeriodSlow,MACD_PeriodSignal,MACD_Applied);
   h_RSI=iRSI(Symbol(),Period(),RSI_PeriodRSI,RSI_Applied);
   h_RVI=iRVI(Symbol(),Period(),RVI_PeriodRVI);
   h_Stoch=iStochastic(Symbol(),Period(),Stoch_PeriodK,Stoch_PeriodD,Stoch_PeriodSlow,MODE_SMA,Stoch_Applied);
   h_WPR=iWPR(Symbol(),Period(),WPR_PeriodWPR);

   if(h_AC==INVALID_HANDLE || h_BearsPower==INVALID_HANDLE || 
      h_BullsPower==INVALID_HANDLE || h_AO==INVALID_HANDLE || 
      h_CCI==INVALID_HANDLE || h_DeMarker==INVALID_HANDLE || 
      h_FrAMA==INVALID_HANDLE || h_MACD==INVALID_HANDLE || 
      h_RSI==INVALID_HANDLE || h_RVI==INVALID_HANDLE || 
      h_Stoch==INVALID_HANDLE || h_WPR==INVALID_HANDLE)
     {
      Print("Error creating indicators");
      return(1);
     }

   ArraySetAsSeries(buf_AC,true);
   ArraySetAsSeries(buf_BearsPower,true);
   ArraySetAsSeries(buf_BullsPower,true);
   ArraySetAsSeries(buf_AO,true);
   ArraySetAsSeries(buf_CCI,true);
   ArraySetAsSeries(buf_DeMarker,true);
   ArraySetAsSeries(buf_FrAMA,true);
   ArraySetAsSeries(buf_MACD_m,true);
   ArraySetAsSeries(buf_MACD_s,true);
   ArraySetAsSeries(buf_RSI,true);
   ArraySetAsSeries(buf_RVI_m,true);
   ArraySetAsSeries(buf_RVI_s,true);
   ArraySetAsSeries(buf_Stoch_m,true);
   ArraySetAsSeries(buf_Stoch_s,true);
   ArraySetAsSeries(buf_WPR,true);


   FileHandle=FileOpen("MasterData2.csv",FILE_ANSI|FILE_WRITE|FILE_CSV|FILE_SHARE_READ,';');
   if(FileHandle!=INVALID_HANDLE)
     {
      Print("FileOpen OK");
      //--- saving names of the variables in the first line of the file for convenience of working with it
      FileWrite(FileHandle,"Time","Hour","Price","AC","dAC","Bears","dBears","Bulls","dBulls",
                "AO","dAO","CCI","dCCI","DeMarker","dDeMarker","FrAMA","dFrAMA","MACDm","dMACDm",
                "MACDs","dMACDs","MACDms","dMACDms","RSI","dRSI","RVIm","dRVIm","RVIs","dRVIs",
                "RVIms","dRVIms","Stoch_m","dStoch_m","Stoch_s","dStoch_s","Stoch_ms","dStoch_ms",
                "WPR","dWPR");
     }
   else
     {
      Print("FileOpen action failed. Error",GetLastError());
      ExpertRemove();
     }
//---
   return(0);
  }

Le gestionnaire d’évènement OnTick()identifie les nouvelles barres et sauvegarde les données dans le fichier.

Le comportement des prix sera déterminé par la dernière barre complétée et les valeurs des indicateurs seront obtenues à partir de la barre précédant la dernière barre complétée. Outre la valeur absolue de l'indicateur, nous devons sauvegarder la différence entre la valeur absolue et la valeur précédente afin de voir la direction du changement. Les noms de ces variables dans l'exemple fourni auront le préfixe "d".

Pour les indicateurs de ligne de signal, il est nécessaire de sauvegarder la différence entre la ligne principale et la ligne de signal ainsi que sa dynamique. De plus, enregistrez l'heure de la nouvelle barre et la valeur horaire correspondante. Cela peut être utile pour filtrer les données dans le temps.

Ainsi, nous prendrons en compte 37 indicateurs pour créer un modèle de prévision permettant d'estimer le mouvement des prix.

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//| Monitoring the market situation and saving values                |
//| of the indicators into the file at the beginning of every new bar|
//+------------------------------------------------------------------+
void OnTick()
  {
//--- declaring a static variable of datetime type
   static datetime Prev_time;

//--- it will be used to store prices, volumes and spread of each bar
   MqlRates mrate[];
   MqlTick tickdata;

   ArraySetAsSeries(mrate,true);    
   
//--- obtaining the recent quotes
   if(!SymbolInfoTick(_Symbol,tickdata))
     {
      Alert("Quote update error - error: ",GetLastError(),"!!");
      return;
     }
///--- copying data of the last 4 bars
   if(CopyRates(_Symbol,_Period,0,4,mrate)<0)
     {
      Alert("Historical quote copy error - error: ",GetLastError(),"!!");
      return;
     }
//--- if both time values are equal, there is no new bar
   if(Prev_time==mrate[0].time) return;
//--- saving the time in the static variable 
   Prev_time=mrate[0].time;
 
//--- filling the arrays with values of the indicators
   bool copy_result=true;
   copy_result=copy_result && FillArrayFromBuffer1(buf_AC,h_AC,4);
   copy_result=copy_result && FillArrayFromBuffer1(buf_BearsPower,h_BearsPower,4);
   copy_result=copy_result && FillArrayFromBuffer1(buf_BullsPower,h_BullsPower,4);
   copy_result=copy_result && FillArrayFromBuffer1(buf_AO,h_AO,4);
   copy_result=copy_result && FillArrayFromBuffer1(buf_CCI,h_CCI,4);
   copy_result=copy_result && FillArrayFromBuffer1(buf_DeMarker,h_DeMarker,4);
   copy_result=copy_result && FillArrayFromBuffer1(buf_FrAMA,h_FrAMA,4);
   copy_result=copy_result && FillArraysFromBuffers2(buf_MACD_m,buf_MACD_s,h_MACD,4);
   copy_result=copy_result && FillArrayFromBuffer1(buf_RSI,h_RSI,4);
   copy_result=copy_result && FillArraysFromBuffers2(buf_RVI_m,buf_RVI_s,h_RVI,4);
   copy_result=copy_result && FillArraysFromBuffers2(buf_Stoch_m,buf_Stoch_s,h_Stoch,4);
   copy_result=copy_result && FillArrayFromBuffer1(buf_WPR,h_WPR,4);

//--- checking the accuracy of copying the data
   if(!copy_result==true)
     {
      Print("Data copy error");
      return;
     }

//--- saving to the file the price movement within the last two bars 
//--- and the preceding values of the indicators 
   if(FileHandle!=INVALID_HANDLE)
     {
      MqlDateTime tm;
      TimeCurrent(tm);
      uint Result=0;
      Result=FileWrite(FileHandle,TimeToString(TimeCurrent()),tm.hour, // time of the bar
                       (mrate[1].close-mrate[2].close)/_Point,       // difference between the closing prices of the last two bars 
                       buf_AC[2],buf_AC[2]-buf_AC[3],                // value of the indicator on the preceding bar and its dynamics
                       buf_BearsPower[2],buf_BearsPower[2]-buf_BearsPower[3],
                       buf_BullsPower[2],buf_BullsPower[2]-buf_BullsPower[3],
                       buf_AO[2],buf_AO[2]-buf_AO[3],
                       buf_CCI[2],buf_CCI[2]-buf_CCI[3],
                       buf_DeMarker[2],buf_DeMarker[2]-buf_DeMarker[3],
                       buf_FrAMA[2],buf_FrAMA[2]-buf_FrAMA[3],
                       buf_MACD_m[2],buf_MACD_m[2]-buf_MACD_m[3],
                       buf_MACD_s[2],buf_MACD_s[2]-buf_MACD_s[3],
                       buf_MACD_m[2]-buf_MACD_s[2],buf_MACD_m[2]-buf_MACD_s[2]-buf_MACD_m[3]+buf_MACD_s[3],
                       buf_RSI[2],buf_RSI[2]-buf_RSI[3],
                       buf_RVI_m[2],buf_RVI_m[2]-buf_RVI_m[3],
                       buf_RVI_s[2],buf_RVI_s[2]-buf_RVI_s[3],
                       buf_RVI_m[2]-buf_RVI_s[2],buf_RVI_m[2]-buf_RVI_s[2]-buf_RVI_m[3]+buf_RVI_s[3],
                       buf_Stoch_m[2],buf_Stoch_m[2]-buf_Stoch_m[3],
                       buf_Stoch_s[2],buf_Stoch_s[2]-buf_Stoch_s[3],
                       buf_Stoch_m[2]-buf_Stoch_s[2],buf_Stoch_m[2]-buf_Stoch_s[2]-buf_Stoch_m[3]+buf_Stoch_s[3],
                       buf_WPR[2],buf_WPR[2]-buf_WPR[3]);

      if(Result==0)
        {
         Print("FileWrite action error ",GetLastError());
         ExpertRemove();
        }
     }

  }

Après le démarrage de l' EA, le fichier MasterData.CSV sera créé dans terminal_data_directory/MQL5/Files. Lors du démarrage de l' EA dans le testeur, il se trouvera dans terminal_data_directory/tester/Agent-127.0.0.1-3000/MQL5/Files. Le fichier tel qu'obtenu peut déjà être utilisé dans Statistica.

Un exemple d'un tel fichier peut être trouvé dans MasterData.CSV. Les données ont été collectées pour l' EURUSD S1 du 1er août 2011 au 1er octobre 2011.

Pour ouvrir le fichier dans Statistica, procédez comme suit.

  • Dans Statistica, allez dans le menu Fichier > Ouvrir, sélectionnez le type de fichier : Fichiers de données et ouvrez votre fichier.
  • Laissez Delimited dans la fenêtre Text File Import Type et cliquez sur OK.
  • Activez les éléments soulignés dans la fenêtre ouverte.
  • N'oubliez pas de mettre le point décimal dans le champ Caractère séparateur décimal peut importe qu’il y soit déjà ou pas..

Fig. 1. Importation du fichier dans Statistica

Fig. 1. Importation du fichier dans Statistica

Cliquez sur OK et le tableau contenant nos données est prêt.

Fig. 2. Base de données dans Statistica

Fig. 2. Base de données dans Statistica

Créez maintenant la variable de regroupement sur la base de la variable Prix.

Nous distinguerons quatre groupes en fonction du comportement des prix :

  1. Plus de 200 points à la baisse ;
  2. Moins de 200 points à la baisse ;
  3. Moins de 200 points à la hausse ;
  4. Plus de 200 points à la hausse.

Pour ajouter une nouvelle variable, cliquez avec le bouton droit sur l'en-tête de la colonne AC et sélectionnez l'option Ajouter une variable.

Fig. 3. Ajout d’une nouvelle variable

Fig. 3. Ajout d'une nouvelle variable

Précisez le nom "Groupe" de la nouvelle variable dans la fenêtre ouverte et ajoutez la formule de conversion de la variable Prix en nombre de groupes.

La formule est la suivante :

=iif(v3<=-200;1;0)+iif(v3<0 et v3>-200;2;0)+iif(v3>0 et v3<200;3;0)+iif(v3>= 200;4;0)


Fig. 4. Description de la variable

Fig. 4. Description de la variable

Le fichier est prêt pour l'analyse discriminante. Un exemple de ce fichier se trouve dans MasterData.STA.


2.2. Sélection des meilleures variables

Exécutez l'analyse discriminante (Statistiques-> Techniques exploratoires multivariées-> Analyse discriminante).

Fig. 5. Exécution de l’analyse discriminante

Fig. 5. Exécution de l'analyse discriminante

Cliquez sur Variables dans la fenêtre ouverte.

Sélectionnez la variable de regroupement dans le premier champ et toutes les variables sur la base desquelles le regroupement sera effectué - dans le deuxième champ.

Dans notre cas, la variable Groupe est indiquée dans le premier champ et toutes les variables obtenues à partir des indicateurs ainsi que la variable supplémentaire Heure (l'heure de réception des données) - dans le deuxième champ.

Fig. 6. Selection des variables

Fig. 6. Sélection des variables

Cliquez sur le bouton Sélectionner des cas (Figure 8). Une fenêtre s'ouvrira pour la sélection des cas (lignes de données) qui seront utilisées dans l'analyse discriminante. Activez les éléments comme indiqué dans la capture d'écran ci-dessous (Figure 7).

Seuls les 700 premiers cas seront utilisés pour l'analyse. Les autres seront ensuite utilisés pour tester le modèle prognostique résultant. Les nombres de cas sont définis via la variable V0. En spécifiant les cas de cette manière, nous définissons un échantillon des données d'apprentissage pour DA.

Cliquez ensuite sur OK.

Fig. 7. Définition de l’échantillon d’apprentissage

Fig. 7. Définir l'échantillon d'apprentissage

Choisissons maintenant les groupes pour lesquels notre modèle prognostique sera construit.

Il y a un problème qui exige notre attention. L'un des points faibles de DA est la sensibilité aux données aberrantes. Des événements rares mais puissants - dans notre cas, les pics de prix - peuvent fausser le modèle. Par exemple, suite aux nouvelles inattendues, le marché a réagi par des mouvements importants durant quelques heures. Les valeurs des indicateurs techniques étaient dans ce cas de peu d'importance dans les prévisions mais elles seront considérées comme hautement importantes dans DA car il y a eu un changement de prix marqué. Il est donc conseillé de vérifier les données pour les valeurs aberrantes avant d'exécuter DA.

Afin d'exclure les valeurs aberrantes de notre exemple, nous analyserons uniquement les groupes 2 et 3. Comme il y a eu un changement de prix substantiel dans les groupes 1 et 4, il peut y avoir des valeurs aberrantes dans les valeurs des indicateurs.

Alors, cliquez sur Codes pour la variable de regroupement (Figure 8). Et indiquez le nombre de groupes pour l'analyse.

Fig. 8. Selection des groupes pour l’analyse

Fig. 8. Sélection des groupes pour l'analyse 


Activez les Options Avancées. Il permettra l'analyse par étapes qui sera nécessaire à un stade ultérieur.

Pour exécuter DA, cliquez sur OK.

Un message comme ci-dessous peut apparaître. Cela indique qu'une des variables sélectionnées est excessive et substantiellement conditionnée par d'autres variables, par exemple c'est la somme de deux autres variables.

Ceci est tout à fait possible pour le flux de données obtenu à partir des indicateurs. La présence de telles variables compromet la qualité de l'analyse. Et elles seront enlevées. Pour ce faire, retournez à la fenêtre de sélection des variables pour DA et identifiez les variables excessives en les ajoutant une à une et en exécutant DA encore et encore.


Fig. 9.Message de valeur à faible tolérance

Fig. 9. Message de valeur à tolérance faible


Ensuite, une fenêtre de sélection de la méthode DA s'ouvrira (Figure 10). Sélectionnez Avancer pas à pas dans la liste déroulante. Étant donné que les valeurs des indicateurs ont peu d'importance prognostique, l'utilisation de l'analyse par étapes est préférée. Et le modèle de discrimination de groupe sera automatiquement créé par étapes.

Plus précisément, à chaque étape, toutes les variables seront examinées et évaluées pour déterminer laquelle contribuera le plus à la discrimination entre les groupes. Cette variable sera alors comprise dans le modèle et le processus recommencera. Toutes les variables qui discriminent le mieux entre l'échantillon de données seront sélectionnées de la manière particulière étape par étape.


Fig. 10. Méthode de sélection

Fig. 10. Sélection de la méthode

Cliquez sur OK et une fenêtre s'ouvrira vous informant que DA a été achevée avec succès.

Fig. 11.Fenêtre des résultats l’ AD

Fig. 11. Fenêtre des résultats de l' AD


Cliquez sur Résumé : Variables dans le modèle pour voir la liste des variables comprises dans le modèle suite à l'analyse pas à pas. Ces variables permettent de mieux discriminer entre nos groupes. A noter que les variables assurant une précision de discrimination supérieure à 95 % (p<0,05) sont affichées en rouge. La précision de la discrimination par rapport aux autres variables est plus faible. Le modèle ne doit inclure que les variables assurant une précision de discrimination d'au moins 95 %.

Cependant, selon la "règle d'or" des statistiques, seules les variables assurant une précision supérieure à 95 % doivent être utilisées. Nous exclurons donc de l'analyse toutes les variables qui ne sont pas affichées en rouge. Ce sont dBulls, Bulls, FrAMA, Hour. Pour exclure ces variables, retournez dans la fenêtre où l'analyse pas à pas a été sélectionnée et spécifiez-les dans la fenêtre qui s'ouvrira après avoir cliqué sur Variables.

Répétez l'analyse. En cliquant sur le Résumé : Variables dans le modèle, nous verrons à nouveau que trois autres variables apparaissent désormais comme peu importantes. Ce sont DeMarker, Stoch_s, AO. Nous les exclurons également de l'analyse.

En conséquence, nous aurons un modèle qui comporte les variables assurant une discrimination précise entre les groupes (p<0,01).


Fig. 12. Variables comprises dans le modèle

Fig. 12. Variables comprises dans le modèle


Ainsi, seules sept des 37 variables sont restées dans notre exemple comme étant les plus importantes pour la prévision.

Cette approche permet de sélectionner les indicateurs clés sur la base d'une analyse technique pour l’élaboration ultérieure de systèmes de trading personnalisés, y compris ceux qui utilisent des réseaux neuronaux.


2.3. Analyse et Test du Modèle Résultant à l'Aide de Données de Test

Au terme de l'AD, nous avons obtenu le modèle prognostique et les résultats de son application aux données d'entraînement.

Pour voir les résultats de discrimination de modèle et de groupe, ouvrez l'onglet Classification.

Fig. 13. Onglet de classification

Fig. 13. Onglet Classement

Cliquez sur matrice de classification pour voir le tableau comprenant les résultats de l'application du modèle aux données d'apprentissage.

Les lignes montrent les classifications observées. Les colonnes comportent les classifications prédites en fonction du modèle calculé. Les cellules qui comportent des prédictions précises sont marquées en vert et les prédictions inexactes apparaissent en rouge.

La première colonne affiche la précision de la prédiction en %.

Fig. 14.Classification des données d’apprentissage

Fig. 14. Classification des données de formation

La précision de la prédiction (Total) à l'aide des données d'apprentissage s'est avérée être de 60%.

Testons le modèle à l'aide de données de test. Pour ce faire, cliquez sur Sélectionner (Figure 13) et indiquez v0>700 après quoi le modèle sera vérifié dans la plage de données qui n'a pas été utilisée pour créer le modèle.

Nous aurons les éléments suivants :


Fig. 15.Classification des données du test

Fig. 15. Classification des données de test

La précision globale de la prédiction à l'aide de l'échantillon de test s'est avérée être à peu près au même niveau, atteignant 55%. C'est un assez bon niveau pour le marché FOREX.


2.4. Élaborer un système de trading

Le modèle prognostique en DA est basé sur le système d'équations linéaires selon lequel les valeurs des indicateurs sont classées dans un groupe ou dans l'autre.

Pour voir les descriptions de ces fonctions, allez dans l'onglet Classification dans la fenêtre des résultats DA (Figure 13) et cliquez sur fonctions de classification. Vous verrez une fenêtre avec un tableau contenant les coefficients des équations discriminantes.

Fig. 16. Équations discriminantes

Fig. 16. Équations discriminantes

Élaborons un système de deux équations sur la base des données du tableau :

Group2 = 157.17*AC - 465.64*Bears + 82.24*dBears - 0.006*dCCI + 761.06*dFrAMA + 2418.79*dMACDm + 0.01*dStoch_ms - 1.035
Groupe3 = 527,11*AC - 641,97*Ours + 271,21*dOurs - 0,002*dCCI + 1483,47*dFrAMA - 726,16*dMACDm - 0,034*dStoch_ms - 1,353

Pour utiliser ce modèle, insérez les valeurs de l'indicateur dans les équations et calculez la valeur du Groupe.

La prévision concernera le groupe dont la valeur du Groupe est la plus élevée. Selon notre exemple, si la valeur de Group2 est supérieure à celle de Group3, il est prévu que dans l'heure qui suit, le graphique des prix baissera très probablement. La prévision s'avérera tout à fait opposée dans le cas où la valeur du Groupe3 est supérieure à celle du Groupe2.

Il est à noter que les valeurs des indicateurs et la période d'analyse dans notre exemple ont été choisies plutôt aléatoirement. Mais même cette quantité de données était suffisante pour démontrer le potentiel et la puissance de l' AD.


Conclusion

L'analyse discriminante est un outil utile tel qu'appliqué au marché FOREX. Il peut être utilisé pour rechercher et vérifier l'ensemble optimal de variables permettant de classer les valeurs des indicateurs observés dans diverses prévisions. Il peut également être utilisé pour construire des modèles de pronostic.

Les modèles créés à la suite de l'analyse discriminante peuvent facilement être intégrés dans des EA qui ne nécessitent pas une expérience considérable en développement. L'analyse discriminante en elle-même est également relativement facile à utiliser. Le didacticiel étape par étape ci-dessus suffirait à analyser vos propres données.

Davantage sur l’analyse discriminante peut être disponible dans la section pertinente dumanuel électronique.


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

Fichiers joints |
masterdata.zip (662.43 KB)
da_demo.mq5 (12.36 KB)
Prévision de séries chronologiques à l'aide du lissage exponentiel (suite) Prévision de séries chronologiques à l'aide du lissage exponentiel (suite)
Cet article vise à faire évoluer l'indicateur créé précédemment et traite brièvement d'une méthode d'estimation des intervalles de confiance des prévisions à l'aide du lancement et des quantiles. En conséquence, nous obtiendrons l'indicateur de prévision et les scripts à utiliser pour estimer l'exactitude des prévisions.
Analyse des Paramètres Statistiques des Indicateurs Analyse des Paramètres Statistiques des Indicateurs
L’analyse technique met largement en œuvre les indicateurs montrant les cotations de base « plus clairement » et permettant aux traders d’effectuer une analyse et de prévoir l’évolution des prix du marché. Il est tout à fait évident qu’il n’y a aucun sens à utiliser les indicateurs, et encore moins les appliquer dans la création de systèmes de trading, à moins que nous ne puissions résoudre les problèmes liés à la transformation des cotations initiales et la crédibilité des résultats obtenus. Dans cet article, nous montrons qu’il existe des réels motifs pour une telle conclusion.
Création d'Expert Advisors à l'aide de l'Assistant visuel d'Expert Advisor Création d'Expert Advisors à l'aide de l'Assistant visuel d'Expert Advisor
Expert Advisor Visual Wizard pour MetaTrader 5 fournit un environnement graphique très intuitif avec un ensemble complet de blocs de trading prédéfinis qui vous permettent de concevoir des Expert Advisors en quelques minutes. L'approche cliquer, glisser-déposer d'Expert Advisor Visual Wizard vous permet de créer des représentations visuelles des stratégies et des signaux de trading forex comme vous le feriez avec un crayon et du papier. Ces diagrammes de trading sont automatiquement analysés par le générateur de code MQL5 de Molanis qui les transforme en Expert Advisors prêts à l'emploi. L'environnement graphique interactif simplifie le processus de conception et élimine le besoin d'écrire du code MQL5.
Prévision de Séries Chronologiques à l'Aide du Lissage Exponentiel Prévision de Séries Chronologiques à l'Aide du Lissage Exponentiel
L'article familiarise le lecteur avec les modèles de lissage exponentiel utilisés dans la prévision à court terme des séries chronologiques. De plus, il aborde les questions liées à l'optimisation et à l'estimation des résultats prévisionnels et fournit quelques exemples de scripts et d'indicateurs. Cet article sera utile pour une première prise de connaissance des principes de prévision à partir de modèles de lissage exponentiel.