Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 935

 
forexman77:

¿Cómo identificar los "predictores de ruido"? Intenté seleccionar por relevancia y eliminar de esta manera, el resultado empeoró.

Se han hecho muchas recomendaciones aquí.

Utilizo un esquema muy sencillo, no busco la exactitud, pero es muy claro.

Tomo un predictor -un vector- y lo divido en dos partes: una parte se refiere a una clase del objetivo, y la otra parte se refiere a otra clase del objetivo. Luego construyo histogramas de cada parte y los comparo: si coinciden, entonces son ruido, si divergen, entonces tienen cierto poder predictivo. Si divergen completamente, entonces tienen una capacidad de predicción del 100% (no lo he visto). La intersección de los histogramas es un error de clasificación que en principio no se puede superar.

He publicado los gráficos aquí, tenía rsi como el predictor. Es posible hacer una medida de la divergencia de los histogramas.


Esto es un traqueteo - con un coste cero puedes comprobar un número arbitrario de predictores contra un gran número de variables objetivo, lo que a veces hago como cortesía a los especialmente perezosos.

 
Aleksey Vyazmikin:

No está claro cómo leer su indicador.

No es un indicador, es un bosque aleatorio...

Puedes evaluar los modelos por OOB, RMS, etc. pero no puedes entender el resultado del modelo.

Sólo después de combinar el resultado de un bosque aleatorio con un gráfico de precios se pueden detectar las peculiaridades del comportamiento del modelo.

Gráfico generado mediante https://github.com/Roffild/RoffildLibrary/blob/master/Include/Roffild/ToIndicator.mqh

 
Dr. Trader:

Filtro_02 2016 arr_Buy

La clase "1" supera incluso a la "0" en número, por lo que hay menos entradas falsas en comparación con las anteriores. Prueba este árbol en el EA, por favor. Yo mismo tengo curiosidad por saber qué mostrará el gráfico de beneficios.


y_pred
y_true01
0
1


La primera columna con dígitos está sin filtrar, la segunda está filtrada

¿Quizá me he equivocado en la lógica del árbol?


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:

Esto no es un indicador, sino un bosque aleatorio...

Puedes evaluar los modelos por OOB, RMS, etc. pero no puedes entender el resultado del modelo.

Sólo después de superponer el resultado del bosque aleatorio en el gráfico de precios se revelan las peculiaridades del comportamiento del modelo.

Gráfico generado mediante https://github.com/Roffild/RoffildLibrary/blob/master/Include/Roffild/ToIndicator.mqh

No está claro, usted tiene claramente no el bosque, pero el indicador - tal vez el hecho de que ha procesado alguna lógica del "bosque" y la salida, pero no se convierte en no un indicador.

¿Qué querías mostrar, cómo leer las lecturas, qué dan?

 
Aleksey Vyazmikin:


La primera columna con números está sin filtrar y la segunda columna con un filtro

¿Quizá me he equivocado en la lógica del árbol?


Hubo un error.

if (BlockBuy==false)BuyNow=false;


 
Aleksey Vyazmikin:

No está claro, claramente no tienes un bosque ahí sino un indicador - tal vez el punto es que procesó alguna lógica de "bosque" y lo dedujo, pero eso no hace que no sea un indicador.

Entonces, ¿qué querías mostrar, cómo leer las lecturas, qué dan?

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 no crees que el gráfico es un bosque real, entonces la noción de bosques es claramente errónea...
 
Roffild:
Si no crees que el gráfico es un bosque real, entonces la noción de bosques es claramente errónea...

¿Qué tiene que ver esto con una cuestión de fe? Veo garabatos en el gráfico -y no entiendo cómo interpretarlos- todo.

 

Dr. Trader, en general hay que ramificar más el árbol, hay muy poca información para tomar una decisión.

 
Aleksey Vyazmikin:

La primera columna con números es sin filtro y la segunda con filtro

Ya veo. El árbol no pudo aprender a filtrar correctamente, por lo que el resultado no fue mucho mejor con el filtrado, sólo menos tratos. Básicamente filtró algunos de los buenos oficios y algunos de los malos al azar,

Entrené el árbol en 2015 sólo para malovhodov.
Filter_02 y mnogovhodov_02 fueron entrenados para 2016, es mejor comparar 2016 y 2017 en el probador (2017 - nuevos datos que no estaban en el archivo en absoluto, eso es lo más interesante de ver).

 
Aleksey Vyazmikin:

Dr. Trader, en general hay que ramificar más el árbol, hay muy poca información para tomar una decisión.

He comprobado que una mayor ramificación conduce a un sobreajuste. Para mejorar la precisión, deberíamos pasar a modelos más complejos: forestales o neuronales.

Se puede seguir ramificando con una precisión del 100% en los datos de entrenamiento, pero de qué sirve si dicho árbol sólo fallará en los datos nuevos. Quiero enseñar un modelo que sea capaz de mostrar casi el mismo resultado en los nuevos datos que en los datos de entrenamiento.

Razón de la queja: