Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 88
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Yur, faça uma versão normal do programa (ou atualizado) para pessoas)))
1.Deixe-o ler arquivos padrão deste tipo - cabeçalho (com e sem aspas), dados, delimitadores deixam-no comer zpt, point.zpt, tabulação. Exemplo -
"Date";"V1";"A77";"V23A";"Целевая"
01.01.2000;4.999995E-03;1.499891E-03;-2.000213E-03;-5.000234E-03;1
2.Deixar apenas 10 entradas serem utilizadas para o modelo, mas tornar possível carregar um monte delas, então
em uma aba separada, ou definir tampas (você seleciona as entradas), ou então.
3. sem normalização! (ou desactivada), porque se os dados estiverem inicialmente centrados a 0, após a conversão
x-x.min/....(ou o que você tiver) - voar para longe)))
4. jogue fora a aleatoriedade (ou alternável), deixe-a apenas dividir os dados em duas partes, conta em ordem e resultados % de previsões de sucesso para 1 (para 0 não)
5.fez a importância dos inputs - bom!
6.Deixe, além da fórmula que é saída, sair o total!, ou seja, agora
duplo x2 = 2,0 * (v5 + 1,0) / 2,0 - 1,0;
dupla decisão = -0,2632437547312642 -0,2634178652535958 * x2
+ 0.05267978803936412
nós temos que...
Nome alvo = -0,2632437547312642 -0,2634178652535958 * inserir construção x2= (2,0 * (v5 + 1,0) / 2,0 - 1,0)
+ 0.05267978803936412
nós temos -
Nome alvo = -0,2632437547312642 -0,2634178652535958 * (2,0 * (v5 + 1,0) / 2,0 - 1,0)
+ 0.05267978803936412
Vais ter um dispositivo um pouco utilizável para testes rápidos. Então você ainda pode inserir etc, simples (não ganancioso)
algoritmos, com uma escolha... Caso contrário, a ferramenta é inútil. Enquanto o ficheiro está a ser editado, isto e aquilo... É mais fácil usar outra coisa...
Onde está a versão 7?
Mais ou menos, mas não há tempo e capacidade intelectual suficientes.
É preciso começar com uma variável-alvo e, em seguida, selecionar preditores para ela e, de alguma forma, verificá-los novamente com a matemática. De qualquer forma, é um processo doloroso e não consigo formalizá-lo.
4. remova a aleatoriedade (ou desative-a), deixe que ele apenas divida os dados em duas partes, conte em ordem e produza a porcentagem de previsões bem-sucedidas para 1 (não há necessidade de 0).
Se estiver tentando usar o jPrediction para forex, esse é provavelmente o principal item a ser adicionado. Há muitos modelos que podem dividir os dados aleatoriamente em duas partes, treinar na primeira parte e mostrar bons resultados na segunda parte também. Mas a maioria desses modelos será ineficaz em novos dados. Não há dependências constantes no Forex, bons resultados em uma amostra de teste aleatória não garantem bons resultados em novos dados. A única maneira de ter certeza de que um modelo é adequado para o mercado de câmbio é fazer um teste valk forward:
O modelo deve mostrar boa capacidade de previsão nos dados marcados em vermelho. Agora, na jPrediction, esse teste precisa ser feito manualmente, reinserindo os dados para cada caso de teste, o que não é bom para um trabalho sério.
E concordo que é melhor mostrar a estimativa somente para os dados de teste do que o total para treinamento + teste.
Todas as estimativas que a jPrediction fornece agora são inadequadas para forex e apenas enganosas.
A propósito, aqui está como fazer o valk forward no pacote caret para R:
http://topepo.github.io/caret/splitting.html (seção Divisão de dados para séries temporais)
O modelo será treinado nos primeiros 1.000 exemplos e, em seguida, testado nos exemplos 1001-1300. Em seguida, ele será deslocado para 300, treinado em 301-1300, testado em 1301-1600 e assim por diante, até que os exemplos de treinamento se esgotem.
Yur, faça uma versão normal do programa (ou atualizado) para pessoas))))
1.Deixe-o ler os arquivos padrão deste tipo - cabeçalho (com ou sem vírgulas invertidas), dados, delimitadores, deixe-o acelerar zpt, point.zpt, tabulação. Exemplo -
2.Pode usar apenas 10 entradas para o modelo, mas torna possível carregar uma grande quantidade delas, então
Em uma aba separada, você pode colocar marcadores (você seleciona as entradas) ou algo mais.
3. sem normalização! (ou desactivada), porque se os dados estiverem inicialmente centrados a 0, após a conversão
x-x.min/....(ou o que você tiver) - voar para longe)))
4. jogue fora a aleatoriedade (ou alternável), deixe-a apenas dividir os dados em duas partes, conta em ordem e resultados % de previsões de sucesso para 1 (para 0 não)
5.fez a importância dos inputs - bom!
6.Deixe, além da fórmula que é emitida, deixe-a emitir o pleno!, isto é, agora
7. Onde está a versão 7?
Se alguém não gosta muito de algo no jPrediction, o projeto é aberto com Código Aberto sob a licença GNU GPL e fazer garfos a partir dele, mudando e modificando algo lá, não só não é proibido, como até certo ponto é bem-vindo.
Se tentar usar o jPrediction para forex, isto é provavelmente a coisa principal a acrescentar. Existem muitos modelos que podem dividir os dados aleatoriamente em duas partes, depois treinar na primeira, e mostrar bons resultados também na segunda parte. Mas a maioria destes modelos será ineficaz em novos dados. Não há dependências constantes no Forex, bons resultados em uma amostra de teste aleatória não garantem bons resultados em novos dados. A única maneira de ter certeza de que um modelo é adequado para forex é fazer um teste de roll forward:
O modelo deve mostrar boa capacidade de previsão nos dados marcados em vermelho. Agora no jPrediction tal teste tem de ser feito manualmente, reentrando os dados para cada caso de teste, não é bom para um trabalho sério.
E eu concordo que é melhor mostrar uma pontuação apenas para dados de teste do que um total para treinamento+teste.
Todas as notas que a jPrediction dá agora são inadequadas para forex, e apenas enganosas.
A propósito, aqui está como o roll forward é feito no pacote de caretes para o R:
http://topepo.github.io/caret/splitting.html(seção Divisão de Dados para Séries Temporais)
O modelo será treinado nas primeiras 1000 amostras, depois testado nas amostras 1001-1300. Depois mude para 300, treine para 301-1300, teste para 1301-1600, etc. até que os exemplos de treinamento se esgotem.
Todas as estimativas que a jPrediction agora está dando são inadequadas para forex, e apenas enganosas.
São alegações infundadas, ou seja, o que é comumente chamado de besteira. Para demonstrar a eficácia do Walk Forward, por favor forneça resultados comparativos de modelos derivados em jPrediction e modelos derivados após o Walk Forward, de tal forma que possam ser cruzados para verificar a "abundância". Se tais resultados confirmarem suas palavras, então faria sentido substituir o algoritmo de teste atualmente implementado no jPrediction por Walk Forward.
Tenho encontrado repetidamente que ideias aparentemente "óbvias", após implementação e testes por experiência, acabam por ser "vazias". Apenas uma pequena parte das ideias é eficaz e muitas vezes só depois de uma edição adicional com um "ficheiro". Isto porque faltam os detalhes das ideias. E o diabo está nesses mesmos detalhes.
Linus Torvald (criador do kernel do Linux) nunca se cansa de repetir: "Mais cedo ou mais tarde a teoria encontra a prática. E a prática é sempre o critério da verdade. Sempre!".
Um problema adicional com o Walk Forward é que temos muitos modelos em cada etapa. Qual destes modelos deve ser mantido como modelo de trabalho e por que critérios deve ser selecionado?
Estas são alegações não substanciadas, ou seja, o que é comumente conhecido como besteira. Para demonstrar a eficácia do Walk Forward, por favor forneça estudos comparativos dos modelos jPrediction e post-Walk Forward, para que possam ser cruzados para verificar a "perspicácia". Se tais resultados confirmarem suas palavras, então faria sentido substituir o algoritmo de teste atualmente implementado no jPrediction por Walk Forward.
Tenho encontrado repetidamente que ideias aparentemente "óbvias", uma vez implementadas e testadas pela experiência, acabam por se revelar "vazias". Apenas uma proporção muito pequena de ideias é eficaz, e muitas vezes só depois de mais revisões "arquivadas". Isto porque faltam os detalhes das ideias. E o diabo está nesses mesmos detalhes.
Linus Torvald (criador do kernel do Linux) nunca se cansa de repetir: "A teoria encontra a prática mais cedo ou mais tarde". E a prática prova sempre ser o critério da verdade. Sempre!".
Um problema adicional com o Walk Forward é que temos muitos modelos em cada etapa. Qual destes modelos deve ser mantido como modelo de trabalho e por que critério deve ser selecionado?
Não há necessidade de brigar. Estamos trabalhando em um tema de pesquisa muito complexo. Há muitas suposições. E estes pressupostos levam ao excesso de aprendizagem e de amostragem.
Duas regras simples: engana o mercado, não te enganes a ti próprio.
O Walk Forward é, claro, um bom método. Mas os principais parâmetros ali são a profundidade de aprendizagem e a duração do teste. Ao mesmo tempo (!!!) se estes parâmetros forem ajustados de tal forma que o resultado na posição avançada se torne melhor, vamos sobretreinar o Walk Forward! Ou seja, num grande pedaço, fazemos repetidamente Walk Forward Optimization. Em outro trecho não superlativo, tentamos os melhores parâmetros do Walk Forward no "treino" e corremos outro lobo completo para a frente, mas faça-o uma vez. Se o resultado for bom, então o modelo está captando as dependências. Se o resultado for ruim, então nós simplesmente reciclamos o Walk Forward em um modelo não tão bom.
Há o mesmo problema com testes únicos em uma amostra atrasada. Estou a trabalhar nisso agora: a libertar os meus resultados do sobretreinamento. Os resultados da validação cruzada devem estar correlacionados com a amostra diferida para os testes finais. Dito isto, a selecção do melhor modelo por validação cruzada dará os melhores resultados aproximados fora da amostra. Caso contrário - se não houver correlação ou correlação negativa - temos um modelo inadequado para forex que precisa ser mudado.
Estas são alegações não fundamentadas, ou seja, o que em linguagem comum é chamado de besteira. Para comprovar a eficácia do Walk Forward, apresente os resultados dos estudos comparativos dos modelos jPrediction e post-Walk Forward de uma forma que possa ser cruzada para verificar a "viscosidade". Se tais resultados confirmarem suas palavras, então faria sentido substituir o algoritmo de teste atualmente implementado no jPrediction por Walk Forward.
Tenho encontrado repetidamente que ideias aparentemente "óbvias", uma vez implementadas e testadas pela experiência, acabam por se revelar "vazias". Apenas uma proporção muito pequena de ideias é eficaz, e muitas vezes só depois de mais revisões "arquivadas". Isto porque faltam os detalhes das ideias. E o diabo está nestes mesmos detalhes.
Linus Torvald (criador do kernel do Linux) nunca se cansa de repetir: "A teoria encontra a prática mais cedo ou mais tarde". E a prática prova sempre ser o critério da verdade. Sempre!".
Um problema adicional com o Walk Forward é que temos muitos modelos em cada etapa. Qual destes modelos deve ser mantido como modelo de trabalho e por que critério deve ser selecionado?
Não vale a pena discutir sobre isso.
Eu concordo. Mas isto requer a minimização do número de acusações não substanciadas no fio. A melhor opção é dar os resultados de estudos comparativos com a possibilidade de dupla verificação.
Estamos trabalhando em uma pesquisa muito complexa.
Alguns estão a trabalhar e outros estão a mexer os polegares sem provas (não apontemos o dedo).
Não vale a pena lutar.
Eu concordo.
Há aqui muitas suposições. E estes pressupostos levam ao sobre-aprendizado e à desvalorização da amostra.
Não podes pôr suposições no pão e pô-las no teu bolso. Assim, tudo deve ser verificado empiricamente, em vez de fazer suposições não comprovadas, de modo a não pisar o ancinho do sobretreinamento e da queda fora da amostra.
O Walk Forward é, claro, um bom método. Mas os principais parâmetros ali são a profundidade de aprendizagem e a duração do teste. Ao mesmo tempo (!!!!) se abordarmos estes parâmetros de tal forma que o resultado na pista dianteira se torne melhor, iremos sobretreinar o Walk Forward! Ou seja, num grande pedaço, fazemos repetidamente Walk Forward Optimization. Em outro trecho não sobreposto, tentamos os melhores parâmetros do Walk Forward em "treinamento" e o executamos mais uma vez. Se o resultado for bom, então o modelo pega as dependências. Se o resultado for ruim, então nós simplesmente reciclamos o Walk Forward em um modelo não tão bom.
Há o mesmo problema com testes únicos em uma amostra atrasada. Estou a trabalhar nisso agora: a libertar os meus resultados do sobretreinamento. Os resultados da validação cruzada devem estar correlacionados com a amostra diferida para o teste final. Dito isto, a selecção do melhor modelo por validação cruzada dará os melhores resultados aproximados fora da amostra. Caso contrário - se não houver correlação ou negativo - temos um modelo inadequado para forex que precisa ser mudado.
O resultado final é que todos os métodos têm vantagens e desvantagens. Os pressupostos exageram os méritos e desconsideram os inconvenientes.
Um ponto ainda maior é que nenhum método lhe permite seleccionar modelos de acordo com o critério da melhor qualidade, e todos os métodos seleccionam de acordo com o princípio da rejeição - filtrando apenas os conscientemente inadequados. Nenhum método no ML pode calcular a potencial adequação do que resta após a rejeição.
Especialmente em ambientes não estacionários. É possível selecionar os modelos aparentemente mais adequados em termos de generalizabilidade, mas amanhã algum chefe do Banco Central em uma reunião peida alguma coisa e todos os modelos vão por água abaixo.
A questão é que todos os métodos têm vantagens e desvantagens. Os pressupostos exageram os méritos e desconsideram os deméritos.
Um ponto ainda maior é que nenhum método seleciona modelos de acordo com o melhor critério de qualidade, e todos os métodos selecionam de acordo com o princípio da rejeição - filtrando apenas o que se sabe ser inapropriado. Nenhum método no ML pode calcular o valor potencial do que resta após a rejeição.
Ainda mais em ambientes não estacionários. Parece possível selecionar os modelos mais adequados em termos de generalidade, mas amanhã algum chefe do Banco Central fará um peido e todos os modelos irão pelo cano abaixo.