# Perpetuals Bot

### 📚 Описание проекта

Perpetuals Bot - это специализированный софт для мульти-аккаунтной дельта-нейтральной торговли и отработки перп-дексов (Ethereal, Extended, Variational, OneXyz). Бот позволяет переливать объёмы между биржами без риска направленной торговли (cross-dex) или скрытно набивать объёмы внутри одной биржи между своими же аккаунтами (single-dex).

Идеально подходит для накрутки торговых объемов под будущие дропы от топовых перп-дексов с минимизацией рыночных рисков.

> ⚠️ **ДИСКЛЕЙМЕР:** Это фьючерсная дельта торговля, а значит несет все те же риски. Не запускайте софт, если чувствуете, что Трамп хочет что-то высказать, держите на аккаунтах часть депа, не завышайте плечи в погоне за быстрой отработкой. Берегите себя и своих близких!

***

### 🚀 Доступные активности

#### Основной функционал:

* Автоматическая регистрация аккаунтов на биржах (Ethereal, Extended, Variational, **OneXyz**);
* **Поддержка торговли на Solana-дексе OneXyz** (требуются приватные ключи от Solana кошельков);
* Депозит USDC из сети Arbitrum (ARB) напрямую на баланс бирж (Based, Extended, Lighter);
* Cross-Dex Режим: вилки на разных перп-дексах (1 аккаунт открывает хедж-позиции на 2 DEX одновременно);
* Single-Dex Режим: скрытая дельта-нейтраль на одном DEX (3+ аккаунтов торгуют друг с другом с разными плечами для маскировки);
* Дельта-нейтральная торговля строго по заданным условиям (лимитки + маркет-ордера, контроль спреда);
* Уведомления о результатах работы в Telegram.

#### Особенности:

* Продвинутая система расчета TP/SL на основе цены ликвидации;
* Защита от проскальзывания: адаптивные лимитки, ожидание сужения спреда перед входом. с индивидуальной настройкой для каждой торговой пары;
* Поддержка локальной базы данных;
* Автоматическая замена нерабочих прокси в процессе работы.

***

### ⚙️ Установка

**Требования:**

* Установленный **Python 3.12.10** (ВАЖНО! Софт написан и протестирован строго под эту версию). Скачать можно с [официального сайта](https://www.python.org/downloads/release/python-31210/).
* Валидные EVM кошельки, валидные Solana кошельки (если используете OneXyz) и HTTP прокси.

**Установка и запуск:**

1. Разархивируйте софт в удобное для вас место на вашем ПК.
2. Откройте терминал (или командную строку) в папке с софтом.
3. Установите зависимости командой:

```bash
pip install -r requirements.txt
```

4. Переходите к настройке конфигов и вводу данных.

***

### ✅ Настройка и начало работы

#### 📁 config.py

Основные настройки софта осуществляются в файле `config.py`.

**🔑 Базовые настройки и Telegram**

* `LICENSE_KEY` - ключ лицензии (берется в боте).
* `LICENSE_USE_PROXY = False` - использовать прокси для проверки лицензии.
* `TG_BOT_TOKEN`, `TG_USER_ID` - данные бота и ваш ID для получения отчетов в Telegram.
* `MAX_PARALLEL_ACCOUNTS = 50` - количество аккаунтов, работающих одновременно.
* `SHUFFLE_WALLETS = False` - перемешивать кошельки при старте.
* `PAUSE_BETWEEN_WALLETS = [1, 5]` - пауза между запуском групп/кошельков (особенно важно для сингл-декс режима).
* `PAUSE_BETWEEN_MODULES = [20, 30]` - пауза между вилками.
* `RETRIES = 0` - сколько раз повторять невыполненное (зафейленное) действие.
* `PAUSE_BETWEEN_RETRIES = 0` - пауза между повторами.
* `TIME_TO_WAIT_FILL = 30` - сколько времени ждать до заполнения лимитки.
* `LIMIT_ATTEMPTS = 100` - сколько раз переставлять лимитку, если цена ушла.
* `CHECK_STATS_DEX = 'OneXyz'` - выбор биржи ('Variational', 'Extended', 'Ethereal', 'OneXyz') для проверки статистики.

**⚙️ Включение/Выключение Модулей** Для того чтобы модуль отработал, его нужно включить (перевести в `True`):

* `DEPOSIT_TO_BASED = False` - Депнуть USDC в сети ARB в Based
* `DEPOSIT_TO_EXTENDED = False` - Депнуть USDC в ARB в Extended
* `DEPOSIT_TO_LIGHTER = False` - Депнуть USDC в ARB в Lighter
* `OPEN_BASED_POSITION = False` - Открыть маркет позицию на Based
* `OPEN_EXTENDED_POSITION = False` - Открыть маркет позицию на Extended
* `CLOSE_ALL_BASED_POSITIONS = False`
* `CLOSE_ALL_EXTENDED_POSITIONS = False`
* `CLOSE_ALL_LIGHTER_POSITIONS = False`
* `CROSS_DEX_FORK = False` - Режим 1: Вилки на разных перп дексах
* `SINGLE_DEX_FORK = True` - Режим 2: Дельта-нейтраль на одном DEX

**📊 Настройки стратегий (Классы внутри config.py)**

**Классы депозита** (`BasedDepositSettings`, `ExtendedDepositSettings`, `LighterDepositSettings`)

* `deposit_amount = [10, 12]` - сколько USDC депозитить на баланс биржи из сети ARB.

**CrossDexForkSettings - Настройки режима Cross-Dex:**

* `dex_config` - выбор связки бирж. Лимитка может быть только одна (например, `'OneXyz': 'limit'`), второй DEX должен покрывать её маркетом (`'Variational': 'market'`). Для 'OneXyz' можно указывать её же.
* `use_percentage` - использовать ли процент от баланса для входа (`True`) или фиксированную маржу в USD (`False`).
* `target_volume` - целевой объём в USD. Вилки будут работать, пока не достигнут этого объёма (0 = бесконечно).
* `liquidation_based_tpsl` - если `True`, TP/SL ставятся на основе цены ликвидации (параметр `safety_margin` отвечает за безопасный отступ от ликвидации).
* `emergency_stop_wait = 30` - время ожидания (в секундах) перед аварийным закрытием при одностороннем заполнении.

**SingleDexForkSettings - Настройки режима Single-Dex:**

* `dex` - биржа, внутри которой аккаунты торгуют между собой (например, `'Variational'`).
* `accounts_count = [4, 5]` - сколько ваших аккаунтов рандомно пересекаются в одной группе (минимум 3).
* `target_volume_per_account = 300` - целевой объем **на аккаунт**. Если все аккаунты достигли этого объема - софт остановится. Если `0` = выключено, используется глобальный таргет.
* `volume_exclusion_multiplier = 3.0` - множитель для плавного исключения аккаунтов из перебора вилок.
* `spread_config` - словарь индивидуальных спредов для символов. Например, `{"BTC": {"max_spread": [0.0073, 0.0085], "spread_tick": 0.0001}}`. Адаптивный контроль спреда позволяет плавно повышать порог каждые `time_to_wait_spread` секунд.
* `notional_spread` - размер проверяемой позиции в долларах для оценки спреда стакана.
* `delay_between_actions = [0, 0]` - рандомная пауза (в сек.) между открытием/закрытием позиций каждого аккаунта для маскировки действий.
* `use_all_wallets_one_group = False` - объединять ли все кошельки в большую общую группу вместо разбивки по брокеру.

***

### 📂 Подготовка данных

Файлы с данными (кошельки и прокси) находятся в папке `data/`:

* `wallets.txt` - Приватные ключи (по одному на строку) от ваших EVM кошельков.
* `solana_wallets.txt` - Приватные ключи (по одному на строку) от **Solana** кошельков. Важно: ключи нужны только для работы в парах с DEX OneXyz.
* `proxies.txt` - Прокси для каждого кошелька. Поддерживаются только HTTP прокси в формате `ip:port@user:pass`. Софт умеет автоматически заменять нерабочие прокси из этого списка.

> *⚠️* Обязательно сохраняйте порядок строк во всех файлах одинаковым (1-я строка везде относится к первому аккаунту! 1ый EVM = 1ый Solana = 1ый прокси).

***

### ▶️ Первый запуск

1. Убедитесь, что вы заполнили папку `data` и настроили `config.py` (особенно выбрав нужный режим: `CROSS_DEX_FORK` или `SINGLE_DEX_FORK` и включив нужные дексы).
2. Запустите скрипт командой:

```bash
python main.py
```

3. Софт прочитает базу, инициализирует аккаунты, проверит прокси и начнёт набивку объёмов строго по вашим условиям. Отчеты о вилках и профите будут приходить в Telegram.
