Discussão do artigo "Floresta de Decisão Aleatória na Aprendizagem por Reforço" - página 3
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
Obrigado por compartilhar esse artigo muito útil.
Eu estava tentando implementar indicadores adicionais no código, mas não sou um programador experiente e não tenho boa experiência no uso de funções de associação e, portanto, não consegui entender como adicionar mais indicadores para serem usados junto com as regras dentro da função OnInit(). O código contém apenas o indicador RSI e cria as regras de COMPRA e VENDA a partir dele. Você poderia fornecer mais alguns códigos de exemplo de indicadores, como média móvel, MACD, estocástico ou SAR, para serem usados no código?
Em especial, gostaria de saber como criar regras e adicionar condições de entrada ao compará-las com o preço atual. O principal problema com o código atual é que, às vezes, ele mantém as negociações perdidas por muito tempo enquanto fecha as lucrativas rapidamente. Acho que é preciso fazer mais filtros na lógica de saída.
Além disso, tenho uma pergunta que você pode responder, por favor:
O arquivo OPT é atualizado continuamente para melhorar as entradas e saídas ao longo do tempo, após um longo período, por meio do ajuste fino da própria política?
Ou o EA apenas usa o testador de estratégia para otimizar os valores do EA e usa os mesmos valores de entrada e saída que foram lucrativos recentemente, como um EA otimizado regular?
Quero dizer, como outros EAs de rede neural, ele faz o ajuste fino de sua política geral de entrada e saída de negociações durante o curso da negociação?
Olá. Aguarde o próximo artigo. Nele, examinarei o trabalho de outros indicadores e também com uma variedade de agentes. E sem lógica difusa.
Olá. Por favor, aguarde o próximo artigo. Nele, examinarei o trabalho de outros indicadores, bem como com uma variedade de agentes. E sem lógica difusa.
Obrigado por sua resposta rápida... Vou aguardar.
Se não se importar, poderia dizer quando planeja publicar o próximo artigo com o código de implementação do indicador...
Obrigado por sua resposta rápida... vou aguardar.
Se não se importar, poderia mencionar quando planeja publicar o próximo artigo com o código de implementação do indicador...
Acho que em uma ou duas semanas em russo, e depois eles o traduzirão
Mas mesmo que o artigo esteja em russo, ele ainda estará disponível para download e uso no MT5 normal, certo?
A propósito, tenho algumas sugestões para melhorar a lógica da função de prêmio. Como não tenho 100% de certeza sobre a codificação por enquanto, não estou mexendo no código agora, mas, se minhas sugestões forem úteis, considere implementá-las na próxima versão.
Quero que a função de recompensa recompense o agente com base na soma das recompensas de dois fatores:
1. lucro líquido (Orderprofit()+OrderCommission()+OrderSwap()): NetProfit (NP) para um determinado fechamento de ordem A recompensa (RW1) será tratada por um fator de recompensa (RF1) cujo valor será maior que 1, de modo que, quanto maior o lucro da negociação, maior será a recompensa e, quanto maior a perda, maior será a recompensa negativa.
RW1=NP*MathPow(RF1,2); por exemplo, o valor de RF1 pode ser 1,1 ou 1,2 ou mais
Quero dizer que o RW1 para um determinado fechamento de ordem deve ser a multiplicação do lucro líquido (lucro positivo ou negativo) junto com o quadrado do fator de recompensa (RF1).
2. número de lucros ou perdas consecutivos (NCount): Outra recompensa (RW2) deve ser dada com base nos lucros ou perdas consecutivos pelo fator de recompensa (RF2) e no número de perdas ou lucros consecutivos (NCount).
Antes de dar uma recompensa, o EA deve verificar o lucro ou a perda da última ordem para esse símbolo específico e, se for uma perda líquida considerando o OrderCommission e o OrderSwap, será dada uma recompensa mais negativa e, se a ordem for fechada com lucro, será dada uma recompensa mais positiva.
RW2=MathPow(NCount,RF2); o valor de RF2 pode ser 1,1 ou 1,2 ou mais
Por exemplo, se a ordem atual fechada for positiva e a ordem anterior for negativa, então NCount=1-1=0 e RW2 será zero. Ou se a ordem fechada atual for positiva e a ordem anterior for positiva, então NCount=1+1=2 e, portanto, RW2=(2)^(1,2) considerando o valor de RF2=1,2
Agora, a recompensa líquida (RW) para um determinado fechamento de ordem deve ser RW=RW1+RW2
Se você puder implementar o código na próxima versão do EA, será ótimo, ou se puder me dizer onde posso adicionar esse código, tentarei fazer isso sozinho.
A melhor parte, na minha opinião, será se pudermos declarar RF1 e RF2 como variáveis globais para otimização pelo EA, de modo que ele descubra a melhor combinação de RF1 e RF2 ao testar o EA.
Olá , Maxim Dmitrievsky,
Desculpe-me por fazer tantas perguntas... porque achei esse artigo muito útil enquanto estudava e implementava o aprendizado de máquina no mql5....... É claro que estou aguardando seu próximo artigo...
Minha pergunta é: como treinar o agente para desenvolver uma política a fim de maximizar o lucro, NÃO o número de negociações lucrativas?
Estudei o código updateReward() e updatePolicy() e me parece que ele otimiza apenas o número de negociações lucrativas, ignorando o lucro de cada negociação e ignorando se o saldo da conta está aumentando ou não.
Portanto, você poderia esclarecer como integrar os valores de lucro à função de recompensa e se há uma maneira de fazer isso?
Tentei implementar meu próprio código proposto acima, mas provavelmente ele não funciona (embora não tenha havido erro de codificação) ou não sei como implementar. Ou, provavelmente, eu não entendi completamente o que exatamente as funções updateReward() e updatePolicy() fazem. Ficarei muito grato por sua valiosa contribuição se puder explicar um pouco mais sobre o código dentro das duas funções e como e o que exatamente a RDFPolicyMatrix armazena e como os valores são usados durante as próximas entradas de negociação.
Desde já agradeço.
Posso ver os melhores resultados do EA imediatamente após a otimização e, à medida que o agente se treina, os resultados pioram a cada dia. Portanto, gostaria de saber se é possível iniciar o otimizador a partir do código após cada perda. Quero dizer, em vez de atualizar a recompensa para cada perda, o EA deve se otimizar para os últimos dois dias de dados até hoje.
Se o autor ou qualquer outra pessoa souber como implementar isso, por favor, compartilhe.
Não se trata mais de árvores, mas de treinar várias florestas com os mesmos dados, sim. Porque o processo de construção é aleatório e os resultados podem variar. Fiquei surpreso com o fato de um conjunto de florestas proporcionar uma melhoria notável, ou seja, treinar várias florestas com os mesmos dados e calcular a média dos resultados. (5-15 peças) Você também pode fazer configurações diferentes. Os resultados devem ser ainda melhores no caso de bousting, mas ainda não cheguei lá.
Obrigado pelo artigo, ele é informativo e há algo a ser feito (pelo menos para mim).
Pelo que entendi, a lógica difusa foi usada como exemplo para o artigo. Não há proibições para obter diretamente o valor de ts (eu o implementei, não notei nenhuma diferença especial na eficiência - a floresta substitui completamente a lógica difusa). Isso pode ser considerado como outra forma de recompensar o objeto. Ao que me parece (não posso confirmar com o programa), aumentar o número de funções de associação otimizadas não trará ganhos, pois a floresta já está obstruindo a lógica difusa. Tentei calcular a média dos resultados das florestas (incluindo a lógica difusa, como no artigo) e o resultado melhorou. Depois das redes neurais do AlgLIB, fiquei surpreso com a velocidade de aprendizado dos valores por vários anos. Para definir diferenças óbvias, usei a segunda forma de criação de floresta com indicação explícita do uso de diferentes números de indicadores (bem, brincar com a composição dos indicadores nem sequer é discutido):
Você pode me dizer que outras formas de recompensa podem ser experimentadas? Estou interessado em criar um conjunto de florestas com diferentes formas de recompensa. A propósito, o conjunto é chamado de média? Ou uma fórmula especial para combinar o resultado? Não acho que o AlgLIB tenha conjuntos de florestas?
Pode ser útil para alguém, pois é inconveniente armazenar dados em uma pilha de arquivos quando há várias florestas, então decidi fazer dessa forma:
A estrutura é descrita por qualquer estrutura; como seu comprimento é fixo, é possível armazenar tanto ela quanto a floresta em um arquivo (a estrutura está necessariamente no início). Uma floresta - um arquivo.Mais uma vez, obrigado pelo artigo, graças a ele comecei a estudar seriamente o AlgLIB.
Obrigado pelo artigo, que é informativo e tem muito a dizer sobre a aplicação (pelo menos para mim).
Pelo que entendi, a lógica fuzzy foi usada como exemplo para o artigo. Não há proibições para obter o valor ts diretamente (eu o implementei, não notei nenhuma diferença especial na eficiência - a floresta substitui completamente a lógica difusa). Isso pode ser considerado como outra forma de recompensar o objeto. Ao que me parece (não posso confirmar com o programa), aumentar o número de funções de associação otimizadas não trará ganhos, pois a floresta já obstrui a lógica difusa. Tentei calcular a média dos resultados das florestas (incluindo a lógica difusa, como no artigo) e o resultado melhorou. Depois das redes neurais do AlgLIB, fiquei surpreso com a velocidade de aprendizado dos valores por vários anos. Para definir diferenças óbvias, usei a segunda forma de criação de florestas com indicação explícita do uso de diferentes números de indicadores (bem, brincar com a composição dos indicadores nem sequer é discutido):
Você pode me dizer que outras formas de recompensa podem ser experimentadas? Estou interessado em criar um conjunto de florestas com diferentes formas de recompensa. A propósito, o conjunto é chamado de média? Ou uma fórmula especial para combinar o resultado? Não acho que o AlgLIB tenha conjuntos de florestas?
Pode ser útil para alguém, pois é inconveniente armazenar dados em uma pilha de arquivos quando há vários andaimes, então decidi fazer dessa forma:
A estrutura é descrita por qualquer estrutura; como seu comprimento é fixo, é possível armazenar tanto ela quanto a floresta no arquivo (a estrutura está necessariamente no início). Uma floresta - um arquivo.Obrigado novamente pelo artigo, graças a ele comecei a estudar o AlgLIB com seriedade.
Sim, a lógica difusa como exemplo. Eu mesmo já desisti dela porque, após vários experimentos, descobri que não faz muito sentido usá-la dessa forma.
Você pode tentar recompensar na forma de Sharpe Ratio atual ou R^2 em negócios. Ou você pode avaliar não os resultados das negociações, mas, por exemplo, as condições do mercado - se você comprou e a tendência vem crescendo há algum tempo, o sinal é adequado. Algo parecido com isso.
Por conjunto, eu quis dizer uma média simples de resultados, sim. Mas para cada floresta você pode definir seus próprios preditores e/ou metas.
Estou planejando escrever um artigo adicional apenas com o conjunto de agentes + mais algumas vantagens, na forma de uma aula. Provavelmente o terminarei em breve.
Outro ponto importante que não foi abordado neste artigo - estimativa de erros de classificação florestal em amostras de treinamento e teste (oob) - também será descrito.
Obrigado pelos exemplos de código, há também uma opção de salvar por meio de serialização
Por favor, se possível, considere como exemplo a função de treinamento por histórico, por exemplo, ao iniciar um Expert Advisor (emulação de negociação), sem usar um testador de estratégia. Eu mesmo tentei fazer isso, mas vejo que minhas mãos estão tortas, funciona, mas é muito inferior em termos de eficiência de treinamento ao treinamento no testador de estratégia.
Por favor, se possível, considere como exemplo a função de treinamento por histórico, por exemplo, ao iniciar um Expert Advisor (emulação de negociação), sem usar o testador de estratégia. Eu mesmo tentei fazer isso, mas vejo que minhas mãos estão tortas, funciona, mas é muito inferior em termos de eficiência de treinamento ao treinamento no testador de estratégias.
Sim, um testador virtual também está nos planos, mas por enquanto precisamos refinar outros aspectos, por exemplo, a seleção automática e a redução de preditores são os mais importantes agora, para que o modelo não seja tão treinado novamente no histórico.