Logo

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
Categories
3 categories in total
telegram
open
metatrader5
open
pythontrading
open
Author
9 person written this
vital7777
open
Análise de Rompimentos no Ativo US30: Um Script Python para Traders Usando MetaTrader 5
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
Enter fullscreen mode Exit fullscreen mode
telegram Article's
30 articles in total
Favicon
Sending logs to Telegram. Module for Laravel
Favicon
Create your own booking form in a minutes
Favicon
Build a Crypto Price Alert System with Telegram and AWS Lambda
Favicon
Ultimate List of 50+ Essential Telegram Bots
Favicon
Telegram bot para replicar sinais no mt5
Favicon
Telegram Roll Bot idea
Favicon
Find the Best Bots on Telegram
Favicon
The Importance & Uses of Telegram Channels/Group Links for Jobs, Education, & Awareness
Favicon
Top 10 Cricket Prediction Telegram Channels in India | CricChamp.in
Favicon
Footprint Analytics Brings Data-Driven Growth Solutions to Sei's Gaming Ecosystem
Favicon
Manage your team's tasks directly within Telegram
Favicon
Sending message from Telegram bot to users
Favicon
Monitoring Discord server, detect CA, sending it to telegram bot
Favicon
Pavel Durov's Arrest: Controversial Charges and Impacts on Free Speech
Favicon
How to Integrate Telegram Payments in a Django and React Mini App
Favicon
Creating a Telegram Bot with Python and AWS: A Step-by-Step short Guide
Favicon
A Python Framework for Telegram Bots
Favicon
Pavel Durov's Arrest: What It Means for Free Speech & Tech Innovation
Favicon
The Arrest of Pavel Durov: A Misstep in the Fight for Free Speech?
Favicon
Telegram's Decline in Security and Freedom: How Web4 Restores Free Speech Without Compromising Safety
Favicon
Scraping New Telegram Channels
Favicon
How Telegram Proxy for Web Works and Why It Matters
Favicon
Choosing the Right Telegram Proxy for Web Access
Favicon
Hamster Kombat Clone: The Perfect Blueprint - Everything You Need to Build and Deploy a Successful Telegram Play-to-Earn App
Favicon
The Controversy Behind Pavel Durov's Arrest: What You Need to Know
Favicon
Monitoring servers with Telegram
Favicon
The Controversial Arrest of Pavel Durov: Free Speech or Criminal Accountability?
Favicon
Pavel Durov's Arrest: A Misstep or a Warning for Digital Freedom?
Favicon
Pavel Durov's Arrest: A Clash of Free Speech and Tech Accountability
Favicon
Análise de Rompimentos no Ativo US30: Um Script Python para Traders Usando MetaTrader 5

Featured ones: