Discussão do artigo "Usando o Algoritmo de Aprendizado de Máquina PatchTST para Prever a Ação do Preço nas Próximas 24 Horas"
Olá, você poderia explicar melhor o que são essas barras que vejo no MT5? Ok, elas têm duas cores, verde e vermelha, mas o que elas indicam? Obrigado
As barras verdes e vermelhas são geradas a partir desse trecho de código:
ObjectSetInteger(0, obj_name, OBJPROP_COLOR, close > open ? clrGreen : clrRed);
Portanto, verde significa que o modelo acha que o fechamento será maior do que a abertura (muito parecido com uma barra verde em um gráfico de velas), no futuro, naquele momento. Vermelho significa que o fechamento será menor do que a abertura para aquela hora no futuro.
Por exemplo, treinei o modelo para alguns outros pares ontem. Usei o indicador que mostro no gráfico, mas o modelo ONNX foi treinado para USDJPY e AUDUSD. Fiz uma negociação de 15R esta manhã com base na previsão do modelo para o USDJPY. Na verdade, eu nem estava observando os gráficos enquanto tudo isso acontecia. Apenas fiz a operação à tarde, depois de concluir o treinamento, e deixei a posição correr durante a noite (paguei o swap). Em minha experiência, até agora, o que pude perceber é que, em geral, você pode confiar na direção que o modelo está prevendo. Observe também quaisquer padrões que você possa ver, por exemplo, mais barras vermelhas consecutivas no gráfico indicariam que o modelo acha que o preço cairá. Mais barras verdes indicariam que o modelo acha que o preço vai subir.
Como você pode ver, eu também perdi cerca de 1R para o AUDUSD com base na previsão do modelo, portanto, ele não é perfeito. Você ainda precisa usar suas outras habilidades, como zonas de oferta e demanda para definir SL e TP, fundamentos macro, dimensionamento de posições e gerenciamento de risco etc. Na minha opinião, o uso de modelos PatchTST treinados lhe dará muito mais precisão e confiança para fazer essas negociações na hora certa do dia ou, pelo menos, na sessão certa (Ásia, Londres ou Nova York). A captura de tela abaixo é de uma avaliação de uma firma de propósitos na qual estou trabalhando no momento.
Olá, esse trabalho é incrível!
Obrigado por seu interesse e comentários atenciosos sobre o algoritmo de negociação de ML! Fico feliz que tenha achado a ideia interessante. Vou abordar seus pontos um a um:
- Desempenho do LSTM vs. PatchTST:
- Achei que o PatchTST é mais preciso na previsão de tendências.
- O LSTM pareceu ter um desempenho melhor durante as consolidações.
- No geral, o PatchTST teve uma taxa de vitória ligeiramente melhor em meus testes.
- Período de treinamento e períodos de tempo:
- Fiz experimentos com treinamento em diferentes períodos de tempo.
- O período de uma hora parece funcionar melhor em minha experiência.
- Não tentei treinar especificamente em um período de apenas um mês, pois dados históricos mais longos tendem a produzir modelos mais robustos.
- Combinação de modelos e períodos de tempo:
- Sua ideia de combinar modelos em diferentes períodos de tempo (por exemplo, H1 e M15) é interessante.
- Há uma compensação a ser considerada: o uso de períodos de tempo mais curtos requer mais pontos de dados e aumenta exponencialmente o tempo de treinamento.
- Por exemplo, o uso de um período de 15 minutos precisaria de 4 vezes mais barras do que o período de 1 hora para um treinamento equivalente, aumentando também o horizonte de previsão em um fator de 4.
- Estratégia de scalper em M1:
- Sua sugestão de criar um scalper no timeframe M1, usando as previsões como filtro, é criativa.
- A ideia de usar 7/10 barras verdes para compra e 5-6/10 para variação é um bom ponto de partida para uma estratégia.
- Essa abordagem poderia reduzir os sinais falsos e melhorar o tempo de entrada.
- Trabalho atual e direções futuras:
- Atualmente, estou trabalhando em uma abordagem de três níveis: a) Um modelo que prevê a ação do preço em um período de uma semana b) Outro modelo para o período de um dia c) Um terceiro modelo para o período de 5 minutos
- Todos esses são modelos diferentes, adaptados a seus períodos de tempo específicos.
- O objetivo é criar um sistema de negociação mais abrangente que considere vários horizontes de tempo.
- Considerações adicionais:
- A combinação de previsões de vários timeframes e modelos pode, de fato, melhorar o desempenho geral da estratégia.
- Entretanto, é fundamental gerenciar a complexidade e evitar o ajuste excessivo.
- O backtesting e o forward testing em dados fora da amostra são essenciais para validar a eficácia de qualquer abordagem combinada.
Mais uma vez, obrigado por compartilhar suas ideias. Elas me deram algumas novas perspectivas a serem consideradas em meu trabalho atual. Se tiver mais ideias ou perguntas, fique à vontade para perguntar!
# Step 11: Train the model for epoch in range(num_epochs): model.train() total_loss = 0 for batch_X, batch_y in train_loader: optimizer.zero_grad() batch_X = batch_X.to(device) batch_y = batch_y.to(device) outputs = model(batch_X) outputs = outputs[:, -pred_length:, :4] loss = loss_fn(outputs, batch_y) loss.backward() optimizer.step() total_loss += loss.item() print(f"Epoch {epoch+1}/{num_epochs}, Loss: {total_loss/len(train_loader):.10f}")
RuntimeError: permute(sparse_coo): number of dimensions in the tensor input does not match the length of the desired ordering of dimensions i.e. input.dim() = 3 is not equal to len(dims) = 4
Confira o novo artigo: Usando o algoritmo de aprendizado de máquina PatchTST para prever as próximas 24 horas de ação do preço.
Autor: Shashank Rai
Obrigado por publicar um artigo tão fascinante. Tenho experiência com python, mas ainda não trabalhei muito com modelos de IA.
Se eu quiser treinar com dados M1 em vez de H1, isso seria uma alteração razoável no script de treinamento? Obrigado.
seq_length = 10080 # 1 semana de dados M1 pred_length = 30 # Prever os próximos 30 minutos
Todas as séries numéricas são calculadas em uma calculadora comum. Se desejar, você pode inserir tudo no Excel ou escrever um indutor de MT.
O algoritmo do PatchTST é, de fato, mais complexo do que os cálculos numéricos básicos, mas isso é intencional. Embora você possa usar o Excel ou ferramentas mais simples para cálculos básicos, as redes neurais como o PatchTST podem capturar padrões complexos em dados de mercado que podem não ser aparentes com métodos de análise mais simples. A força do modelo está em sua capacidade de aprender esses padrões automaticamente a partir de dados históricos.
Obrigado por publicar um artigo tão fascinante. Tenho experiência com python, mas ainda não trabalhei muito com modelos de IA.
Se eu quiser treinar com dados M1 em vez de H1, isso seria uma alteração razoável no script de treinamento? Obrigado.
Obrigado por seu interesse! Sim, essas alterações nos parâmetros funcionariam em princípio, mas há algumas considerações importantes ao mudar para dados M1:
1. Volume de dados: Treinar com 10080 minutos (1 semana) de dados M1 significa lidar com um número significativamente maior de pontos de dados do que com H1. Isso irá:
- Aumentará substancialmente o tempo de treinamento
- Exigirá mais memória
- Necessita potencialmente de aceleração de GPU para um treinamento eficiente
2. Ajustes na arquitetura do modelo: Na Etapa 8 do treinamento do modelo e na Etapa 4 do código de previsão, talvez você queira ajustar outros parâmetros para acomodar a sequência de entrada maior:
class Config: def __init__(self): self.patch_len = 120 # Considere tamanhos maiores de patches para dados M1 self.stride = 120 # Ajuste a passada de acordo self.d_model = 128 # Pode ser necessário um modelo com maior capacidade3. Qualidade da previsão: Embora você obtenha previsões mais granulares, esteja ciente de que os dados M1 normalmente contêm mais ruído. Talvez você queira experimentar diferentes comprimentos de sequência e janelas de previsão para encontrar o equilíbrio ideal.
- 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 Usando o Algoritmo de Aprendizado de Máquina PatchTST para Prever a Ação do Preço nas Próximas 24 Horas foi publicado:
Neste artigo, aplicamos um algoritmo relativamente complexo de rede neural chamado PatchTST, lançado em 2023, para prever a ação do preço nas próximas 24 horas. Usaremos o repositório oficial, faremos algumas modificações, treinaremos um modelo para EURUSD e o aplicaremos para fazer previsões futuras, tanto em Python quanto em MQL5.
Eu encontrei pela primeira vez um algoritmo chamado PatchTST quando comecei a explorar os avanços da IA relacionados às previsões de séries temporais no Huggingface.co. Como qualquer pessoa que trabalhou com grandes modelos de linguagem (LLMs) sabe, a invenção dos transformers foi um divisor de águas para o desenvolvimento de ferramentas para processamento de linguagem natural, imagens e vídeos. Mas e quanto às séries temporais? Isso é algo que foi simplesmente deixado de lado? Ou a maior parte da pesquisa está apenas por trás de portas fechadas? Acontece que existem muitos modelos mais novos que aplicam transformers com sucesso para prever séries temporais. Neste artigo, veremos uma implementação como essa.
O que é impressionante sobre o PatchTST é quão rápido ele treina um modelo e quão fácil é usar o modelo treinado com MQL. Admito abertamente que sou novo no conceito de redes neurais. Mas ao passar por esse processo e abordar a implementação do PatchTST descrita neste artigo para MQL5, senti que dei um grande salto no meu aprendizado e na minha compreensão de como essas redes neurais complexas são desenvolvidas, depuradas, treinadas e usadas. É como pegar uma criança, que mal está aprendendo a andar, e colocá-la em um time profissional de futebol, esperando que ela marque o gol da vitória na final da Copa do Mundo.
Autor: Shashank Rai