코드를 차근차근 자세히 분석하고 설명드리겠습니다. 이 스크립트는 Telethon 라이브러리를 사용하여 Telegram에 연결하고 MetaTrader 5(MT5)에서 주문하는 데 사용되는 그룹으로부터 신호를 받습니다. 코드를 실행하려면 MT5에 연결하고, 텔레그램에서 메시지를 듣고, 해당 메시지를 기반으로 매수 및 매도 주문을 실행해야 합니다.
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'))
여기서 코드는 Python 버전, 가상 환경 경로, Python 실행 위치 등 Python이 실행되는 환경에 대한 정보를 인쇄합니다.
installed_packages = [d for d in pkg_resources.working_set] for package in installed_packages: print(package)
이 코드는 pkg_resources 라이브러리를 사용하여 현재 환경에 설치된 모든 Python 패키지를 표시합니다.
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} ]
봇이 주문을 실행하는 데 사용할 수 있는 MT5 계정 목록을 정의합니다. 각 계정에는 다음이 포함됩니다.
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
이 함수는 최대 시도 횟수(max_tries)까지 특정 계정에 대해 MetaTrader 5에 다시 연결을 시도합니다. 시도 횟수 이후 재접속이 실패하면 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'))
이 기능은 액션 유형(매수 또는 매도)에 따라 매수 또는 매도 주문을 MetaTrader 5로 보냅니다. 기능:
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__)
이 기능은 각 활성 계정에 대해 MetaTrader 5에 대한 연결을 주기적으로 확인합니다. 계정이 다시 연결되지 않으면 목록에서 제거됩니다.
API_ID = '78787878' API_HASH = '12e957773a9a554cb6e32997122706f6' PHONE_NUMBER = '+5512991111111' GROUP_USERNAME = '@Nas100freepip'
Ctrl C 명령이나 프로세스 종료 등 인터럽트 신호(SIGINT 또는 SIGTERM)를 캡처하고 프로그램을 깔끔하게 종료합니다.
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
main() 함수는 비동기 코드 실행을 관리하기 위해 asyncio.run()을 사용하여 실행됩니다.
이 코드는 Telegram을 사용하여 매수 및 매도 신호를 수신하고 이러한 신호를 처리하며 MetaTrader 5에 주문을 보내 수신된 지침에 따라 시장을 거래하는 자동 거래 봇입니다. 코드는 비동기 기능을 사용하여 여러
이전에 설명한 세부정보가 포함된 전체 코드는 다음과 같습니다.
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
위 내용은 mt5에서 신호를 복제하는 텔레그램 봇의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!