dev-resources.site
for different kinds of informations.
Análise de Rompimentos no Ativo US30: Um Script Python para Traders Usando MetaTrader 5
Published at
10/4/2024
Categories
telegram
metatrader5
pythontrading
Author
vital7777
Author
9 person written this
vital7777
open
import MetaTrader5 as mt5
import pandas as pd
from datetime import datetime, timedelta
import os
import sys
# Parâmetros de login
login = 1520378657 # Substitua pelo seu número de login
senha = "AA6=J?j67mU" # Substitua pela sua senha
servidor = "FTMO-Demo2" # Substitua pelo nome do servidor
mt5_path = r"C:\Program Files\FTMO MetaTrader 5\terminal64.exe" # Caminho do MetaTrader 5
# Inicializa a conexão com o MetaTrader 5
if not mt5.initialize(path=mt5_path):
print("Falha ao inicializar o MetaTrader 5")
mt5.shutdown()
exit()
# Tenta fazer login na conta específica
if not mt5.login(login, password=senha, server=servidor):
print("Falha ao fazer login no MetaTrader 5")
print("Erro:", mt5.last_error())
mt5.shutdown()
exit()
# Verifica as informações da conta
conta_info = mt5.account_info()
if conta_info is None:
print("Falha ao obter informações da conta")
mt5.shutdown()
exit()
print("Conectado à conta:", conta_info.login)
print("Nome do servidor:", conta_info.server)
# Define o ativo e o período de análise
ativo = "US30.cash" # Nome do ativo (Dow Jones)
periodo = mt5.TIMEFRAME_M1 # Timeframe de 1 minuto
data_inicio = datetime(2024, 7, 15) # Data inicial
data_fim = datetime.now() # Data final (hoje)
# Pega os dados históricos de candles entre as datas especificadas
dados_candles = mt5.copy_rates_range(ativo, periodo, data_inicio, data_fim)
# Converte os dados para um DataFrame para melhor visualização
df = pd.DataFrame(dados_candles)
# Verifica se o DataFrame está vazio
if df.empty:
print("Nenhum dado foi retornado. Verifique a conexão com o MetaTrader 5 e a disponibilidade do ativo.")
mt5.shutdown()
exit()
# Exibe informações sobre o DataFrame
print("Formato do DataFrame:", df.shape)
print("Colunas do DataFrame:", df.columns)
print("Tipos de dados das colunas:")
print(df.dtypes)
# Salva o DataFrame como CSV para inspeção
df.to_csv('dados_us30_1629_1630.csv', index=False)
print("Dados salvos em 'dados_us30_1629_1630.csv'")
# Verifica se a coluna 'time' existe
if 'time' not in df.columns:
print("A coluna 'time' não foi encontrada. Verifique o nome correto da coluna de tempo.")
# Tenta encontrar uma coluna que possa ser a de tempo
time_columns = df.select_dtypes(include=['int64', 'float64']).columns
if len(time_columns) > 0:
time_column = time_columns[0]
print(f"Usando a coluna '{time_column}' como coluna de tempo.")
df['time'] = pd.to_datetime(df[time_column], unit='s')
else:
print("Nenhuma coluna numérica encontrada para usar como tempo.")
mt5.shutdown()
exit()
else:
df['time'] = pd.to_datetime(df['time'], unit='s')
# Filtra os candles das 16:29 e 16:30 (horário MT5)
df_1629 = df[df['time'].dt.time == datetime.strptime("16:29", "%H:%M").time()]
df_1630 = df[df['time'].dt.time == datetime.strptime("16:30", "%H:%M").time()]
# Exibe os resultados filtrados
print("\nCandle das 16:29:")
print(df_1629)
print("\nCandle das 16:30:")
print(df_1630)
# Inicializa contadores para as estatísticas
stats = {
'0': 0,
'0-500': 0,
'500-1000': 0,
'1000-1500': 0,
'1500-2000': 0,
'2000-2500': 0,
'2500-3000': 0,
'3000-3500': 0,
'3500-4000': 0,
'4000-4500': 0,
'4500-5000': 0,
'5000-5500': 0,
'5500-6000': 0,
'6000-6500': 0,
'6500-7000': 0,
'7000-7500': 0,
'7500-8000': 0,
'8000-8500': 0,
'8500-9000': 0,
'9000-9500': 0,
'9500-10000': 0,
'10000+': 0
}
# Inicializa contadores para as novas estatísticas
rompimentos_um_lado = 0
rompimentos_dois_lados = 0
sem_rompimentos = 0
# Inicializa uma lista para armazenar os detalhes dos rompimentos
detalhes_rompimentos = []
# Calcula os rompimentos do candle das 16:30 em relação ao das 16:29
for i in range(min(len(df_1629), len(df_1630))):
data = df_1629.iloc[i]['time'].date()
max_1629 = df_1629.iloc[i]['high']
min_1629 = df_1629.iloc[i]['low']
max_1630 = df_1630.iloc[i]['high']
min_1630 = df_1630.iloc[i]['low']
volume_1629 = df_1629.iloc[i]['tick_volume']
volume_1630 = df_1630.iloc[i]['tick_volume']
tamanho_1629 = (max_1629 - min_1629) * 100 # Multiplicado por 100
tamanho_1630 = (max_1630 - min_1630) * 100 # Multiplicado por 100
rompimento_baixo = (min_1629 - min_1630) * 100 if min_1630 < min_1629 else 0
rompimento_cima = (max_1630 - max_1629) * 100 if max_1630 > max_1629 else 0
# Adiciona os detalhes à lista
detalhes_rompimentos.append({
'DT': data,
'RBaixo': rompimento_baixo,
'RCima': rompimento_cima,
'V29': volume_1629,
'V30': volume_1630,
'T29': tamanho_1629,
'T30': tamanho_1630
})
# Atualiza as estatísticas para rompimento baixo e cima
for rompimento in [rompimento_baixo, rompimento_cima]:
if rompimento == 0:
stats['0'] += 1
elif 0 < rompimento <= 500:
stats['0-500'] += 1
elif 500 < rompimento <= 1000:
stats['500-1000'] += 1
elif 1000 < rompimento <= 1500:
stats['1000-1500'] += 1
elif 1500 < rompimento <= 2000:
stats['1500-2000'] += 1
elif 2000 < rompimento <= 2500:
stats['2000-2500'] += 1
elif 2500 < rompimento <= 3000:
stats['2500-3000'] += 1
elif 3000 < rompimento <= 3500:
stats['3000-3500'] += 1
elif 3500 < rompimento <= 4000:
stats['3500-4000'] += 1
# Continue a adicionar as condições conforme necessário
# Aqui você pode adicionar mais lógica para análise ou visualização dos resultados
telegram Article's
30 articles in total
Sending logs to Telegram. Module for Laravel
read article
Create your own booking form in a minutes
read article
Build a Crypto Price Alert System with Telegram and AWS Lambda
read article
Ultimate List of 50+ Essential Telegram Bots
read article
Telegram bot para replicar sinais no mt5
read article
Telegram Roll Bot idea
read article
Find the Best Bots on Telegram
read article
The Importance & Uses of Telegram Channels/Group Links for Jobs, Education, & Awareness
read article
Top 10 Cricket Prediction Telegram Channels in India | CricChamp.in
read article
Footprint Analytics Brings Data-Driven Growth Solutions to Sei's Gaming Ecosystem
read article
Manage your team's tasks directly within Telegram
read article
Sending message from Telegram bot to users
read article
Monitoring Discord server, detect CA, sending it to telegram bot
read article
Pavel Durov's Arrest: Controversial Charges and Impacts on Free Speech
read article
How to Integrate Telegram Payments in a Django and React Mini App
read article
Creating a Telegram Bot with Python and AWS: A Step-by-Step short Guide
read article
A Python Framework for Telegram Bots
read article
Pavel Durov's Arrest: What It Means for Free Speech & Tech Innovation
read article
The Arrest of Pavel Durov: A Misstep in the Fight for Free Speech?
read article
Telegram's Decline in Security and Freedom: How Web4 Restores Free Speech Without Compromising Safety
read article
Scraping New Telegram Channels
read article
How Telegram Proxy for Web Works and Why It Matters
read article
Choosing the Right Telegram Proxy for Web Access
read article
Hamster Kombat Clone: The Perfect Blueprint - Everything You Need to Build and Deploy a Successful Telegram Play-to-Earn App
read article
The Controversy Behind Pavel Durov's Arrest: What You Need to Know
read article
Monitoring servers with Telegram
read article
The Controversial Arrest of Pavel Durov: Free Speech or Criminal Accountability?
read article
Pavel Durov's Arrest: A Misstep or a Warning for Digital Freedom?
read article
Pavel Durov's Arrest: A Clash of Free Speech and Tech Accountability
read article
Análise de Rompimentos no Ativo US30: Um Script Python para Traders Usando MetaTrader 5
currently reading
Featured ones: