Como Enviar Ordens para a Bolsa Usando Python na Plataforma MetaTrader 5

Automatize suas operações com Python através do MetaTrader 5

por

Joabe Barbosa

02 de janeiro de 2025

2 min

A MetaTrader 5 (MT5) é uma das plataformas mais populares para negociação em mercados financeiros, como Forex, Ações e Futuros. Embora a linguagem MQL5 seja a principal usada na plataforma, o MetaTrader 5 oferece suporte para integrações com Python, permitindo que traders automatizem suas operações usando essa linguagem amplamente adotada.

Neste artigo, vamos explorar como enviar ordens para a bolsa através da plataforma MetaTrader 5 usando Python.

LEIA MAIS: Como Programar Robôs no MetaTrader 5

Configurando o Ambiente

Antes de começar, você precisa garantir que o ambiente esteja configurado corretamente:
  • Instale o MetaTrader 5: Baixe e instale a plataforma MetaTrader 5 no site oficial.
  • Instale o Python: Certifique-se de que o Python está instalado em sua máquina. Você pode baixá-lo em python.org
  • Instale o módulo MetaTrader5 para Python: O pacote oficial do MetaTrader 5 pode ser instalado usando o comando abaixo:

python

pip install MetaTrader5

Conectando ao MetaTrader 5

Para enviar ordens, precisamos primeiro nos conectar ao terminal MetaTrader 5. Veja como:

python

import MetaTrader5 as mt5

# Inicialização do terminal MT5
if not mt5.initialize():
   print("Falha ao inicializar o MetaTrader 5")
   print(mt5.last_error())
   quit()

print("MetaTrader 5 inicializado com sucesso")

# Conecte-se à conta
account_number = 12345678 # Substitua pelo seu número de conta
password = "sua_senha" # Substitua pela sua senha
server = "seu_servidor" # Substitua pelo servidor fornecido pelo broker

if not mt5.login(account_number, password, server):
   print("Erro ao conectar-se à conta:", mt5.last_error())
   quit()

print("Conexão bem-sucedida com a conta")

Verificando Informações do Símbolo

Antes de enviar uma ordem, é importante verificar se o símbolo que você deseja negociar está disponível:

python

symbol = “EURUSD” # Substitua pelo símbolo desejado

if not mt5.symbol_select(symbol, True):
   print(f”Erro ao selecionar o símbolo {symbol}”)
   quit()

print(f”Símbolo {symbol} selecionado com sucesso”)

Enviando uma Ordem de Compra

A função mt5.order_send() é usada para enviar ordens ao mercado. Abaixo está um exemplo de uma ordem de compra:

python

# Obtenha as posições abertas
positions = mt5.positions_get(symbol=symbol)

if positions:
   for position in positions:
       if position.type == mt5.ORDER_TYPE_BUY:
          close_request = {
              “action”: mt5.TRADE_ACTION_DEAL,
              “symbol”: symbol,
              “volume”: position.volume,
              “type”: mt5.ORDER_TYPE_SELL,
              “price”: mt5.symbol_info_tick(symbol).bid,
              “deviation”: 20,
              “magic”: 123456,
              “comment”: “Fechando posição via Python”,
          }

          close_result = mt5.order_send(close_request)
          if close_result.retcode != mt5.TRADE_RETCODE_DONE:
              print(f”Erro ao fechar a ordem: {close_result.retcode}”)
          else:
              print(“Ordem fechada com sucesso”)
else:
    print(“Nenhuma posição encontrada para o símbolo”, symbol)

Fechando uma Ordem

Para fechar uma posição, envie uma ordem oposta (venda, se a posição aberta for de compra):

python

# Obtenha as posições abertas
positions = mt5.positions_get(symbol=symbol)

if positions:
   for position in positions:
       if position.type == mt5.ORDER_TYPE_BUY:
          close_request = {
              "action": mt5.TRADE_ACTION_DEAL,
              "symbol": symbol,
              "volume": position.volume,
              "type": mt5.ORDER_TYPE_SELL,
              "price": mt5.symbol_info_tick(symbol).bid,
              "deviation": 20, "magic": 123456,
                 "comment": "Fechando posição via Python",
           }

          close_result = mt5.order_send(close_request)
          if close_result.retcode != mt5.TRADE_RETCODE_DONE:
             print(f"Erro ao fechar a ordem:{close_result.retcode}")
          else:
             print("Ordem fechada com sucesso")
else:
   print("Nenhuma posição encontrada para o símbolo", symbol)

LEIA MAIS: Novo estudo da FGV mostra que 5% dos day traders experientes ganharam mais de R$ 10 mil por mês

Usar Python para enviar ordens através da plataforma MetaTrader 5 oferece flexibilidade e poder de integração com outras bibliotecas e sistemas. Este guia mostrou como configurar o ambiente, conectar-se ao terminal, selecionar símbolos, enviar ordens e gerenciar posições.

No entanto, lembre-se de sempre testar suas estratégias em uma conta demo antes de operar com dinheiro real. Além disso, estude os riscos envolvidos nos mercados financeiros para garantir uma experiência de trading responsável.

Boa sorte e bons trades!

Para você: Os principais insights para começar bem a semana!

*Ao clicar em “Inscreva-se” você estará concordando com a Política de Privacidade.

Joabe Barbosa

Joabe Barbosa

Mestre em Economia, Graduando em Ciência da Computação

ÚLTIMAS

Weekly QUANTCODE

A newsletter com insights do mundo dos investimentos, direto no seu e-mail

*Ao clicar em “Inscreva-se” você estará concordando com a Política de Privacidade.