Untitled
unknown
plain_text
2 years ago
2.2 kB
13
Indexable
import MetaTrader5 as mt5
from telegram import Bot
from telegram.utils.request import Request
import time
import socket
# Tus credenciales de MT5
mt5_account = int('4833928') # Asegúrate de que esto sea un número entero
mt5_password = 'Crash182!'
mt5_server = 'Eightcap-Demo'
# Conectar a MT5
if not mt5.initialize(login=mt5_account, password=mt5_password, server=mt5_server):
print("Error al inicializar MT5:", mt5.last_error())
quit()
# Token del bot de Telegram
telegram_token = '6867411989:AAHwUk2iMkKeicV3Ku_KxiK7h1BOFzBpfio'
# ID del chat de Telegram
chat_id = '-1002036580455'
# Crear una solicitud con un tiempo de espera más largo
request = Request(connect_timeout=10.0, read_timeout=30.0)
# Crear el bot con la solicitud personalizada
bot = Bot(token=telegram_token, request=request)
# Mantener un registro de las posiciones ya notificadas
notified_positions = set()
def check_positions_and_notify():
# Obtener posiciones abiertas
positions = mt5.positions_get()
if positions is None or len(positions) == 0:
print("No hay posiciones abiertas actualmente.")
return
for position in positions:
# Verificar si la posición ya ha sido notificada
if position.ticket in notified_positions:
continue # Saltar esta posición si ya ha sido notificada
# Formatear mensaje
message = f"PAIR: {position.symbol}\nEntry Price: {position.price_open}\nStop Loss: {position.sl}\nTP: {position.tp}"
# Intentar enviar mensaje a Telegram
try:
bot.send_message(chat_id=chat_id, text=message)
notified_positions.add(position.ticket) # Añadir la posición al conjunto de notificados
except socket.timeout:
print("Tiempo de espera excedido al intentar enviar el mensaje. Reintentando...")
time.sleep(5) # Espera 5 segundos antes de reintentar
bot.send_message(chat_id=chat_id, text=message)
# Llamada a la función en un bucle
while True:
check_positions_and_notify()
time.sleep(60) # Espera 60 segundos antes de la próxima verificación
Editor is loading...
Leave a Comment