Configurando o MetaTrader 5 na AWS
Um guia prático com detalhes que normalmente não tem contam.
Muitas pessoas me perguntam como faço para ter dados atualizados e em tempo real no QuantBrasil. A resposta é simples: desde o início do site temos uma máquina virtual rodando na AWS, coletando os dados e jogando num banco. Aliás, já escrevemos sobre como criar uma base de dados de preços usando Python e SQL.
Esse post será um guia conciso, mas se você deseja ver o tutorial completo, incluindo diversos detalhes que muitas vezes são deixados de lado, confira o vídeo abaixo:
Por que ter uma máquina virtual?
Algumas razões. Primeiro, o MetaTrader só roda no Windows. Lá se vão 15 anos que utilizo Linux ou (mais recentemente) Mac. Portanto, rodar o MetaTrader significava ter que rodar uma máquina virtual dentro do computador (através de um VirtualBox da vida), e quem já teve esse desprazer sabe que o consumo de memória é alto.
Segundo que se você quer de fato agir sobre esses dados (como por exemplo exibir alertas, iniciar trades, etc) é importante que a máquina esteja num ambiente estável, ou seja, não sujeita à queda de energia, atualizações, restarts, queda de internet, etc.
Assim, manter o MetaTrader rodando numa máquina na nuvem é a forma mais segura de coletar os dados em produção.
Por que a AWS?
A AWS é um mundo e eu mesmo conheço apenas o mínimo. Porém, ela é a cloud provider mais utilizada no planeta e provavelmente a mais confiável. Além disso, ela permite que você pare a máquina quando não está utilizando, o que ajuda na economia (falarei sobre isso mais pra frente).
Outra alternativa é utilizar uma VPS como a Hostinger. Eles já tem uma opção para criar uma máquina MetaTrader direto, que por sinal é bem em conta. Confesso que nunca testei essa opção, mas o experimento é válido. Se for testar, utilize o nosso link para ajudar o site!
A Hostinger tem um drawback, no entanto: o servidor fica sempre ligado e o pagamento é por mês (ou ano), enquanto na AWS você é cobrado pelo tempo que a máquina está ligada.
Escolhendo uma região
Uma vez na AWS, é importante escolher a região onde sua máquina vai estar. O ideal aqui é selecionar São Paulo (sa-east-1) pois, assumindo que você está no Brasil, é onde vai te oferecer a menor latência. Como vamos acessar a máquina constantemente, esse é um ganho de qualidade de vida relevante.
O ponto negativo é que o preço de rodar uma máquina no Brasil é mais alto que nos servidores americanos típicos, embora essa diferença não seja tão significativa principalmente se você não deixar a máquina rodando 24/7.
Criando uma máquina
O passo seguinte é criar uma instância através do painel EC2 da AWS. Aqui existem alguns pontos a se observar:
Escolha uma máquina Windows (eu escolhi o Windows Server 2025, a mais atualizada, quando gravei o vídeo);
Selecione pelo menos t3.medium. Esses são os recursos da máquina. Existem configurações mais baratas, mas vão ter uma latência muito maior e dependendo do que você fizer no MetaTrader, pode ter simplesmente memória insuficiente.
Em Storage, certifique-se de clicar em Advanced > Add new volume > Encrypted. Isso é necessário para permitir que a máquina hiberne. Mais sobre isso a seguir.
Em Advanced details, procure por Stop - Hibernate behavior e selecione Enable. Isso habilitará a hibernation na máquina.
Permitir que a máquina hiberne é fundamental para simplificar o workflow. Isso pois você pode hibernar a máquina (não sendo cobrado por ela) sem precisar reiniciar os seus scripts e programas. Assim, quando você reiniciar a máquina ela já volta operacional, sem necessidade de configurar nenhum startup script.
Acessando a máquina
Uma vez que a máquina esteja criada, você pode acessá-la através das configurações RDP, ou simplesmente copiar o host e decriptar a senha. Um detalhe: o processo de hibernate reseta o host da máquina (a menos que você pague por um IP fixo), portanto sempre fique de olho pelo EC2.
Configurando a máquina
Agora que a máquina já existe, é necessário fazer 2 downloads (e mais um para melhorar o seu workflow):
Baixe o MetaTrader 5. Em vez de fazer direto pelo site, recomendo usar o link de sua corretora. Eu utilizo a Genial e eles tem um link para download direto (não sou patrocinado nem nada, já utilizei a Clear também).
Baixe o Python. No vídeo instalei o Python 3.12.6. Certifique-se de adicionar o executável ao
PATH
.Baixe o VS Code (Opcional). O cliente VS Code permitirá que acessemos a máquina virtual através de um tunnel, como veremos a seguir. Esse passo não é necessário, mas é um ganho de qualidade de vida.
Depois de instalar todos os programas acima, abra um terminal PowerShell e verifique que está tudo em ordem:
python —-version
code --version
Tudo pronto! Você já é capaz de puxar dados diretamente do MetaTrader. O script abaixo (gerado no vídeo com o Claude) testa a funcionalidade:
import MetaTrader5 as mt5
from datetime import datetime, timedelta
import pandas as pd
def get_last_candles(symbol):
# Initialize MT5 connection
if not mt5.initialize():
print(f"MT5 initialization failed. Error: {mt5.last_error()}")
return None
try:
# Get the last 5 daily candles
candles = mt5.copy_rates_from_pos(symbol, mt5.TIMEFRAME_D1, 0, 5)
if candles is None:
print(f"Failed to get candles for {symbol}")
return None
# Convert to pandas DataFrame for better readability
df = pd.DataFrame(candles)
# Convert timestamp to datetime
df['time'] = pd.to_datetime(df['time'], unit='s')
return df
finally:
# Shutdown MT5 connection
mt5.shutdown()
if __name__ == "__main__":
symbol = "PETR4"
result = get_last_candles(symbol)
if result is not None:
print(result)
Antes de rodar, não se esqueça de instalar as bibliotecas:
pip install MetaTrader5 pandas
Configurando um tunnel no VS Code
Por fim, para não precisar editar diretamente na máquina virtual (que tende a ser bem mais lenta) é conveniente utilizar uma funcionalidade do VS Code chamada Remote Tunnels.
Basicamente os tunnels permitem que você acesse remotamente uma máquina virtual via VS Code. Dessa forma você consegue modificar o código direto do seu computador local – algo extremamente conveniente. Ao iniciar o tunnel você recebe um link que pode ser utilizado inclusive para acessar a máquina pelo navegador. Isso significa que você é capaz de programar através de qualquer dispositivo com acesso à internet!
Dica Bônus: hibernando a máquina virtual
Não há mais nada a ser feito além de uma dica bônus. Mencionei anteriormente que o fato de permitir que a máquina seja hibernada ajuda na manutenção dos custos, já que a qualquer momento a máquina pode ser pausada, e quando reiniciada, voltará de onde parou.
Esse processo pode ser feito de forma manual ou através de um script, permitindo que você o automatize (justamente o que faço no QuantBrasil):
10 minutos antes do pregão começar, inicio a máquina;
10 minutos após ele fechar, hiberno a máquina.
Fazendo isso reduzo a conta da AWS em aproximadamente 70%, pois a instância só precisa ficar ligada quando o mercado está aberto. O código para o script está no GitHub.
Agora que o MetaTrader está configurado em uma máquina virtual e não gera custos quando não está em uso, podemos explorar melhor o universo quantitativo.
Inscreva-se para acompanhar os próximos capítulos da série!
Perfeito o Video Rafael! car ame tira uma dúvida vc utiliza a genial para pegar os dados do meta?
Pergunto pois estou pegando os dados de la para fazer algumas modelos e cara a base é bem furada se pegar de 2017 para trás senhor! ja tentei todas as corretoras uma pior que a outra a genial aparece que é a menos pior. pode me dar esse feedback?
Belo tutorial. Parabéns!
E em relação ao custo, quanto mais ou menos mensalmente?