Criando ordens com o Metatrader5 utilizando o Python

No post de hoje, iremos entender como é possível criar ordens de compra e venda de ativos por meio do Metatrader 5 utilizando o Python.

O Metatrader 5 é uma plataforma de negociação, que permite analisar dados de diferentes ativos financeiros, bem como realizar transações. O interessante da plataforma é a possibilidade de conexão com a linguagem Python, por meio da biblioteca MetaTrader5.

No nosso Curso de Python para Investismentos, nós ensinamos os alunos a aprenderem Python do zero e demais vários exemplos de como utilizar a linguagem no dia a dia do mercado financeiro.

Já mostramos aqui no blog a como conectar uma conta com a plataforma e usar comandos para importar dados dos ativos para o Python, entretanto, há ainda algumas possibilidades interessantes do qual é possível utilizar com o MetaTrader 5: criar ordens de compra e venda.

E se estamos utilizando o Python, vocês podem estar pensando, é possível usar estratégias de trading e enviar em tempo real para a plataforma? Sim, é possível. Realizaremos essa possibilidade por etapas, e hoje trabalharemos para entender as funções e métodos de ordem da biblioteca.

A primeira etapa será abrir o MetaTrader 5 e se conectar para importar os dados de um ativo para o Python.

import MetaTrader5 as mt5
import pandas as pd
import numpy as np
from datetime import datetime
import time
import talib
mt5.initialize()
con = mt5.terminal_info()
symbol = 'PETR4'
symbol_info = mt5.symbol_info(symbol)
price_petr = mt5.copy_rates_from(symbol, mt5.TIMEFRAME_D1, time.time(), 100)
price_petr_df = pd.DataFrame(price_petr)
# Converte o tipo de formato da data
price_petr_df['time'] = pd.to_datetime(price_petr_df['time'], unit='s')

Uma vez que importamos os dados, devemos criar o request para realizar a ordem, seja de compra ou de venda, o request definirá a qual preço será comprado a ação, entre outras características, vejamos abaixo como podemos preenche-lo

     request = {
             "action":
              "symbol":
              "volume":
              "type":
              "sl":
              "tp":
              "deviation":
              "magic":
              "comment":
              "type_time"
              "type_filling":
}

No dicionário acima, definimos cada chave como:

  • action: Ação da operação. O valor pode ser de acordo com a numeração do método TRADE_REQUEST_ACTIONS
  • symbol: O nome do instrumentos financeiro
  • volume: Volume das ofertas
  • type: tipo de ordem. Os valores podem ser de acordo com o método ORDER_TYPE
  • sl: Preço do Stop Loss
  • tp: Preço de realização do lucro
  • deviation: Desvio máximo aceitável
  • magic:
  • comment: Comentário
  • type_time: Expiração do tempo de ordem
  • type_filling:  Preenchimento da ordem

Construindo uma ordem por meio de Médias Móveis

Agora que entendemos como pode ser criado o request das ordens, vamos criar uma estratégia de Médias Moveis Simples e executar manualmente no MetaTrader 5.


fast_sma = talib.SMA(close, 42)
slow_sma = talib.SMA(close, 252)
last_fast_sma = fast_sma[-1]
last_slow_sma = slow_sma[-1]
price = mt5.symbol_info_tick(symbol).ask
deviation = 20
lot = 0.02
if last_fast_sma < last_slow_sma :
        request = {
                "action": mt5.TRADE_ACTION_DEAL, 
                "symbol": symbol,
                "volume": lot,
                "type": mt5.ORDER_TYPE_SELL,
                "sl": price - 0.005,
                "tp": price + 0.007,
                "deviation": deviation,
                "magic": 123456,
                "comment": "",
                "type_time": mt5.ORDER_TIME_GTC,
                "type_filling": mt5.ORDER_FILLING_IOC}
        mt5.order_send(request)

if  last_fast_sma > last_slow_sma :
        request = {
               "action": mt5.TRADE_ACTION_DEAL,
               "symbol": symbol,
               "volume": lot,
               "type": mt5.ORDER_TYPE_BUY,
               "sl": price + 0.005,
               "tp": price - 0.007,
               "deviation": deviation,
               "magic": 123456,
               "comment": "",
               "type_time": mt5.ORDER_TIME_GTC,
               "type_filling": mt5.ORDER_FILLING_IOC}
else:
    print('Esperando pelo sinal')

result = mt5.order_send(request)

print(result)

print(price)

mt5.shutdown()

A depender do resultado, poderá criar uma execução diferente. No próximo post, iremos elevar a complexidade e criar um algoritmo que possibilite o envio de ordens automaticamente e em tempo real.

______________________________________

Quer saber mais?

Veja nosso curso de Python para Investimentos.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Como criar um Agente de IA visualizador de dados

A criação de agentes de Inteligência Artificial (IA) capazes de transformar dados brutos em visualizações claras e informativas está se tornando cada vez mais acessível. Esses agentes podem automatizar tarefas complexas, desde a coleta de dados de diversas fontes até a geração de gráficos e tabelas, permitindo que os usuários foquem na análise e na tomada de decisões. Este post explora o processo de construção de um agente de IA para visualização de dados, destacando as ferramentas e os conceitos fundamentais envolvidos.

Criando um Simples Assistente de Pesquisa com LangGraph

O exercício utiliza o LangGraph para criar personas fictícias de analistas econômicos, entrevistá-las com um especialista fictício e, a partir dessas interações, gerar relatórios técnicos usando LLMs, buscas na web e execução paralela.

Construindo Corrective RAG (CRAG) com LangGraph

Este post explica o conceito de Agentic CRAG (Corrective Retrieval-Augmented Generation) e sua aplicação na análise das atas do COPOM. Mostramos como combinar recuperação de informações, avaliação de relevância, correção de consultas e busca externa em um fluxo estruturado com LangGraph.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.