Maison >développement back-end >Tutoriel Python >Bot Telegram pour répliquer les signaux sur mt5
Nous analyserons et expliquerons le code en détail étape par étape. Ce script utilise la Bibliothèque Telethon pour se connecter à Telegram et reçoit les signaux d'un groupe, qui sont utilisés pour passer des commandes dans MetaTrader 5 (MT5). L'exécution du code implique de se connecter à MT5, d'écouter les messages sur Telegram et d'exécuter des ordres d'achat et de vente basés sur ces messages.
from telethon import TelegramClient, events import MetaTrader5 as mt5 import asyncio import logging from datetime import datetime import signal import os import sys import pkg_resources
print("Python executando de:", sys.executable) print("Ambiente virtual:", sys.prefix) print("Versão do Python:", sys.version) print("VIRTUAL_ENV:", os.environ.get('VIRTUAL_ENV'))
Ici, le code imprime des informations sur l'environnement dans lequel Python est exécuté, telles que la version de Python, le chemin de l'environnement virtuel et l'emplacement d'exécution de Python.
installed_packages = [d for d in pkg_resources.working_set] for package in installed_packages: print(package)
Le code affiche tous les packages Python installés dans l'environnement actuel, à l'aide de la bibliothèque pkg_resources.
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__)
API_ID = '78787878' API_HASH = '12e957773a9a554cb6e32997122706f6' PHONE_NUMBER = '+5512991111111' GROUP_USERNAME = '@Nas100freepip'
CONTAS_MT5 = [ {"login": 1690062, "senha": '5jsXlBg3~T', "servidor": 'ACGMarkets-Live', "us30": "US30.raw", "nas100": "NAS100.raw", "lote": 4.00} ]
Définit une liste de comptes MT5 que le bot peut utiliser pour exécuter des commandes. Chaque compte contient :
from telethon import TelegramClient, events import MetaTrader5 as mt5 import asyncio import logging from datetime import datetime import signal import os import sys import pkg_resources
Cette fonction tente de se reconnecter à MetaTrader 5 pour un compte spécifique jusqu'au nombre maximum de tentatives (max_tries). Si la reconnexion échoue après le nombre de tentatives, elle renvoie False.
print("Python executando de:", sys.executable) print("Ambiente virtual:", sys.prefix) print("Versão do Python:", sys.version) print("VIRTUAL_ENV:", os.environ.get('VIRTUAL_ENV'))
Cette fonction envoie un ordre d'achat ou de vente à MetaTrader 5, selon le type d'action (achat ou vente). La fonction :
installed_packages = [d for d in pkg_resources.working_set] for package in installed_packages: print(package)
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__)
Cette fonction vérifie périodiquement la connexion à MetaTrader 5 pour chaque compte actif. Si un compte ne parvient pas à se reconnecter, il est supprimé de la liste.
API_ID = '78787878' API_HASH = '12e957773a9a554cb6e32997122706f6' PHONE_NUMBER = '+5512991111111' GROUP_USERNAME = '@Nas100freepip'
Capture les signaux d'interruption (SIGINT ou SIGTERM), tels que la commande Ctrl C ou la fin du processus, et termine le programme proprement.
CONTAS_MT5 = [ {"login": 1690062, "senha": '5jsXlBg3~T', "servidor": 'ACGMarkets-Live', "us30": "US30.raw", "nas100": "NAS100.raw", "lote": 4.00} ]
async def reconectar_mt5(conta, max_tentativas=3): for tentativa in range(max_tentativas): try: if mt5.initialize(path=MT5_PATH, login=conta['login'], server=conta['servidor'], password=conta['senha']): logger.info(f"Reconexão bem-sucedida para conta {conta['login']}") return True else: logger.warning(f"Tentativa {tentativa + 1} de reconexão falhou para conta {conta['login']}: {mt5.last_error()}") except Exception as e: logger.error(f"Erro durante a tentativa {tentativa + 1} de reconexão para conta {conta['login']}: {e}") await asyncio.sleep(5) logger.error(f"Falha ao reconectar à conta {conta['login']} após {max_tentativas} tentativas") return False
La fonction main() est exécutée à l'aide de asyncio.run() pour gérer l'exécution de code asynchrone.
Ce code est un bot de trading automatisé qui utilise Telegram pour recevoir des signaux d'achat et de vente, traite ces signaux et envoie des ordres à MetaTrader 5 pour négocier le marché selon les instructions reçues. Le code utilise une fonctionnalité asynchrone pour gérer plusieurs
Voici le code complet avec les détails expliqués précédemment :
from telethon import TelegramClient, events import MetaTrader5 as mt5 import asyncio import logging from datetime import datetime import signal import os import sys import pkg_resources
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!