Discussão do artigo "Desenvolvimento de robô em Python e MQL5 (Parte 1): Pré-processamento de dados" - página 6

 
A propósito, sobre os sinais estacionários, outra observação.

O modelo XGBoost em testes, não importa quantas vezes eu o execute, em datas diferentes, mostra um após o outro rentável para frente, dezenas de vezes em datas diferentes com sinais atuais. Embora eu seja um iniciante, mas não um idiota, interrompi o treinamento para 2007-2016 e, em seguida, fiz o teste puro de forward. A precisão das etiquetas com negociações de recompensa de risco de 1:8 - 66% em termos de preço a prazo é a média, às vezes o XGB dá 72-74%. Todos os outros modelos, redes neurais, todos os outros bousting, florestas randômicas - são terríveis.

Eu nem mesmo publicaria o primeiro artigo de um ciclo com as características atuais se eles estivessem usando um modelo usado nos atacantes por mais de 10 anos.

Há um motivo pelo qual o modelo XGB vence muitas competições de previsão e ciência de dados. Aparentemente, ele sabe como trabalhar com dados brutos. E a validação cruzada está incorporada. Um cientista conhecido, doutor em ciências, me falou sobre ele. Ele o utiliza para fazer previsões, bem, e também para negociar. Ele me enviou um relatório de negociação com fator de lucro de 55, mas ele desapareceu da Internet, tinha muitos desenvolvimentos, não está claro o que pode ter acontecido com ele. Na verdade, foi ele e também os excelentes artigos de Maxim Dmitrievsky que me levaram ao MO há alguns anos.

Mas o XGB leva muito tempo para ser aprendido. O último modelo foi treinado por dois dias, já estou cansado de esperar, enquanto um booleano normal geralmente aprende em alguns minutos no servidor. Mas, para mim, isso é, até certo ponto, um indicador da complexidade e da eficiência do algoritmo. Vou alugar um servidor mais potente para pesquisa.

Espero que a versão ONNX não seja muito pesada e não tenha muitas linhas. Na MQL5, há um limite para o número de linhas de dados do modelo ONNX. Uma vez treinei um modelo com 100 milhões de linhas e fiquei muito chateado com isso, o mcl não me deixa usá-lo) Acho que vai pesar muito, e prevendo isso fiz um modelo para negociação on-line diretamente através do Python, ele aparecerá nos próximos artigos do ciclo, na segunda-feira vou colocá-lo em teste. O rascunho da série já está pronto. No início, eu queria publicar tudo em uma única folha, mas a administração não me deixou, e provavelmente está certa, seria chato ler uma bagunça dessas).

Surgiu a ideia de um scalper para o Sber no Finam MT 5. A questão é que existe uma função na biblioteca Python mkle para obter o histórico da pilha de preços, e se treinarmos um modelo com base nele e o deixarmos escalpelar, os caras das propriedades estão negociando com base na pilha, e com bastante sucesso. A julgar pela experiência dos traders de prop, não sou o primeiro a ter essa ideia, e há muitos algoritmos de scalping no MO há muito tempo. O scalping é atraente porque a lucratividade pode ser coberta dia após dia. Tenho uma conta na Finam como investidor estrangeiro na Rússia, embora pequena. Portanto, talvez o último artigo da série seja dedicado a esse scalper na Bolsa de Moscou ou na CME, via Finam ou AMP Futures Europe.

Também tenho um rascunho de visão computacional em Python, e farei um artigo sobre isso após o ciclo atual.

Há muitas ideias, realmente muitas, todo dia aparece uma nova ideia e eu me sento para codificar. Embora minha esposa diga, vamos já ganhar dinheiro, pegue a US Prop USA com o que você tem, ganhe dinheiro. Já existem dezenas de modelos treinados. Mas estou mais interessado em pesquisa. Acho que é verdade, eu deveria fazer uma conta e me acalmar. Abri uma conta em fevereiro e, infelizmente, houve problemas com o prop com cotas de meta, entendo que o prop não queria comprar licenças e fez chemed. Por sorte, meu prop removeu o MT 5, eu costumava negociar com minhas mãos através de outro terminal que eles colocaram no lugar do MT 5, e acabei perdendo. Vou abrir uma nova conta em outra plataforma com o MT 5 e escreverei notícias sobre isso, sobre como está indo a negociação.

Quanto ao fato de que a escolha dos melhores preditores deve ser limitada à data FORWARD, é uma ideia muito boa, mas, de alguma forma, deixei passar esse ponto).
 

Amostra avançada de 2010, treinamento antes de 2010.

Por exemplo, também implementei a amostra EXAMWARD para testar o modelo nela separadamente. TODOS os outros modelos e redes neurais têm se baseado nesses recursos desde o primeiro dia.

 

E é assim que um forward simples se diferencia:

E um forward com chips como validação cruzada, ensacamento de modelos (sim, tudo isso é costurado no XGB por padrão, eu acho, mas decidi implementá-lo), enumeração de hiperparâmetros de grade etc:


 
Yevgeniy Koshtenko #:
Se os rótulos das classes não forem redefinidos, então o melhor recurso para prever os rótulos serão os próprios rótulos, não?

Você não redefine os rótulos (o que significa redefinir - limpar - como sinônimo), mas exclui as colunas que contêm rótulos e alimenta os próprios rótulos separadamente no modelo como alvos, ou seja, as informações sobre eles não são redefinidas e não desaparecem irrevogavelmente, mas são usadas no treinamento do modelo.

 
Yevgeniy Koshtenko #:
O modelo XGBoost nos testes, não importa quantas vezes eu o execute, em datas diferentes, mostra um após o outro os lucros para frente, dezenas de vezes em datas diferentes com sinais atuais. Embora eu seja um iniciante, mas não um idiota, interrompi o treinamento para 2007-2016 e, em seguida, fiz o teste puro de forward. A precisão das etiquetas com negociações de recompensa de risco de 1:8 - 66% em termos de preço a prazo é a média, às vezes o XGB dá 72-74%. Todos os outros modelos, redes neurais, todos os outros bousting, florestas randômicas - são muito ruins.

Há muitos erros de novato no artigo - escrevi anteriormente que, se você usar o mesmo código, poderá fazer milagres.

Tente negociar sua solução por um mês em uma demonstração e, em seguida, compare os pontos de entrada adicionando uma amostra para testar o modelo.

Certamente é interessante ler sobre os milagres do XGB, especialmente como você encontrou os hiperparâmetros - li que ele é muito sensível a eles.

 
Rashid Umarov #:

Não quis fazer essa suposição para não ofendê-lo :)

De agora em diante, verifique sua fonte antes de repreender

Tenho o terminal em modo portátil instalado, preciso escrever a chave "portable" de alguma forma?

Se o terminal estiver em execução, o código não funcionará e, se você o desligar, ele tentará inicializar sem a chave, mas isso também não funcionará.

 
Aleksey Vyazmikin #:

Tenho o terminal no modo portátil instalado. Preciso escrever a chave "portátil" de alguma forma?

Se o terminal estiver em execução, o código não funcionará e, se eu o desligar, ele tentará inicializar sem a chave, mas isso também não funcionará.

Tente executá-lo diretamente do terminal. Basta lançar o script no gráfico e ele imprime os resultados na guia "Experts"

Talvez você precise especificar o caminho para a pasta python no metaeditor.

Funciona assim para mim. Mas depois de muita dança))))

 
Aleksandr Slavskii #:

Tente executá-lo diretamente do terminal. Basta lançar o script no gráfico e ele imprime os resultados na guia "Experts"

Talvez você precise especificar o caminho para a pasta python no metaeditor.

Funciona assim para mim. Mas depois de muita dança))))

Você está usando o terminal no modo portátil?

No ME, o caminho é prescrito (apareceu automaticamente).

 
Aleksey Vyazmikin #:

Você está no modo portátil usando o terminal?

No ME, o caminho é prescrito (aparece automaticamente).

Verifiquei isso na versão portátil e tudo funciona.

Se dois terminais estiverem em execução e o caminho para o terminal não estiver especificado no script, ocorrerá um erro em um dos terminais ao tentar compilar.

 
Aleksandr Slavskii #:

Verificado na versão portátil, tudo funciona.

Se dois terminais estiverem em execução e o caminho para o terminal não for especificado no script, ocorrerá um erro em um dos terminais ao tentar compilar.

Eu o executei no terminal

2024.04.01 17:22:57.397 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:22:57.397 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 1)
2024.04.01 17:22:58.416 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:22:58.416 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 2)
2024.04.01 17:22:59.416 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:22:59.416 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 3)
2024.04.01 17:23:00.418 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:23:00.418 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 4)
2024.04.01 17:23:01.421 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:23:01.421 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 5)

O caminho foi especificado em ambos os sentidos para o terminal.

terminal_path = "C:/FX/MT5_02/terminal64.exe"
#terminal_path = "C:\\FX\\MT5_02\\terminal64.exe"

Em algum lugar, ele está procurando no lugar errado - há histórico no terminal.