
Integração MQL5: Python
Introdução
Neste novo artigo, vou lhe dar uma introdução definitiva a uma ferramenta importante que agregará valor às suas habilidades de programação. Vamos abordar a Integração Python. Quando se trata de como isso pode ser útil para nós como desenvolvedores, dependerá dos seus objetivos de software, pois o Python é uma linguagem de programação de alto nível que é fácil de ler e também simples. Python é uma linguagem de programação que oferece bibliotecas extensivas para áreas como análise de dados, computação estatística e aprendizado de máquina. Portanto, a integração do Python com o MQL5 pode fornecer melhores insights que podem ser úteis para participantes do mercado financeiro, a fim de melhorar seus resultados por meio de processamento de dados e análises preditivas.
Neste artigo, vou explicar como usar o Python com MQL5, dando-lhe noções básicas de Python e alguns exemplos simples após configurarmos nosso ambiente. Abordarei isso nos seguintes tópicos:
- Visão geral do Python
- Benefícios da integração com Python
- Configurando o Ambiente
- Aplicações simples
- Conclusão
Vamos explorar profundamente este tópico interessante para entender como podemos melhorar nossos resultados de trading utilizando o Python com o MQL5.
Visão geral do Python
Python foi desenvolvido por Guido van Rossum e lançado em 1991. É uma linguagem de programação de alto nível conhecida pela sua legibilidade e simplicidade, tornando-a ideal tanto para iniciantes quanto para desenvolvedores experientes. Ela é adequada para uma ampla gama de aplicações, desde scripts simples até sistemas complexos, e sua sintaxe concisa permite um código limpo e fácil de manter.
As principais características do Python incluem:
- Legibilidade: Tornando o código mais fácil de ler e escrever, a sintaxe do Python é intuitiva e espelha a linguagem natural.
- Linguagem interpretada: O Python executa o código linha por linha, tornando o processo de depuração e desenvolvimento mais fácil.
- Tipagem dinâmica: Os tipos das variáveis são determinados em tempo de execução, proporcionando flexibilidade na codificação.
- Biblioteca padrão extensa: A biblioteca abrangente do Python oferece suporte para tarefas comuns, como I/O de arquivos, chamadas de sistema e manipulação de dados.
- Versatilidade: O Python oferece suporte para uma ampla gama de paradigmas de programação, incluindo programação orientada a objetos, procedural e funcional.
- Compatibilidade entre plataformas: O Python funciona em vários sistemas operacionais, como Windows, MacOS e Linux, sem necessidade de alterações no código.
- Comunidade forte e ecossistema: A grande comunidade e o ecossistema do Python oferecem várias bibliotecas e ferramentas que expandem as possibilidades do Python.
Áreas de aplicação do Python incluem:
- Ciência de dados: Bibliotecas de análise e visualização de dados, como Pandas e Matplotlib.
- Inteligência Artificial: Ferramentas de aprendizado de máquina como scikit-learn, TensorFlow e Keras.
- Automação: Selenium e Beautiful Soup para automação de tarefas repetitivas.
- Desenvolvimento web: Frameworks para desenvolvimento de aplicativos web como Django e Flask.
- Pesquisa científica: Ideal para simulação, análise estatística e construção de modelos.
Pandas, NumPy, SciPy, scikit-learn, TensorFlow, Matplotlib, Selenium, Django e Flask são algumas das bibliotecas e frameworks Python mais populares. Em resumo, a popularidade contínua do Python no mundo da programação deve-se à sua combinação de legibilidade, simplicidade e bibliotecas poderosas.
Benefícios da integração com Python
Como mencionado anteriormente, a integração do Python com o MQL5 oferece uma variedade de recursos vantajosos, tornando-se uma adição valiosa ao sistema. Esta seção tenta apresentar as vantagens mais significativas associadas à integração do Python em um sistema MQL5.
Portanto, a integração desses dois sistemas oferece as seguintes vantagens:
- Facilita a manipulação e análise sofisticada de dados por meio do uso de técnicas avançadas de análise de dados, utilizando as extensas bibliotecas disponíveis no Python, incluindo Pandas e NumPy.
- A incorporação de bibliotecas de aprendizado de máquina, como scikit-learn, TensorFlow e Keras, permite o desenvolvimento e a implementação de modelos de aprendizado de máquina para análises preditivas.
- Automatiza estratégias de trading complexas e as otimiza utilizando o robusto ecossistema do Python, o que ajuda a aplicar automação e eficiência.
- Aprimora seus algoritmos de trading utilizando a vasta coleção de bibliotecas e frameworks do Python.
Para mais detalhes:
Análise de Dados:
É possível utilizar as bibliotecas do Python de forma eficaz. O Python oferece uma infinidade de bibliotecas voltadas para análise de dados, incluindo Pandas e NumPy. Essas bibliotecas facilitam a manipulação sofisticada de dados e a análise estatística, melhorando assim a qualidade e profundidade da análise nas estratégias de trading.
- A biblioteca Pandas fornece estruturas de dados e métodos de alto nível que facilitam uma análise de dados rápida e direta. A biblioteca Pandas permite que os usuários lidem de forma eficiente com grandes conjuntos de dados e realizem operações como filtragem, agrupamento e agregação de dados com pouco esforço.
- O NumPy é uma biblioteca computacional que oferece suporte para cálculos numéricos eficientes, tornando-a bem adequada para manipulação de grandes matrizes e arrays de dados numéricos. Ele oferece uma gama abrangente de operações matemáticas e é frequentemente utilizado como a biblioteca fundamental sobre a qual outras bibliotecas, como Pandas e scikit-learn, são construídas.
Aprendizado de Máquina:
Na área de aprendizado de máquina, a linguagem Python é a escolha preferida devido à sua simplicidade e à disponibilidade de bibliotecas robustas, incluindo scikit-learn, TensorFlow e Keras. Quando integrada ao MQL5, os traders podem utilizar essas bibliotecas para construir, desenvolver e implantar modelos preditivos que empregam dados históricos para prever movimentos de mercado.
- Scikit-learn: Esta biblioteca oferece aos usuários ferramentas simples, mas eficazes, para aprendizado de máquina, permitindo-lhes realizar uma análise e mineração de dados detalhada. Ela possui uma gama diversificada de algoritmos, atendendo a várias necessidades, incluindo classificação, agrupamento, regressão e muito mais.
- TensorFlow e Keras: São ferramentas altamente populares e amplamente utilizadas entre desenvolvedores para fins de aprendizado profundo, oferecendo um conjunto abrangente de ferramentas para construir e treinar redes neurais para criar modelos sofisticados.
Automação e Eficiência:
No contexto de tarefas repetitivas e estratégias de trading sofisticadas, a automação pode ser uma solução eficaz. Ao automatizar processos, os traders podem agilizar suas operações e reduzir a possibilidade de erro humano. Isso é particularmente benéfico ao trabalhar com estratégias complexas, pois ter um código claro e preciso para a estratégia em questão pode ajudar a mitigar riscos.
- Essa automação pode ser aplicada a uma variedade de tarefas relacionadas a dados, como coleta, processamento e análise, liberando o tempo dos traders, permitindo-lhes focar no desenvolvimento e execução das estratégias.
- Além disso, essa abordagem pode ser aplicada a backtesting e otimização, utilizando dados históricos para avaliar o desempenho da estratégia e identificar áreas para melhoria por meio da otimização de parâmetros, levando, em última instância, a resultados aprimorados.
Acesso a uma gama abrangente de bibliotecas e frameworks:
A funcionalidade do MQL5 pode ser aprimorada por meio do uso de um ecossistema abrangente de bibliotecas e frameworks. Esses incluem ferramentas estatísticas avançadas, APIs para fontes externas de dados e visualizações complexas, que podem ser aproveitadas para expandir as capacidades das suas aplicações MQL5.
- Esses incluem ferramentas estatísticas avançadas, APIs para fontes externas de dados e visualizações complexas, que podem ser aproveitadas para expandir as capacidades das suas aplicações MQL5.
- APIs e Fontes de Dados: Bibliotecas Python oferecem uma solução conveniente para obter dados financeiros, realizar web scraping e acessar fontes de dados. Essas bibliotecas podem interagir com várias APIs, o que é vantajoso para quem deseja aprimorar suas estratégias de trading.
Existem muitos outros benefícios a serem considerados ao falar sobre este tópico, mas acredito que mencionamos os benefícios mais importantes de integrar o Python em nossos sistemas.
Forneceremos aplicações diretas para áreas relacionadas ao trading que podem ser aplicadas na prática. Isso ajudará a ilustrar como usamos conceitos de trading ao integrar Python ao MQL5. Vamos examinar como esses conceitos e técnicas podem ser usados em diferentes áreas, demonstrando como eles podem ser integrados aos processos de trading.
Configurando o Ambiente
Nesta seção, vamos configurar o software necessário para usar o Python com o MQL5, e os seguintes são os passos a serem seguidos.
- Baixe e instale o MetaTrader 5 visitando https://www.metatrader5.com/pt e depois instale-o no seu dispositivo.
- Baixe a versão mais recente do Python de https://www.python.org/downloads/windows
- Ao instalar o Python, marque "Add Python to PATH%" para poder rodar scripts Python a partir da linha de comando.
- É de extrema importância criar um ambiente distinto para cada projeto, para manter uma configuração limpa, isolada e reproduzível. Os passos a seguir ilustram como isso pode ser feito através da linha de comando:
- Navegue até o diretório do projeto
cd /path/to/your/project
- Use o venv para criar o ambiente mytestenv (Ferramenta de Ambiente Virtual incorporada)
python -m venv mytestenv
- Agora é necessário ativar o ambiente que foi criado
mytestenv\Scripts\activate
- O módulo MetaTrader 5 deve ser instalado pela linha de comando. Você pode visitar o pacote do MetaTrader5 Python através do https://pypi.org/project/MetaTrader5/.
pip install MetaTrader5
- Mostre os detalhes da instalação do MetaTrader
pip show MetaTrader5
- Para facilitar a utilização das funções mencionadas, é necessário adicionar os pacotes matplotlib e pandas
pip install matplotlib pip install pandas
- Em caso de desativação, podemos usar o seguinte comando na linha de comando
deactivate
Neste ponto do processo, o software necessário, ou seja, MetaTrader5, Python e as bibliotecas exigidas, foi instalado no dispositivo, permitindo o início do trabalho.
Aplicações simples
Como mencionado anteriormente, o Python e o MQL5 são ferramentas valiosas que podem ser usadas em uma variedade de tarefas e domínios, incluindo análise de dados, aprendizado de máquina e automação. Esta seção tem como objetivo apresentar aplicações simples relacionadas ao trading, que ilustram a utilização de scripts Python com o MetaTrader 5 para obter uma visão geral de algumas das tarefas fundamentais que podem ser realizadas.
Aplicação um: Abrir o MT5 usando um script Python:
Nesta aplicação, o objetivo é criar um script Python que abrirá o terminal MetaTrader 5 e imprimirá uma mensagem indicando se o terminal foi inicializado ou não. O código a seguir representa o script completo. É necessário substituir o (xxxxx) pelos detalhes relevantes da sua conta, incluindo número de conta, login, senha e servidor do corretor.
import MetaTrader5 as mt5 print ("MetaTrader5 PKG version: ",mt5.__version__) if mt5.initialize(login=xxxxx, server="xxxxx",password="xxxxx"): print ("MT5 initialized Successfully") else: print ("MT5 initialization Failed, Error code ",mt5.last_error())
Após rodar este código, você verá que o terminal MetaTrader 5 foi inicializado da mesma forma que ao clicar no arquivo executável, e então poderá usá-lo normalmente para suas operações de trading. Além disso, você verá o seguinte resultado no seu console:
- Versão do MetaTrader5 PKG: 5.0.4424
- Autor do MetaTrader5 PKG: MetaQuotes Ltd.
- MT5 inicializado com sucesso
Aplicação dois: Abrir posições usando um script Python:
Nesta aplicação, o objetivo é criar um script Python que permita abrir uma posição de compra no terminal MetaTrader 5. Os seguintes passos serão realizados para alcançar isso: será criado um script para abrir uma posição de compra de 0,01 no XAUUSD no preço Ask, com um nível de stop loss e take profit.
O modelo MetaTrader5 deve ser importado como mt5.
import MetaTrader5 as mt5
Imprimindo a versão do MetaTrader5 como uma informação do pacote.
print ("MetaTrader5 PKG version: ",mt5.__version__)
Imprimindo o autor do MetaTrader5 como uma informação do pacote.
print ("MetaTrader5 PKG author: ",mt5.__author__)
A conexão com o MetaTrader5 é inicializada com uma mensagem indicando se a inicialização foi bem-sucedida ou não. Se não for bem-sucedida, a mensagem fornecerá o código de erro. Os detalhes da conta, incluindo login, servidor do corretor e senha, devem ser substituídos pelos detalhes reais da conta.
if mt5.initialize(login=xxxxx, server="xxxxx",password="xxxxx"): print ("MT5 initialized Successfully") else: print ("MT5 initialization Failed, Error code ",mt5.last_error())
As seguintes variáveis são declaradas: símbolo, lote, ponto, tipo_ordem, preço, sl, tp, desvio, mágico, comentário, tipo_tempo e tipo_preenchimento.
symbol="XAUUSD" lot=0.01 point=mt5.symbol_info(symbol).point order_type=mt5.ORDER_TYPE_BUY price=mt5.symbol_info_tick(symbol).ask sl=mt5.symbol_info_tick(symbol).ask-100 tp=mt5.symbol_info_tick(symbol).ask+150 deviation=10 magic=2222222 comment="python order" type_time=mt5.ORDER_TIME_GTC type_filling=mt5.ORDER_FILLING_IOC
Enviando a ordem ao declarar a solicitação para ser equivalente aos detalhes da ordem conforme declarado anteriormente.
request={ "action":mt5.TRADE_ACTION_DEAL, "symbol":symbol, "volume":lot, "type":order_type, "price":price, "sl":sl, "tp":tp, "deviation":deviation, "magic":magic, "comment":comment, "type_time":type_time, "type_filling":type_filling, }
Verifique se há fundos suficientes para realizar a operação de trading solicitada usando (order_check) para ser equivalente ao valor do resultado. O resultado da verificação é retornado como uma estrutura MqlTradeCheckResult.
result=mt5.order_check(request)
A execução das operações de trading é realizada transmitindo uma solicitação via a função "order_send", que serve como equivalente ao valor do resultado, atualizando-o.
result=mt5.order_send(request)
Agora é necessário encerrar a conexão com o terminal MetaTrader 5 que foi previamente estabelecida usando a função shutdown().
mt5.shutdown()
Consequentemente, o código completo pode ser encontrado da mesma maneira demonstrada pelo seguinte bloco de código.
import MetaTrader5 as mt5 print ("MetaTrader5 PKG version: ",mt5.__version__) print ("MetaTrader5 PKG author: ",mt5.__author__) if mt5.initialize(login=xxxxx, server="xxxxx",password="xxxxx"): print ("MT5 initialized Successfully") else: print ("MT5 initialization Failed, Error code ",mt5.last_error()) symbol="XAUUSD" lot=0.01 point=mt5.symbol_info(symbol).point order_type=mt5.ORDER_TYPE_BUY price=mt5.symbol_info_tick(symbol).ask sl=mt5.symbol_info_tick(symbol).ask-100 tp=mt5.symbol_info_tick(symbol).ask+150 deviation=10 magic=2222222 comment="python order" type_time=mt5.ORDER_TIME_GTC type_filling=mt5.ORDER_FILLING_IOC request={ "action":mt5.TRADE_ACTION_DEAL, "symbol":symbol, "volume":lot, "type":order_type, "price":price, "sl":sl, "tp":tp, "deviation":deviation, "magic":magic, "comment":comment, "type_time":type_time, "type_filling":type_filling, } result=mt5.order_check(request) result=mt5.order_send(request) mt5.shutdown()
O resultado obtido ao executar o código será idêntico ao seguinte:
- Versão do MetaTrader5 PKG: 5.0.4424
- Autor do MetaTrader5 PKG: MetaQuotes Ltd.
- MT5 inicializado com sucesso
- Uma operação de compra no ouro (XAUUSD) foi iniciada no preço Ask com um tamanho de lote de 0,01, uma ordem de stop-loss no preço Ask menos 100, e um take-profit no preço Ask mais 150.
Aplicação três: Usando a API do MT5 Python para obter dados:
Uma infinidade de tarefas pode ser realizada utilizando o MQL5 e Python no contexto de gerenciamento de dados. Esta seção apresentará um exemplo simples relacionado ao trading, no qual dados financeiros são obtidos usando a API do MT5 Python. Além de plotar os dados em um gráfico para fins de visualização, o preço do ouro (XAUUSD) de 1º de agosto de 2023 até o momento (A data de redação do artigo era 12 de agosto de 2024) será obtido, impresso e visualizado como um gráfico de linha. Os seguintes passos serão apresentados para esse processo.
As bibliotecas necessárias devem ser importadas:
O módulo MetaTrader5, designado como "mt5", deve ser importado para uso futuro como um objeto de interação com o terminal de trading MetaTrader 5, conforme determinado anteriormente.
import MetaTrader5 as mt5
A biblioteca do Pandas é importada como pd para fins de manipulação e análise de dados.
import pandas as pd
Importando o plotly.express como px para ser usado na visualização de dados e apresentar os dados do XAUUSD.
import plotly.express as px
Importando plot do plotly.offline para facilitar a geração de gráficos sem a necessidade de uma conexão com a internet.
from plotly.offline import plot
Para facilitar a manipulação de datas e horas, é necessário importar o módulo datetime de datetime.
from datetime import datetime
Imprimindo as informações do pacote MetaTrader5 (versão e autor).
print ("MetaTrader5 PKG version: ",mt5.__version__) print ("MetaTrader5 PKG author: ",mt5.__author__)
O terminal MetaTrader 5 é inicializado, e uma mensagem é impressa no console para indicar se a inicialização foi bem-sucedida. Se a inicialização for bem-sucedida, a mensagem "MT5 inicializado com sucesso" será exibida. Por outro lado, se a inicialização falhar, a mensagem "Falha na inicialização do MT5, código de erro" será exibida, juntamente com o código de erro e a última mensagem de erro.
if mt5.initialize(login=xxxxx, server="xxxxx",password="xxxxx"): print ("MT5 initialized Successfully") else: print ("MT5 initialization Failed, Error code ",mt5.last_error())
Os dados históricos (abertura, máxima, mínima, fechamento, volume, spread e volume real) do XAUUSD foram obtidos na plataforma MetaTrader 5. O seguinte comando foi utilizado para esse fim:
- pd.DataFrame: Um pd.dataFrame pode ser criado com critérios específicos, resultando em uma estrutura de dados bidimensional e rotulada.
- mt5.copy_rates_range: é utilizado para determinar o tipo de dado em termos de símbolo (XAUUSD), intervalo de tempo (mt5.TIMEFRAME_D1), data de início (datetime(2023,8,1)) e data de término (datetime.now()).
xauusd_data=pd.DataFrame(mt5.copy_rates_range("XAUUSD", mt5.TIMEFRAME_D1, datetime(2023,8,1), datetime.now()))
A coluna de tempo é convertida de carimbos de data/hora Unix para um formato de data legível usando a função pandas.to_datetime.
xauusd_data['time'] = pd.to_datetime(xauusd_data['time'],unit='s')
Os dados recuperados para o XAUUSD devem ser impressos conforme a seguinte linha de código.
print(xauusd_data)
Os dados recuperados foram plotados usando a função px.line, que permite a criação de um gráfico de linha utilizando o Plotly Express. Este gráfico representa o preço do XAUUSD ao longo do tempo, desde o primeiro de agosto de 2023 até o momento.
fig = px.line(xauusd_data, x=xauusd_data['time'], y=xauusd_data['close']) plot(fig)
O código completo é o mesmo que este bloco de código.
import MetaTrader5 as mt5 import pandas as pd import plotly.express as px from plotly.offline import plot from datetime import datetime print ("MetaTrader5 PKG version: ",mt5.__version__) print ("MetaTrader5 PKG author: ",mt5.__author__) if mt5.initialize(login=xxxxx, server="xxxxx",password="xxxxx"): print ("MT5 initialized Successfully") else: print ("MT5 initialization Failed, Error code ",mt5.last_error()) xauusd_data=pd.DataFrame(mt5.copy_rates_range("XAUUSD", mt5.TIMEFRAME_D1, datetime(2023,8,1), datetime.now())) xauusd_data['time'] = pd.to_datetime(xauusd_data['time'],unit='s') print(xauusd_data) fig = px.line(xauusd_data, x=xauusd_data['time'], y=xauusd_data['close']) plot(fig)
Ao executar o código, os seguintes resultados são obtidos.
- A mensagem de (MetaTrader5 PKG versão: 5.0.4424) foi impressa no console
- A mensagem de (MetaTrader5 PKG autor: MetaQuotes Ltd.) foi impressa no console
- A mensagem de (MT5 inicializado com sucesso) foi impressa no console
- Os dados do XAUUSD impressos no console são os mesmos que a seguinte figura
- Abrindo o gráfico do XAUUSD em um navegador como resultado do gráfico plotado, conforme o seguinte
Como ilustrado na figura anterior, um gráfico de linha representa os preços de fechamento do ouro (XAUUSD) ao longo do tempo, abrangendo de agosto de 2023 até o presente. As aplicações simples mencionadas demonstram o potencial do uso do Python com o MQL5 em diversos aspectos do comércio automatizado, análise de dados e outras tarefas relacionadas.
Conclusão
Python é uma linguagem de programação altamente versátil e poderosa, que pode ser utilizada em diversas áreas, incluindo comércio e mercados financeiros. O uso do Python permite a automação, análise de dados e execução de estratégias, o que facilita decisões de negociação mais informadas. A combinação de Python e MQL5 permite a criação de sistemas de negociação sofisticados que utilizam dados e aprendizado de máquina. Ela representa um avanço significativo no campo do comércio algorítmico. Permite a criação de sistemas de negociação mais adaptáveis e baseados em dados. Essa combinação tem o potencial de aprimorar os resultados de negociação nos mercados financeiros.
Este artigo demonstrou o uso do Python em conjunto com o MQL5. Além disso, o artigo descreveu os passos necessários para configurar um ambiente Python para o MetaTrader 5. Ao estabelecer um fluxo de trabalho eficaz, os desenvolvedores podem gerenciar dependências de forma mais eficiente e melhorar a escalabilidade de seus sistemas de negociação. Python é capaz de automatizar tarefas e analisar tendências do mercado. Isso é demonstrado por aplicações práticas, incluindo a abertura do MetaTrader 5, execução de negociações, recuperação de dados de ativos e visualização deles.
Espero que este artigo o ajude a começar a usar o Python com o MQL5. Experimentar com várias aplicações pode ser muito benéfico para traders e desenvolvedores. Para mais informações, consulte recursos como:
- Python for Dummies por Stef Maruch
- Python Crash Course por Eric Matthes
- Python All-In-One por John Shovic e Alan Simpson
Além disso, você pode acessar mais documentação no site do MQL5 através do link https://www.mql5.com/pt/docs/python_metatrader5.
Traduzido do Inglês pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/en/articles/14135
Aviso: Todos os direitos sobre esses materiais pertencem à MetaQuotes Ltd. É proibida a reimpressão total ou parcial.
Esse artigo foi escrito por um usuário do site e reflete seu ponto de vista pessoal. A MetaQuotes Ltd. não se responsabiliza pela precisão das informações apresentadas nem pelas possíveis consequências decorrentes do uso das soluções, estratégias ou recomendações descritas.





- 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
Muito interessante, infelizmente a biblioteca python do MetaTrader ainda não está disponível para MacOs.
Obrigado,
encontrei apenas um erro no terceiro aplicativo
from plotly.offline import plot could not be resolved
Resolvi isso reinstalando: pandas e matplotlib
c:\pip install MetaTrader5 pandas matplotlib
e, em seguida, modifiquei o código da seguinte forma:
Espero que ajude
Obrigado,
apenas encontrei um erro no terceiro aplicativo
from plotly.offline import plot não pôde ser resolvido
Resolvi isso reinstalando: pandas e matplotlib
c:\pip install MetaTrader5 pandas matplotlib
...Também é possível instalar a biblioteca Plotly:
Mais informações:
https://plotly.com/python/getting-started/