L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 935

 
forexman77:

Comment identifier les "prédicteurs de bruit" ? J'ai essayé de sélectionner par pertinence et de supprimer de cette manière, le résultat s'est aggravé.

Il y a eu beaucoup de recommandations ici.

J'utilise un schéma très simple, je ne cherche pas la précision, mais c'est très clair.

Je prends un prédicteur - un vecteur - et le divise en deux parties : une partie se réfère à une classe de la cible, et l'autre partie se réfère à une autre classe de la cible. Ensuite, je construis des histogrammes de chaque partie et je les compare : s'ils coïncident, alors il s'agit de bruit, s'ils divergent, alors ils ont un certain pouvoir prédictif. S'ils divergent complètement, alors ils ont une capacité prédictive de 100% (je ne l'ai pas vu). L'intersection des histogrammes est une erreur de classification qui ne peut pas être surmontée en principe.

J'ai posté les graphiques ici, avec le rsi comme prédicteur. Il est possible de faire une mesure de la divergence des histogrammes.


C'est du rattle - avec un coût nul, vous pouvez vérifier un nombre arbitraire de prédicteurs par rapport à un grand nombre de variables cibles, ce que je fais parfois par courtoisie envers les personnes particulièrement paresseuses.

 
Aleksey Vyazmikin:

La lecture de votre indicateur n'est pas claire.

Ce n'est pas un indicateur, c'est une forêt aléatoire...

Vous pouvez évaluer les modèles par OOB, RMS, etc. mais vous ne pouvez pas comprendre le résultat du modèle.

Ce n'est qu'après avoir combiné le résultat d'une forêt aléatoire avec un graphique de prix que les particularités du comportement du modèle peuvent être détectées.

Graphique généré à l'aide de https://github.com/Roffild/RoffildLibrary/blob/master/Include/Roffild/ToIndicator.mqh

 
Dr. Trader:

Filtre_02 2016 arr_Buy

La classe "1" dépasse même la classe "0" en nombre, il y a donc moins de fausses entrées par rapport à avant. Essayez cet arbre dans l'EA s'il vous plaît ? Je suis moi-même curieux de savoir ce que le graphique des bénéfices va montrer.


y_pred
y_true01
0
1


La première colonne avec des chiffres est non filtrée, la seconde est filtrée.

Peut-être que je me suis trompé dans la logique de l'arbre ?


void FilterTree()
{
int arr_DonProc=DonProcf();
int arr_DonProcVisota=DonProcVisotaf();
int arr_DonProc_M15=DonProc_M15f();
int Level_Support_D1=LevlSupportf(PERIOD_D1);
int Level_Support_W1=LevlSupportf(PERIOD_W1);
int arr_Regressor=RegressorP();
bool BlockBuy=false;

if (arr_DonProc>=2.5)
   {
   if (arr_DonProcVisota>=7.5)
      {
         BlockBuy=true;      
      }
   else
      {
       if (arr_DonProc>=6.5)
          { 
            if (Level_Support_D1>=-2.5)
            {
               if (Level_Support_W1<=1.5)BlockBuy=true;                  
            }          
          }
       else
          {
            if (arr_Regressor>=2.5)
               {
                  if(arr_DonProc_M15>=4.5)BlockBuy=true;
               
               }
            else
               {
                  if(Level_Support_D1<1.5)
                  {
                     if(Level_Support_W1<-1.5)BlockBuy=true;
                  }
               }
          }         
      }   
   
   }

if (BlockBuy==true)BuyNow=false;
SellNow=false;
}
 
Roffild:

Ce n'est pas un indicateur, mais une forêt aléatoire...

Vous pouvez évaluer les modèles par OOB, RMS, etc. mais vous ne pouvez pas comprendre le résultat du modèle.

Ce n'est qu'après avoir superposé le résultat de la forêt aléatoire sur le graphique des prix que les particularités du comportement du modèle sont révélées.

Graphique généré à l'aide de https://github.com/Roffild/RoffildLibrary/blob/master/Include/Roffild/ToIndicator.mqh

Ce n'est pas clair, vous n'avez clairement pas la forêt, mais l'indicateur - peut-être le fait qu'il a traité une certaine logique de la "forêt" et la sortie, mais il ne devient pas non plus un indicateur.

Alors, que vouliez-vous montrer, comment lire les lectures, que donnent-elles ?

 
Aleksey Vyazmikin:


La première colonne avec les chiffres est non filtrée et la deuxième colonne avec un filtre.

Peut-être que je me suis trompé dans la logique de l'arbre ?


Il y a eu une erreur.

if (BlockBuy==false)BuyNow=false;


 
Aleksey Vyazmikin:

Ce n'est pas clair, vous n'avez clairement pas une forêt mais un indicateur - peut-être que le point est qu'il a traité une certaine logique de la "forêt" et l'a déduite, mais cela ne fait pas de lui un indicateur.

Alors, que vouliez-vous montrer, comment lire les lectures, que donnent-elles ?

CDForest::DFProcess(forest1, netinputs, netoutputs);
indicSymbol.buffer(netoutputs[1] * 100.0, 0);

CDForest::DFProcess(forest2, netinputs, netoutputs);
indicSymbol.buffer(netoutputs[1] * 100.0, 1);
Si vous ne croyez pas que le graphique est une vraie forêt, alors la notion de forêt est clairement fausse...
 
Roffild:
Si vous ne croyez pas que le graphique est une vraie forêt, alors la notion de forêt est clairement fausse...

Qu'est-ce que cela a à voir avec une question de foi ? Je vois des gribouillis dans le graphique - et je ne comprends pas comment les interpréter - tout.

 

Dr Trader, en général, il faut remonter plus haut dans l'arbre, il y a très peu d'informations pour prendre une décision.

 
Aleksey Vyazmikin:

La première colonne de chiffres est sans filtre et la seconde avec filtre.

Je vois. L'arbre n'a pas pu apprendre à filtrer correctement, de sorte que le résultat n'était pas bien meilleur avec le filtrage, juste moins de transactions. En gros, j'ai filtré les bons et les mauvais échanges au hasard,

J'ai formé l'arbre sur 2015 seulement pour Malovhodov.
Filter_02 et mnogovhodov_02 ont été entraînés pour 2016, il est préférable de comparer 2016 et 2017 dans le testeur (2017 - nouvelles données qui n'étaient pas du tout dans les archives, c'est le plus intéressant à voir).

 
Aleksey Vyazmikin:

Dr. Trader, en général vous devez ramifier davantage l'arbre, il y a très peu d'informations pour prendre une décision.

J'ai constaté qu'un embranchement supplémentaire conduit à un surajustement. Pour une meilleure précision, nous devrions passer à des modèles plus complexes - forestiers ou neuroniques.

Il est toujours possible d'obtenir une précision de 100 % sur les données de formation, mais à quoi bon si un tel arbre n'échoue que sur les nouvelles données. Je veux enseigner un tel modèle qui sera capable de montrer presque le même résultat sur les nouvelles données que sur les données d'entraînement.