Discussão do artigo "Criação de uma estratégia de retorno à média com base em aprendizado de máquina" - página 9

 

Bom dia, Maxim. Boa tarde, caros colegas.

Tenho uma pergunta urgente.

Eu queria acrescentar uma funcionalidade adicional ao bot (saída de uma posição para breakeven e trawl sl), mas me deparei com a impossibilidade de compilar o código-fonte (eu uso o compilador padrão do pacote MT5).
Mesmo o código-fonte original mean reversion.mq5, anexado pelo autor ao artigo, não passa .
O problema está nas funções OnnxSetInputShape e OnnxSetOutputShape (linhas 51, 58, 66, 71). De acordo com a ajuda do mql5, os dados de entrada para essas funções são três variáveis: duas do tipo long e a terceira do tipo const ulong. Entretanto, de acordo com o código do Expert Advisor, as variáveis ExtInputShape, ExtInputShape2 e output_shape usadas como variáveis iniciais nas funções em consideração são inicializadas como const long ( linhas 31, 32, 65).

Quando o tipo de dados das variáveis é alterado para const ulong, a compilação é bem-sucedida. No entanto, o bot para de funcionar "com lucro", ou seja, o algoritmo de estratégia de negociação implementado não é executado.

Por favor, ajude a resolver esse problema. Em último lugar, considero a opção com um compilador externo. É possível compilar com ferramentas MT5 padrão sem verificar a correção do código?

 
Vladimir Levchenko tipo long e a terceira do tipo const ulong. No entanto, de acordo com o código do Expert Advisor, as variáveis ExtInputShape, ExtInputShape2 e output_shape usadas como variáveis iniciais nas funções em consideração são inicializadas como const long ( linhas 31, 32, 65).

Quando o tipo de dados das variáveis é alterado para const ulong, a compilação é bem-sucedida. No entanto, o bot para de funcionar "com lucro", ou seja, o algoritmo de estratégia de negociação implementado não é executado.

Por favor, ajude a resolver esse problema. Em último lugar, considero a opção com um compilador externo. É possível compilar com ferramentas MT5 padrão sem verificar a correção do código?

Por gentileza, tente essa opção. Não me lembro o que mais alterei além do ulong. Sim, após a atualização, alguns ph-iases começaram a funcionar de forma diferente de antes.

Escreva em #define os nomes de suas fases em seu arquivo include.
Arquivos anexados:
 
Maxim Dmitrievsky #:

Por favor, tente esta opção. Não me lembro o que mais alterei além do ulong. Sim, após a atualização, alguns ph-iases começaram a funcionar de forma diferente de antes.

Em #define, escreva os nomes das fases de seu arquivo de inclusão.

Bom dia.

Eu fiz isso. Mas, infelizmente, o motivo é outro. Estou anexando capturas de tela dos resultados da sua versão compilada e da versão em que os tipos de variáveis são substituídos por ulong.

Com variáveis LONG Após a alteração para ULONG.

 
Vladimir Levchenko #:

Bom dia.

Eu fiz isso. Mas, infelizmente, o motivo é outro. Estou anexando capturas de tela dos resultados da sua versão compilada e da versão em que os tipos de variáveis são substituídos por ulong.


Você usa o mesmo tipo de atributos no bot e no treinamento? Acontece que você alterou os atributos no script python, mas não no inklulnik.
Porque essa variante, que eu lhe apresentei, funciona bem para mim.
A julgar pela curva do gráfico, o modelo não está obtendo os recursos nos quais foi treinado
 
Maxim Dmitrievsky #:
Você usa o mesmo tipo de atributos no bot e no treinamento? Acontece que você alterou os atributos no script python, mas não no inklulnik.
Porque essa variante, que eu lhe dei, funciona bem para mim.
A julgar pela curva do gráfico, o modelo não está obtendo os recursos nos quais foi treinado

Provavelmente. Porque eu pego os arquivos do modelo que estavam na versão inicial do bot.
Mas o algoritmo de treinamento do modelo ainda está em fase de estudo e compreensão. Não tenho problemas com o Mql5, mas com o Python ainda estou tendo dificuldades para fazer amizade com ele.

 
Vladimir Levchenko #:

Provavelmente. Porque os arquivos de modelo que estou puxando são os que estavam lá na versão inicial do bot.
Mas o algoritmo de treinamento do modelo ainda está em fase de estudo e realização. Não tenho problemas com o Mql5, mas a amizade com o python ainda é um pouco difícil.

Verificado, tudo funciona para mim. Anexei os arquivos de modelos treinados do artigo e o bot atualizado acima.

É desejável treinar novamente os modelos depois, porque há modelos de demonstração anexados ao artigo. Quando você entender o script python.


 
Maxim Dmitrievsky #:

Verificado, tudo funciona para mim. Anexei os arquivos dos modelos treinados do artigo e o bot atualizado acima.

É desejável treinar novamente os modelos depois, porque há modelos de demonstração anexados ao artigo. Quando você entender o script python.


Bom dia!
Sim, nesta versão, o bot compila e funciona corretamente. Mas os modelos precisam ser treinados novamente. E, em geral, pelo que entendi, isso deve ser feito regularmente.
Estou me familiarizando com o python, mas ainda não entendi tudo. Instalei a versão principal do Rutop em meu laptop e o atualizei para a versão atual. Instalei todos os pacotes necessários (pandas, numba, numpy, catboost, scipy, scikit-learn). Baixei as citações. Coloquei o arquivo de cotações e todos os scripts na pasta Files no catálogo principal do MT5. Escrevi os caminhos no código do script de treinamento do modelo. Mas algo não está indo para o resultado.
Corrijo o código do script no MetaEditore. Tento executar o script a partir daí. O processo cai em um erro (ele não encontra o pacote bots python, e a tentativa de instalá-lo de acordo com o esquema de instalação de outros pacotes também termina com um erro). O mesmo erro ocorre ao executar o script por meio do console do python.
Você pode me aconselhar em que direção devo pesquisar o tópico?

Erro ao instalar o pacote bots


Erro na operação do script

 
Vladimir Levchenko #:
Bom dia!
Sim, nesta versão, o bot compila e funciona corretamente. Mas os modelos precisam ser treinados novamente. E, em geral, pelo que sei, isso deve ser feito regularmente.
Estou me familiarizando com o python, mas nem tudo está funcionando até agora. Instalei a versão principal do Rutop em meu laptop e a atualizei para a versão atual. Instalei todos os pacotes necessários (pandas, numba, numpy, catboost, scipy, scikit-learn). Baixei as citações. Coloquei o arquivo de cotações e todos os scripts na pasta Files no catálogo principal do MT5. Escrevi os caminhos no código do script de treinamento do modelo. Mas algo não está indo para o resultado.
Corrijo o código do script no MetaEditore. Tento executar o script a partir daí. O processo cai em um erro (ele não encontra o pacote bots python, e a tentativa de instalá-lo de acordo com o esquema de instalação de outros pacotes também termina com um erro). O mesmo erro ocorre ao executar o script por meio do console do python.
Você pode me aconselhar em que direção devo aprofundar o tópico?

Bots é apenas o diretório raiz (pasta) onde estão localizados os módulos do artigo. Se o script não os vir ao importar módulos (arquivos adicionais), escreva os caminhos completos para os arquivos.

Ou coloque todos esses arquivos na mesma pasta que o script principal e faça isso:

Было
from bots.botlibs.labeling_lib import get_labels
from bots.botlibs.tester_lib import test_model
from bots.botlibs.export_lib import export_model_to_ONNX

Стало
from labeling_lib import get_labels
from tester_lib import test_model
from export_lib import export_model_to_ONNX

Isso pode acontecer se você não tiver prescrito o PYTHONPATH quando instalou o Python. Pesquise na Internet para descobrir como prescrevê-lo para seu sistema. Ou seja, o Python não vê os arquivos no disco.

Ou leia um curso básico sobre importação de módulos na Internet.

 
Maxim Dmitrievsky #:

Bots é apenas um diretório raiz (pasta) onde os módulos do artigo estão localizados. Se o script não os vir ao importar módulos (arquivos adicionais), escreva os caminhos completos para os arquivos.

Ou coloque todos esses arquivos na mesma pasta que o script principal e faça isso:

Isso pode acontecer se você não tiver prescrito o PYTHONPATH quando instalou o Python. Pesquise na Internet para descobrir como prescrevê-lo em seu sistema. Ou seja, o Python não vê os arquivos no disco.

Ou leia um curso básico sobre importação de módulos na Internet.

Bom dia, Maxim. Obrigado, Maxim. Quase tudo foi resolvido. A última pergunta.
Há linhas comentadas (154-182) no script principal para modelos de treinamento. Pelo que entendi, esses são amostradores de negócios alternativos (marcações). Mas não posso experimentá-los. Se qualquer um dos marcadores for descomentado (condicionalmente, linhas 154-158) e o original for comentado (linhas 149-153), o script não será iniciado.
Qual pode ser o motivo, onde procurar?

Obrigado)

 
Vladimir Levchenko #:

Bom dia, Maxim. Muito obrigado. Quase tudo foi resolvido. A última pergunta.
Há linhas comentadas (154-182) no script principal para modelos de treinamento. Pelo que entendi, esses são amostradores de negócios alternativos (markups). Mas não posso experimentá-los. Se algum dos marcadores for descomentado (condicionalmente, linhas 154-158) e o original for comentado (linhas 149-153), o script não será iniciado.
Qual pode ser o motivo, onde procurar?

Obrigado)

Olá, você precisa de registros do que o interpretador Python escreve.