Discussão do artigo "Gradient Boosting (CatBoost) no desenvolvimento de sistemas de negociação. Uma abordagem ingênua"
Não há necessidade de misturar as coisas aqui
train_X, test_X, train_y, test_y = train_test_split(X, y, train_size = 0.5, test_size = 0.5, shuffle=True)
De acordo com a ajuda em https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html
Se os dados devem ou não ser embaralhados antes da divisão. Se shuffle=False, então stratify deve ser None.
Os dados são embaralhados antes da divisão, ou seja, alguns exemplos do teste serão incluídos no trem.
Em geral, gostei do artigo, pois mostra que é muito fácil implementar e usar a IA na negociação.
- scikit-learn.org
Acho que a validação se deterioraria e o teste em dados desconhecidos poderia melhorar.
Não há necessidade de se mexer aqui
De acordo com a ajuda https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html
Os dados são misturados antes da divisão, ou seja, alguns exemplos do teste serão incluídos no trem.
Em geral, gostei do artigo, pois ele mostra que é muito fácil implementar e usar a IA na negociação.
Faço isso de propósito para equilibrar um pouco as amostras. Sem a mistura, o teste fica pior, mas quase não tem efeito sobre os novos dados. Mostrarei exemplos mais tarde.
É isso que eu não entendo:
if dataset['close'][i] >= (dataset['close'][i + rand]): labels.append(1.0) elif dataset['close'][i] <= (dataset['close'][i + rand]): labels.append(0.0) else: labels.append(0.0)
As condições que nunca funcionarão estão marcadas em vermelho.
É isso que eu não entendo:
As condições que nunca funcionarão estão marcadas em vermelho.
Não há nada de errado aqui, eu mudei as condições e ainda tenho artefatos.
Especialmente pela importação do modelo python no mql5.
Como não sou um especialista em ALGLIB, acho que o XGBoost, o CATBoost e o Pytorch são, de longe, superiores para fazer aprendizado profundo e de máquina.
As árvores são construídas independentemente umas das outras e, em seguida, a contagem é feita nas folhas (enumeração por preditores não quantificados) de forma que o erro de gradiente seja reduzido.
Ao selecionar preditores para a construção e divisão de árvores, são usados coeficientes aleatórios, o que possibilita, em teoria, aumentar a integridade (Recall) e evitar o treinamento excessivo.
É melhor perguntar aos desenvolvedores
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Gradient Boosting (CatBoost) no desenvolvimento de sistemas de negociação. Uma abordagem ingênua foi publicado:
Treinamento do classificador CatBoost em Python e exportação do modelo para a mql5, bem como a análise dos parâmetros do modelo e um testador de estratégia customizado. A linguagem Python e a biblioteca MetaTrader 5 são usadas para preparar os dados e treinar o modelo.
O robô compilado pode ser testado no Testador de Estratégia padrão da MetaTrader 5. Selecionamos um tempo gráfico adequado (que deve corresponder ao utilizado no treinamento do modelo) e as entradas look_back e MA_period, que também deve corresponder aos parâmetros do programa em Python. Vamos verificar o modelo no período de treinamento (subamostras treinamento + validação):
Desempenho do modelo (subamostras de treinamento + validação)
Se nós compararmos o resultado com o obtido no testador personalizado, esses resultados são iguais, exceto por alguns desvios do spread. Agora, vamos testar o modelo usando os dados absolutamente novos, desde o início do ano:
Desempenho do modelo em novos dados
O modelo teve um desempenho significativamente pior com os novos dados. Esse resultado ruim está relacionado a razões objetivas, que eu tentarei descrever mais adiante.
Autor: Maxim Dmitrievsky