Discussão do artigo "Floresta de Decisão Aleatória na Aprendizagem por Reforço" - página 5
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
Oi, ainda não está pronto. Quando estiver concluído, escreverei para você.
Obrigado por sua resposta.
Você já pensou em implementar o Q-learning como uma função de recompensa em sua implementação atual do Random Forest?
Quero dizer, você quer usar a "equação de Bellman" como uma forma de recompensar o agente por atualizar a matriz de recompensa para cada vela fechada para decisões, e isso é possível?
Eu tenho um exemplo de código MQL5 da fórmula Q para implementar e, se você estiver interessado, postarei aqui. Eu mesmo tentei implementar, mas não sou muito bom em implementação de matrizes e ainda não tenho 100% de certeza de como usar a matriz corretamente.
A propósito, tenho que admitir que a EA às vezes dá alguns resultados promissores e surpreendentes em determinadas condições de mercado, mas nem sempre quando o mercado muda. Portanto, também estou tentando implementar algo para que o EA altere imediatamente os preditores (indicadores) de forma automática se ocorrer uma perda. Vi que você mencionou essa ideia de selecionar automaticamente os preditores em um de seus comentários, o que, na minha opinião, também é a parte mais importante.
Obrigado por sua resposta.
Você já pensou em implementar o Q-learning como uma função de recompensa em sua implementação atual do Random Decision Forest?
Quero dizer, você quer usar a "equação de Bellman" como forma de recompensar o agente por atualizar a matriz de recompensa para cada vela fechada para decisões, e isso é possível?
Eu tenho um exemplo de código MQL5 da fórmula Q para implementar e, se você estiver interessado, postarei aqui. Eu mesmo tentei implementar, mas não sou muito bom em implementação de matrizes e ainda não tenho 100% de certeza de como usar a matriz corretamente.
A propósito, tenho que admitir que a EA às vezes dá alguns resultados promissores e surpreendentes em determinadas condições de mercado, mas nem sempre quando o mercado muda. Portanto, também estou tentando implementar algo para que o EA altere imediatamente os preditores (indicadores) de forma automática se ocorrer uma perda. Vi que você mencionou essa ideia de selecionar automaticamente os preditores em um de seus comentários, o que, na minha opinião, também é a parte mais importante.
Sim, eu estava pensando em Q-learning. O fato é que a própria floresta aleatória aproxima a política, portanto, não há necessidade da equação de Bellman. Além disso, o q-learning é muito poderoso.
Agora estou procurando soluções para transformações automáticas de funções, como "truques de kernel". Então, iterativamente, podemos treinar o modelo e selecionar um modelo com recursos transformados com um pequeno erro de classificação em um subconjunto de teste.
Sim, eu estava pensando no Q-learning. O fato é que a própria floresta aleatória aproxima a política, portanto, não há necessidade da equação de Bellman. Além disso, o q-learning é muito poderoso.
Agora estou procurando soluções para transformações automáticas de funções, como "truques de kernel". Então, iterativamente, podemos treinar o modelo e selecionar um modelo com recursos transformados com um pequeno erro de classificação em um subconjunto de teste.
Sim, concordo com você sobre a convergência de políticas. Mas com a implementação atual de política para política, a política não leva em conta a perda consistente do histórico de negociação, flutuação de negociação, etc. Portanto, ao implementar Q, quero dizer que o agente terá um entendimento completo do lucro flutuante atual de cada negociação aberta e das perdas e ganhos consecutivos anteriores e, portanto, aproximará a política para maximizar os lucros e NÃO terá como objetivo apenas maximizar o número de negociações lucrativas que se tornam irrelevantes quando ocorrem grandes perdas.
O que quero dizer é que os lucros de uma série de negociações lucrativas serão eliminados por uma grande perda, mas isso é irrelevante para o agente, pois ele está simplesmente buscando maximizar o número de negociações lucrativas. Portanto, no Q-value, podemos dar uma recompensa imediata ao agente com o lucro flutuante atual, que o agente verificará a cada candle aberto para tomar a próxima decisão de maximizar os lucros e minimizar a desvantagem, independentemente do número de negociações lucrativas ou do encerramento das negociações.
De qualquer forma, se você planeja implementar algo para treinar o modelo de forma iterativa e automática em perdas sucessivas, isso pode ser muito útil. Analisarei algo assim em meu próximo artigo.
Além disso, com base em meu treinamento e teste de EA nas últimas semanas, percebi que só preciso mudar para um modelo diferente (valores de indicador ou indicadores diferentes) automaticamente quando ocorre uma perda; caso contrário, o EA oferece uma série de negociações lucrativas quando os mercados atingem a estratégia por um determinado período de tempo. Porém, quando ocorre uma perda, a mesma série de perdas continua ocorrendo por um bom tempo.
FxTrader562 :
Sim, concordo com você sobre a convergência de políticas. Mas com a implementação atual de política para política, a política não leva em conta as perdas sucessivas do histórico de negociação, o lucro flutuante da negociação etc. E, portanto, ao implementar Q, quero dizer que o agente terá pleno conhecimento do lucro flutuante atual de cada negociação aberta e das perdas e lucros consecutivos anteriores e, portanto, aproximará a política para maximizar os lucros e NÃO terá como objetivo apenas maximizar o número de negociações lucrativas que se tornam irrelevantes quando ocorrem grandes perdas.
O que quero dizer é que os lucros de uma série de negociações lucrativas serão eliminados por uma grande perda, mas isso é irrelevante para o agente, pois ele está simplesmente buscando maximizar o número de negociações lucrativas. Portanto, no Q-value, podemos dar uma recompensa imediata ao agente com o lucro flutuante atual, que o agente verificará a cada candle aberto para tomar a próxima decisão de maximizar os lucros e minimizar a desvantagem, independentemente do número de negociações lucrativas ou do encerramento das negociações.
De qualquer forma, se você planeja implementar algo para treinar o modelo de forma iterativa e automática em perdas sucessivas, isso pode ser muito útil. Analisarei algo assim em meu próximo artigo.
Além disso, com base em meu treinamento e teste de EA nas últimas semanas, notei que basta mudar para um modelo diferente (valores de indicador ou indicadores diferentes) automaticamente quando ocorre uma perda, caso contrário, o EA oferece uma série de negociações lucrativas quando os mercados atingem a estratégia por um determinado período de tempo. Porém, assim que ocorre uma perda, a mesma série de perdas continua ocorrendo por um bom tempo.
Portanto, acho que seria útil implementar a otimização automática nesse caso. Acho que já existe um artigo sobre otimização automática e, se você puder implementá-lo em seu EA atual, a tarefa estará concluída.
Sim, concordo com você sobre a convergência de políticas. Mas com a implementação atual de política para política, a política não leva em conta as perdas sucessivas do histórico de negociação, o lucro flutuante da negociação etc. E, portanto, ao implementar Q, quero dizer que o agente terá pleno conhecimento do lucro flutuante atual de cada negociação aberta e das perdas e lucros consecutivos anteriores e, portanto, aproximará a política para maximizar os lucros e NÃO terá como objetivo apenas maximizar o número de negociações lucrativas que se tornam irrelevantes quando ocorrem grandes perdas.
O que quero dizer é que os lucros de uma série de negociações lucrativas serão eliminados por uma grande perda, mas isso é irrelevante para o agente, pois ele está simplesmente buscando maximizar o número de negociações lucrativas. Portanto, no Q-value, podemos dar uma recompensa imediata ao agente com o lucro flutuante atual, que o agente verificará a cada candle aberto para tomar a próxima decisão de maximizar o lucro e minimizar a desvantagem, independentemente do número de negociações lucrativas ou do encerramento das negociações.
De qualquer forma, se você planeja implementar algo para treinar o modelo de forma iterativa e automática em perdas sucessivas, isso pode ser muito útil. Analisarei algo assim em meu próximo artigo.
Além disso, com base em meu treinamento e teste de EA nas últimas semanas, notei que basta mudar para um modelo diferente (valores de indicador ou indicadores diferentes) automaticamente quando ocorre uma perda, caso contrário, o EA oferece uma série de negociações lucrativas quando os mercados atingem a estratégia por um determinado período de tempo. Porém, assim que ocorre uma perda, a mesma série de perdas continua ocorrendo por um bom tempo.
Portanto, acho que seria útil implementar a otimização automática nesse caso. Acho que já existe um artigo sobre otimização automática e, se você puder implementá-lo em seu EA atual, a tarefa estará concluída.
Por exemplo, você pode alterar a função de recompensa para se aproximar do índice de Sharpe. Ou outras métricas. Experimentei diferentes funções e percebi que torná-las mais complicadas não traz muita vantagem.
Você também pode ler isto: https: //github.com/darden1/tradingrrl
A otimização automática é uma boa ideia, mas estou trabalhando para aprimorar o algoritmo atual agora.
Por exemplo, você pode alterar a função de recompensa para aproximar o índice de Sharpe. Ou outras métricas. Experimentei diferentes funções e percebi que torná-las mais complicadas não traz muita vantagem.
Você também pode ler isto: https://github.com/darden1/tradingrrl
A otimização automática é uma boa ideia, mas agora estou trabalhando para aprimorar o algoritmo atual.
Obrigado pelo artigo. Vou dar uma olhada nele.
Não há dúvida de que, em termos de facilidade de codificação, velocidade de aprendizado e precisão dos resultados, a implementação atual ainda é a melhor que já vi em aprendizado de máquina e, ao adicionar mais alguns indicadores, é provável que os resultados possam ser bastante aprimorados.
Concordo plenamente com você que pequenas complicações pioram os resultados, e o EA aprende melhor sozinho. Tentei aplicar o stop loss e o takeprofit para limitar a quantidade de perdas, e os resultados pioraram com um stop loss apertado.
Mas a única coisa que falta é o aprendizado iterativo. Quero dizer, o algoritmo aprende somente durante a otimização e, depois disso, é totalmente dependente dos dados treinados e, portanto, em um caso, não podemos chamá-lo de "aprendizado por reforço" porque ele não aprende durante a negociação e só aprende durante o treinamento,
Portanto, estou procurando uma solução apenas para automatizar a otimização a cada perda. Refiro-me a cada perda e também à atualização da recompensa, o EA deve chamar o otimizador para treiná-lo novamente com base nos dados do mês anterior. Ou podemos fazer uma pausa por um tempo após uma perda e, mais tarde, após a conclusão da otimização, o EA retomará a negociação. Dessa forma, as árvores treinadas (arquivo de texto Mtrees) sempre conterão a política mais recente com base no mercado atual.
Provavelmente há alguns artigos sobre otimização automática, mas não sou programador de EA e, portanto, não encontrei uma maneira de integrá-la ao seu EA até o momento.
Como sua implementação atual já está usando a política dos dados preparados e, portanto, diferentemente de outros EAs, seu automatizador não precisa salvar os valores após a otimização automática. Apenas executar o otimizador e clicar no botão Iniciar, juntamente com as datas de início e término, será suficiente para automatizar a otimização.
Obrigado pelo artigo. Vou dar uma olhada nele.
Não há dúvida de que, em termos de facilidade de codificação, velocidade de aprendizado e precisão dos resultados, a implementação atual ainda é a melhor que já vi em aprendizado de máquina e, ao adicionar mais alguns indicadores, é provável que os resultados possam ser bastante aprimorados.
Concordo plenamente com você que pequenas complicações pioram os resultados, e o EA aprende melhor sozinho. Tentei aplicar o stop loss e o takeprofit para limitar a quantidade de perdas, e os resultados pioraram com um stop loss apertado.
Mas a única coisa que falta é o aprendizado iterativo. Quero dizer, o algoritmo aprende somente durante a otimização e, depois disso, é totalmente dependente dos dados treinados e, portanto, em um caso, não podemos chamá-lo de "aprendizado por reforço" porque ele não aprende durante a negociação e só aprende durante o treinamento,
Portanto, estou procurando uma solução apenas para automatizar a otimização a cada perda. Refiro-me a cada perda e também à atualização da recompensa, o EA deve chamar o otimizador para treiná-lo novamente com base nos dados do mês anterior. Ou podemos fazer uma pausa por um tempo após uma perda e, mais tarde, após a conclusão da otimização, o EA retomará a negociação. Dessa forma, as árvores treinadas (arquivo de texto Mtrees) sempre conterão a política mais recente com base no mercado atual.
Provavelmente há alguns artigos sobre otimização automática, mas não sou programador de EA e, portanto, não encontrei uma maneira de integrá-la ao seu EA até o momento.
Como sua implementação atual já está usando a política dos dados preparados e, portanto, diferentemente de outros EAs, seu automatizador não precisa salvar os valores após a otimização automática. Apenas executar o otimizador e clicar no botão Iniciar, juntamente com as datas de início e término, será suficiente para automatizar a otimização.
Entendo o que você quer dizer, você precisa de um backtester virtual para isso. Não é nada difícil escrevê-lo, talvez eu o adicione nos próximos artigos.
Entendo seu ponto de vista, isso requer um testador virtual. Não é difícil de escrever, provavelmente adicionarei isso aos próximos artigos.
Muito obrigado. Vou dar uma olhada nisso em seus próximos artigos.
Sim, também acho que não deve ser uma tarefa difícil, especialmente para o seu EA, pois não há muito o que fazer, exceto usar o otimizador desde a data de início até a data de hoje e o período de otimização pode ser especificado nas configurações de entrada do EA, ou seja, não há leitura e gravação dos arquivos otimizados, pois isso já é feito pelo seu EA. Mas não sei exatamente como fazer isso e, portanto, vou aguardar sua atualização.
A propósito, a coisa mais incomum que me atraiu para o Randomised Decision Forest (RDF) é que notei que o modelo básico de implementação do RDF é muito semelhante ao jogo GO, embora eu possa estar errado em minhas observações. Portanto, se o aprendizado de máquina algo "ALPHAGO" pode vencer um jogo complexo como o go, o RDF pode definitivamente vencer o mercado de câmbio. Quero dizer, acredito firmemente que é muito fácil obter negociações 99% precisas usando o RDF se variáveis de entrada suficientes (indicadores) forem alimentadas e continuamente alimentadas para desenvolver e manter políticas ideais enquanto a negociação estiver em andamento.
Mais uma vez, obrigado por sua atenção.
Boa tarde,
Estou publicando os resultados de alguns experimentos (obtidos em árvores puras sem lógica difusa, pensei em anexá-los a um novo artigo, mas como a discussão sobre funções de recompensa continua, estou publicando-os como informações para compreensão e discussão).
1) Não me pareceu muito correto que, digamos, o valor aleatório SELL seja definido em todo o intervalo 0...1, porque já sabemos que as vendas não são lucrativas.
Ao limitar os intervalos a valores opostos e incertos, a velocidade do aprendizado aumenta muitas vezes. Com 2 a 3 execuções (acredito que com um passe em dados aleatórios), a qualidade do treinamento é a mesma que com 4 a 6 execuções (a dispersão é grande, porque há muitos fatores adicionais, mas a eficiência não aumentou nem mesmo em dezenas de por cento).
2. Na implementação inicial, achei estranho o fato de o valor obtido aleatoriamente ser um fator de reforço. Isso cria facilmente uma situação em que uma tendência forte tem uma recompensa menor.
Primeira tentativa de fugir disso
Ideia: a 100 pips e acima do lucro obtido - 1, se menor - aumentando uniformemente (nesse caso, a partir de 0,61). O pdl adequado para venda e para compra é semelhante ao de outros níveis. Teoricamente, para uma tendência mais forte - maior recompensa. Os resultados melhoraram, mas um pouco mais do que o erro estatístico. Ao mesmo tempo, o arquivo com a árvore para as mesmas condições diminuiu significativamente de tamanho. Aparentemente, essa classificação peculiar dos resultados permitiu descrever as regras de forma mais simples.
Para testar o conjunto de árvores, decidi carregar a estimativa de uma árvore.
e, por hábito, executei o treinamento. Qual não foi a minha surpresa: em um treinamento semelhante com uma função de recompensa mais grosseira, houve uma melhoria significativa - no site treinado, mantendo-se todas as outras coisas iguais, o lucro de 4 meses excedeu o lucro de 6 meses da variante antiga (estou fazendo comparações, pois os números específicos variam muito em relação às condições de treinamento, ao par, à curvatura das alças do codificador) e, o que é mais interessante, os resultados no intervalo de controle melhoraram. Carregar a função de avaliação melhorou a previsão! Provavelmente, para um estatístico profissional, não há nada de novo aqui e ele pode provar por meio de fórmulas que deve ser assim, mas para mim é um choque, como dizem, é necessário se acostumar com isso. E surge a questão da seleção e avaliação adicionais das funções de previsão.
Espero que o tempo que gastei nos testes ajude alguém a, pelo menos, reduzir o tempo de sua pesquisa (bem, ou dê a oportunidade de cometer novos erros, que serão compartilhados conosco).
E quão realista é ensinar esse código, gentilmente fornecido pelo autor do artigo, para os padrões mais simples de 3 a 5 barras?
SZY: hmm, mesmo sob efeito de álcool, estou escrevendo como no Aliexpress para um vendedor chinês ))))