Bibliotecas: Algoritmos RL - página 3

 
Maxim Dmitrievsky:

Haverá mais experimentos com diferentes variantes.....

Estou testando esses algoritmos com um conjunto de indicadores e uma mistura (indicadores + preços de fechamento). Se possível e de acordo com sua pesquisa, implemente a rejeição inicial de dados correlacionados, ou seja, verifique a correlação. Com seu método, dois indicadores próximos serão selecionados (se eles influenciarem o resultado o suficiente), embora um deles deva dar lugar a um indicador independente.

[Excluído]  
mov:

Estou testando esses algoritmos com um conjunto de indicadores e uma combinação (indicadores + preços de fechamento). Se for possível e estiver de acordo com sua pesquisa, implemente a rejeição inicial de dados correlacionados, ou seja, verifique a correlação. Com seu método, dois indicadores próximos serão selecionados (se influenciarem o resultado o suficiente), embora um deles deva dar lugar a um indicador independente.

Será possível experimentar. No momento, a versão do recursivo e do recursivo logístico (regressão logit em vez de RDF) implementa a seleção de incrementos de preço, ou seja, em uma determinada matriz de preditores de 1.000 preços de fechamento, por exemplo, ele divide a barra zero por cada valor de preço subsequente, obtendo assim um grande conjunto de incrementos com diferentes defasagens, e seleciona o melhor deles. Ou seja, alimentar osciladores diferentes, como momentum ou rsi, com períodos diferentes não faz muito sentido nesse caso

 
Maxim Dmitrievsky:

É melhor tentar...

Corrija-me se eu estiver errado em meu raciocínio (sobre preços):

Vários métodos postados usam algo como:

CDForest::DFBuildRandomDecisionForest(m,RDFpolicyMatrix.Size(),1,2,trees,r,RDFinfo,mRDF,mRep); 

Com seleção por erro mínimo. Isso pode ser visto como um teste de correlação com o resultado.

Digamos que haja um processo de onda (corredor, cunha, etc.). Se 100 valores em um período de uma hora são aproximadamente 4 dias, há uma grande probabilidade de que haja mais de uma onda no intervalo. Então, temos 2 (ou mais) pontos correlacionados. Se um deles influenciar fortemente o resultado, o segundo também passará nesse teste. E também há meias-ondas com correlação negativa. Como resultado, das dez leituras selecionadas para construção posterior, 2 ou 3 são independentes (o restante está fortemente correlacionado com elas e proporciona pouca melhoria no reconhecimento). É necessário selecionar primeiro as leituras que têm pouca correlação entre si (não é um problema calcular para todos os pares, mas como cortar um pedaço de presunto desse porco eu ainda não tenho muita ideia).

Como uma confirmação indireta, em manuais sérios, afirma-se que o método de tree bousting fornece um resultado alguns pontos percentuais menor do que uma floresta aleatória (bagging). No entanto, isso depende muito da implementação e dos algoritmos internos de construção de árvores (no resultado acima, ambos os métodos usaram o CART).

Como resultado, a eficiência de um método depende muito da seleção do período de teste. A propósito, a inclinação do canal não salvará completamente esse problema.
 

Para nos atualizarmos,

Talvez devêssemos usar a mesma regressão logit ou algum outro método em vez de calcular a média das leituras dos agentes? Acho que a teoria diz que isso funciona.

[Excluído]  
mov:

Atualização,

Talvez devêssemos usar a mesma regressão de logit ou algum outro método em vez de calcular a média das leituras dos agentes? Quero dizer, em teoria, é assim que funciona.

Você pode usar qualquer coisa, mas, puramente em teoria, algumas coisas não são óbvias e não está claro se vale a pena gastar tempo com elas (bem como com toda a abordagem em geral). Pelo menos será um manual sobre como não fazer isso :)

sobre a multicolinearidade dos preditores - concordo. É necessário criar uma matriz de covariância e fazer a seleção de acordo com ela.

 
Obrigado, estarei aguardando.
[Excluído]  
Igor Makanu:

Testei-o, minha impressão é ambígua, testei-o em um gráfico personalizado gerado pela função Weierstrass usando a fórmula.

Em teoria, nesse gráfico personalizado, o RandomForest deveria ter encontrado pontos de entrada muito próximos ao ZigZag ou, pelo menos, não ter ordens perdedoras, a periodicidade do TF H1 é claramente rastreável, mas o RF meio que encontrou esse padrão, mas as ordens perdedoras também estão presentes

testei anteriormente no MT4 com os mesmos dados o antigo GoldWarrior Expert Advisor (encontrado no fórum em inglês) - um consultor em ZigZag, no otimizador MT4 em todos os TFs até M15, encontra claramente padrões e exclusivamente em + todas as ordens.

Testei um Expert Advisor indicador no cruzamento de linhas de regressão (infelizmente, fiz o pedido, não posso fornecer o código), e esse Expert Advisor no otimizador encontrou rapidamente padrões na função Weierstrass.

Por que esses exemplos? - Se os métodos primitivos podem encontrar regularidades, então o aprendizado de máquina é ainda mais obrigado a encontrá-las.

com todo o respeito ao autor, mas o resultado é duvidoso, ou melhor, o exemplo de trabalho com o RandomForest é excelente. mas ainda há espaço para colocar seus esforços ;).

ZY: treinado de 2000/01/01 a 2001/01/01 testado de 2001/01/01 a 2002/01/01

ZY: script para gráfico personalizado anexado, biblioteca de símbolos em KB

Descobrindo Weierstrass em uma versão ligeiramente adaptada, todo o gráfico é oos. Não vi sentido em ir mais longe, pois já é óbvio. Mas me divertiu :)

não funcionará com o mercado, é claro. Obrigado pelo script, a propósito, o teste foi muito útil, porque eu não conseguia entender, a princípio, se havia erros na lógica; em cotações reais, os resultados são muito mais modestos


O modelo linear lida com a mesma facilidade, ou seja, para prever essa função, nem mesmo uma rede neural é necessária.


Negociações reversas, para verificar.

Quanto à presença ou ausência de negociações perdedoras, a pergunta é puramente retórica e uma compensação entre precisão e ajuste excessivo.

 
Maxim Dmitrievsky:

Obrigado pelo script, a propósito, a verificação foi muito útil, porque eu não conseguia entender no início se havia erros na lógica, em cotações reais os resultados são muito mais modestos

;) ... Estou falando sobre isso há meio ano.

Estou "mastigando" matemática, tenho ideias não padronizadas - análise não suave e fiquei surpreso ao descobrir que uma ficção bastante interessante é "When Genius Fails" (Quando o gênio falha), de R. Lowenstein - eu a li para me distrair.

Estou muito interessado em seu código. Se puder, me dê uma olhada por MP

[Excluído]  
Igor Makanu:

;) ... Estou falando sobre isso há cerca de seis meses.

Estou "mastigando" a matemática, tenho algumas ideias não padronizadas - análise não suave e fiquei surpreso ao encontrar uma ficção bastante interessante "When Genius Fails" (Quando o gênio falha) de R. Lowenstein - li para me distrair.

Estou muito interessado em seu código. Se puder, dê-me uma olhada por MP

não-suave e não-fluffy? :) à noite, reunirei em um arquivo e compartilharei o projeto comum... talvez possamos fazer algo juntos.

 
Maxim Dmitrievsky:

...sobre a multicolinearidade dos preditores - concordo. É necessário criar uma matriz de covariância e fazer a seleção nela; mais tarde pensarei em como fazer isso melhor

Talvez eu esteja batendo em uma porta aberta, mas como não houve...

Eles recomendam o pré-processamento antes da conversão para o intervalo [0,1]:

1. remoção da periodicidade, eu fiz isso em periodicityArrays() - o perfil composto por dias da semana e hora de um mês é subtraído do intervalo (embora eu tenha feito isso apenas para um período de uma hora para tentar).

2.Remoção da tendência linear em linearTrendArrays(), conforme recomendado a[i]=a[i]-a[i+1].

3) E aqui é onde a verificação de autocorrelação deve estar (ainda não implementada)


A previsibilidade após as ações 1 e 2 aumentou significativamente. O código está anexado.
Arquivos anexados: