Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 935

 
forexman77:

Como identifico os "preditores de ruído"? Tentando selecionar por relevância e removendo desta forma, o resultado ficou pior.

Tem havido muitas recomendações sobre este assunto.

Eu uso um esquema muito simples, não estou à procura de precisão, mas é muito claro.

Pego num preditor - um vector - e divido-o em duas partes: uma parte refere-se a uma classe do alvo, e a outra parte refere-se a outra classe do alvo. Depois construo histogramas de cada peça e comparo-os: se coincidem, são ruído, se divergem, têm algum poder de previsão. Se eles divergem completamente, então eles têm 100% de capacidade de previsão (ainda não a viram). A intersecção de histogramas é um erro de classificação que, em princípio, não pode ser superado.

Eu coloquei os gráficos aqui, tinha o rsi como o preditor. É possível fazer uma medida da divergência dos histogramas.


Isto é um barulho - com custo zero você pode verificar um número arbitrário de preditores contra um grande número de variáveis-alvo, o que às vezes faço como cortesia para os especialmente preguiçosos.

 
Aleksey Vyazmikin:

Não está claro como ler o seu indicador.

Não é um indicador, é uma floresta aleatória...

Você pode avaliar modelos por OOB, RMS, etc., mas não consegue entender o resultado do modelo.

Somente após combinar o resultado de uma floresta aleatória com uma tabela de preços é que as peculiaridades de comportamento do modelo podem ser detectadas.

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

 
Dr. Trader:

Filter_02 2016 arr_Buy

A classe "1" até excede "0" em número, portanto há menos entradas falsas em comparação com antes. Experimente esta árvore na EA, por favor? Eu próprio estou curioso sobre o que o gráfico de lucro vai mostrar.


y_pred
y_true01
0
1


A primeira coluna com dígitos não é filtrada, a segunda é filtrada

Talvez eu tenha estragado a lógica da árvore?


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:

Isto não é um indicador, mas uma floresta aleatória...

Você pode avaliar modelos por OOB, RMS, etc., mas não consegue entender o resultado do modelo.

Só depois de sobrepor o resultado da floresta aleatória na tabela de preços é que as peculiaridades do comportamento do modelo são reveladas.

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

Não está claro, você claramente não tem a floresta, mas o indicador - talvez o fato de ter processado alguma lógica da "floresta" e produzi-la, mas não se torna um indicador.

Então o que querias mostrar, como ler as leituras, o que é que elas dão?

 
Aleksey Vyazmikin:


A primeira coluna com números não é filtrada e a segunda coluna com um filtro

Talvez eu tenha estragado a lógica da árvore?


Houve um erro.

if (BlockBuy==false)BuyNow=false;


 
Aleksey Vyazmikin:

Não está claro, você claramente não tem uma floresta lá, mas um indicador - talvez a questão seja que ele processou alguma lógica "florestal" e a deduziu, mas isso não faz com que não seja um indicador.

Então, o que você queria mostrar, como ler as leituras, o que elas dão?

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

CDForest::DFProcess(forest2, netinputs, netoutputs);
indicSymbol.buffer(netoutputs[1] * 100.0, 1);
Se você não acredita que o gráfico é uma floresta real, então a noção de floresta está claramente errada...
 
Roffild:
Se você não acredita que o gráfico é uma floresta real, então a noção de floresta está claramente errada...

O que é que isto tem a ver com uma questão de fé? Eu vejo rabiscos no gráfico - e não entendo como interpretá-los - tudo.

 

Dr. Trader, em geral você tem que ramificar mais acima da árvore, há muito pouca informação para tomar uma decisão.

 
Aleksey Vyazmikin:

A primeira coluna com números é sem filtro e a segunda com filtro

Estou a ver. A árvore não conseguiu aprender a filtrar corretamente, então o resultado não foi muito melhor com a filtragem, apenas menos negócios. Basicamente filtraram algumas das boas e algumas das más profissões ao acaso,

Eu treinei a árvore em 2015 apenas para o Malovhodov.
Filter_02 e mnogovhodov_02 foram treinados para 2016, é melhor comparar 2016 e 2017 em testador (2017 - novos dados que não estavam em arquivo, que é o mais interessante de se ver).

 
Aleksey Vyazmikin:

Dr. Trader, em geral você precisa ramificar mais a árvore, há muito pouca informação para tomar uma decisão.

Descobri que mais ramificações levam a um excesso de equipamento. Para maior precisão, devemos mudar para modelos mais complexos - floresta ou neurônica.

Você ainda pode ramificar para 100% de precisão nos dados de treinamento, mas de que adianta se tal árvore só falhar em novos dados. Quero ensinar tal modelo que poderá mostrar quase o mesmo resultado nos novos dados que nos dados do treinamento.