# Metalot — ربات تلگرام + MT5 (تقسیم حجم)

## پیش‌نیاز

- **Windows** + ترمینال **MetaTrader 5** باز و لاگین به حساب
- **Algo Trading** در MT5 روشن
- پایتون **3.10+** (پروژه با venv تست شده)

## نصب

```powershell
cd telegram_mt5
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
```

کپی `env.example` → `.env` و پر کردن حداقل:

- `TELEGRAM_BOT_TOKEN`
- `ALLOWED_CHAT_IDS` (حداقل یک عدد چت)
- در صورت نیاز: `MT5_TERMINAL_PATH`، `MT5_EXPECT_LOGIN`، سقف‌های ایمنی (در `env.example` توضیح است)

## اجرا

```powershell
.\.venv\Scripts\python.exe bot.py
```

## قبل از لانچ زنده (چک‌لیست)

1. **دمو** یا حجم کم روی حساب آزمایشی
2. **`ALLOWED_CHAT_IDS`** فقط چت خودت
3. **`MT5_EXPECT_LOGIN`** روی حساب واقعی زنده ست کن
4. **`TRADING_DISABLED=1`** برای تست UI بدون سفارش
5. **یک نمونه ربات** + **یک MT5**؛ از دو پروسه با یک توکن خودداری کن
6. فایل **`bot_settings.json`** را بکاپ بگیر (تنظیمات هر چت)
7. **`env.example` را هرگز با توکن واقعی پر نکن** — فقط `.env` محلی

## نماد و مارکت‌واچ

- نام نماد را **دقیقاً مثل کارگزار** بگذار (مثلاً `XAUUSD.p` با `p` کوچک). ربات دیگر کل رشته را به حروف بزرگ تبدیل نمی‌کند.
- اگر خطای «نماد در ترمینال نیست» دیدی ولی در MT5 نماد را داری: معمولاً **پایتون به ترمینال دیگری وصل است** — در `.env` مسیر اجرای همان ترمینالی را که معامله می‌کنی در `MT5_TERMINAL_PATH` بگذار (فایل `terminal64.exe`).

## امنیت

- توکن لو رفت → در BotFather **Revoke** و توکن جدید
- `.env` و `bot_settings.json` را در git قرار نده

## ماژول‌ها

| فایل | نقش |
|------|-----|
| `bot.py` | تلگرام، هندلرها، قفل همزمانی |
| `mt5_split.py` | MT5، split، بستن، rollback اختیاری |
| `wizard_flow.py` | UI متن/کیبورد |
| `settings_store.py` | ذخیره تنظیمات روی دیسک |

پنل `LotSplitterPanel.mq5` روی چارت **مستقل** از این ربات است.
