Untitled
unknown
plain_text
a year ago
2.2 kB
9
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