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

 
mytarmailS:

recebeu um aviso

logicamente, o script tentou ler a tabela criada anteriormente a partir do arquivo rdata, mas falhou, então ele foi bloqueado. Na próxima vez que você executar o script, o arquivo rdata com a tabela será lido e não haverá deformação.


NA - também lógico, os dados para a criação de um modelo devem ser preparados, e não retirados da produção bruta desses indicadores. Há muito mais que pode ser feito lá.

<NA> no início da mesa está bem, afinal os candelabros requerem pelo menos 23 barras. Para os primeiros 23 compassos, você sempre pode esperar NA.
Eu não preenchi a tabela até a largura da janela, não só haverá NA, como se pode esperar resultados "alguns não são assim", devido à menor profundidade dos cálculos dos indicadores.
É melhor cortar todas as primeiras linhas à largura da janela.
trainData <- trainData[-(1:indicatorDepth), ]

Corrigir <NA> nos nomes das colunas, exceto destino: colnames(trainData)[-ncol(trainData)] <- paste0("pred",1:(ncol(trainData)-1))

Substituir alvo por 1 para todos os positivos, e -1 para todos os negativos. Ou {0;1} se você tiver neurônica.

Aqueles indicadores que contêm alguns valores próximos aos preços - escala para 0-1, ou contar deltas. (por exemplo, os valores de MA estão sempre algures perto do preço, precisam de ser escalonados ou delta. E o RSI está sempre na sua própria faixa 0-100, e isso em si é uma coisa boa. Se os valores indicadores puderem ir além dos valores conhecidos durante o treinamento - delta-lo, não vai piorar)

Para a neurônica em geral é melhor escalar todos os indicadores em 0-1.

E assim por diante.

Mas NA nas colunas 46-51 - há realmente algo de errado. Ou eles devolvem tudo noutro formato e precisamos de outro código especificamente para os inserir na tabela.
Ou - estes indicadores apenas retornam NA sozinhos; talvez precisem de uma largura de janela maior; ou sempre retornam NA para a última barra e depois substituem NA com base em novos dados da barra, que está sendo redesenhada, e ruim.

 
SanSanych Fomenko:

Aí vem um novo bar, que é o arauto de uma inversão do mercado. Mas nós, continuando a alimentar a vaca sagrada, não mudamos a nossa visão da história por causa de alguma ideia, retirada da secção "análise".

Para uma simples troca, isto é bastante excelente, concordo. O indicador encontrou algum tipo de padrão que acaba de surgir e nos mostrou isso, tudo está bem.

Mas precisamos de preparar os dados e ensinar o modelo. Se um indicador está a descoberto, geralmente significa que os valores das barras passadas estão constantemente a mudar com base em dados mais recentes, ou seja, há um vislumbre do futuro. E o modelo acaba por aprender com estes valores de futuro, nada de bom pode sair dele.
Embora tais indicadores possam ser usados como um alvo para a aprendizagem, o mesmo ziguezague, por exemplo, olha 100 barras à frente, é por isso que atrai tendências.

 
Dr. Trader:

Mas NA nas colunas 46-51 - há realmente algo de errado. Ou os indicadores devolvem tudo num formato diferente e precisam de um código diferente especificamente para os inserir na tabela.

Ou - estes indicadores apenas retornam NA sozinhos; talvez seja necessária uma maior largura de janela; ou eles sempre retornam NA para a última barra e depois substituem NA com base em novos dados da barra, que está sendo redesenhada, e ruim.

Verifiquei, parece que estás a exagerar. Para a última barra, o indicador nextCandlePosition sempre retorna NA. E depois, no bar seguinte, substitui NA por algo que pareça certo. @mytarmailS Tente seu primeiro código novamente, mas sem este indicador e treinar o modelo, acho que o resultado será pior.

Corrigi meu script para pegar o penúltimo valor da nextCandlePosition, em vez do último, agora não haverá NA nas últimas fileiras da tabela.

 
Dr. Trader:

Para uma simples troca, isto é bastante excelente, concordo. O indicador encontrou algum tipo de padrão que só agora surgiu, e nos mostrou, tudo está bem.

Mas precisamos de preparar os dados e ensinar o modelo. Se o indicador voltar a aparecer, geralmente significa que os valores das barras anteriores estão constantemente a mudar com base em dados mais recentes, ou seja, há um olhar para o futuro. E o modelo acaba por aprender com estes valores de futuro, nada de bom pode sair dele.
Embora tais indicadores possam ser utilizados como um alvo de aprendizagem, o mesmo ziguezague, por exemplo, olha 100 barras à frente e é por isso que atrai tendências.

Vamos usar um exemplo simples.

1. Fazemos um alisamento Hodrick-Prescott. Está redesenhado.

Na barra actual, a tangente olha para cima. Na barra seguinte, a tangente está apontando para baixo - o indicador volta para baixo, pois leva em conta as mudanças atuais. Prever um passo em frente - para baixo.

2. A desenhar a tangente.

Na barra actual a tangente está a tender para cima. Na barra seguinte a tangente olha para cima - o indicador ainda não atingiu as mudanças.

Por favor, considere que o indicador HP para de redesenhar em algum lugar a 10-15 barras.

A sua escolha e porquê?

 
SanSanych Fomenko:

A sua escolha e porquê?

No comércio manual - posso assumir que existem boas estratégias usando estes dois indicadores. Não conheço nenhuma dessas estratégias, por isso não trocaria com elas.

Na aprendizagem mecânica - Eu escolho o feiticeiro. O indicador de retardamento é melhor do que qualquer indicador de redesenho.

 
Dr. Trader:

Verifiquei, parece que está a exagerar. Para a última barra, o indicador nextCandlePosition sempre retorna NA. E, no bar seguinte, substitui NA por algo necessário. @mytarmailS Tente seu primeiro código novamente, mas sem este indicador e treinar o modelo, acho que o resultado será pior.

Corrigi meu roteiro para tomar o penúltimo valor da próximaCandlePosition, em vez de último, agora não haverá NA nas últimas fileiras da tabela.

Eu escrevi que apaguei cerca de seis dos melhores preditores para simplesmente remover os que poderiam pintar em excesso, mas a precisão caiu cerca de 3%, eles provavelmente estão todos pintados em excesso ...

Então, você já treinou o modelo? Talvez você devesse começar com alguns milhares para experimentá-lo em vez de contar 50k de uma só vez?

 
embora o que pode ser redesenhado lá eu não sei, a grande maioria das formações de castiçais tem apenas três opções de saída VERDADEIRO,FALSO,NA
 
mytarmailS:

Sim, eu escrevi que removi cerca de seis dos melhores preditores para apenas remover aqueles que podem redesenhar, mas a precisão caiu literalmente 3%, lá provavelmente todos redesenhar ...

Levou o seu código, removeu 6 indicadores obtidos do nextCandlePosition (X27), obteve uma precisão de 52% em vez de 100%. Em índices ligeiramente diferentes para o treino, a precisão é por vezes inferior a 50%. No geral - aleatoriamente.

mytarmailS:
embora o que poderia ser redesenhado eu não sei, existem apenas três saídas VERDADEIRAS, FALSAS, NA na grande maioria das formações de candelabros

Usando nextCandlePosition - você obtém valores realmente relevantes para a próxima barra, aqui olhando para o futuro por 1 passo.

Então, não funcionou.

 
Dr.Trader:

Levou o seu código, removeu 6 indicadores obtidos do nextCandlePosition (X27), obteve uma precisão de 52% em vez de 100%. Em índices ligeiramente diferentes para o treino, a precisão é por vezes inferior a 50%. Em geral - aleatório.

Usando nextCandlePosition - você obtém os valores realmente relevantes para a próxima barra, aqui olhando para o futuro em 1 passo.

Em geral, não funciona.

Bem, é bom que tudo tenha clarificado, eu não acreditava realmente no graal.

 

Existe um novo e muito promissor pacote RKEEL gateway para a KEEL.

Boa sorte.

KEEL: Software tool. Evolutionary algorithms for Data Mining
  • www.keel.es
KEEL contains classical knowledge extraction algorithms, preprocessing techniques, Computational Intelligence based learning algorithms, evolutionary rule learning algorithms, genetic fuzzy systems, evolutionary neural networks, etc.