# Bot Client — управление MoonTrader через Telegram

Bot Client — это расширение MoonTrader, которое позволяет управлять торговыми аккаунтами прямо из Telegram. Вы можете открывать и закрывать позиции, останавливать алгоритмы, менять плечо и получать отчёты — не заходя в терминал. В этом руководстве описана полная настройка с нуля: от создания бота до выполнения первых команд.

> **Требования:** аккаунт в Telegram, установленный BotClient.exe, запущенное ядро MoonTrader.

***

### 1. Создание бота в Telegram

Прежде чем запустить Bot Client, нужно создать собственного Telegram-бота. Этот бот будет служить интерфейсом между вами и MoonTrader.

1. Откройте Telegram и найдите бота **@BotFather**.
2. Отправьте команду `/newbot`.
3. Введите имя бота (произвольное).
4. Введите username бота — он должен оканчиваться на `Bot` или `_bot`, например `MyTraderBot`.
5. Сохраните **Token**, который пришлёт BotFather — он понадобится при настройке BotClient.

> Чтобы посмотреть токен существующего бота: `/mybots` → выберите бота → «API Token».

***

### 2. Получение ChatID

ChatID — ваш идентификатор в Telegram. Bot Client использует его, чтобы отправлять уведомления только вам.

1. Найдите бота **@myidbot**.
2. Отправьте команду `/getid`.
3. Сохраните полученный ChatID.

***

### 3. Настройка и запуск BotClient

1. Распакуйте архив BotClient в удобную папку.
2. Запустите **BotClient.exe**.
3. В поле «Token» введите токен из шага 1.
4. В поле «ChatID» введите идентификатор из шага 2.
5. Нажмите «Сохранить» — Bot Client готов к работе.

После запуска найдите своего бота в Telegram: `/mybots` → выберите бота → «Go to chat» → нажмите **Start**. Все дальнейшие команды выполняются в этом чате.

> Язык интерфейса бота можно изменить в «Telegram Settings» → «Telegram Layout».

***

### 4. Управление профилями

Профиль — это подключение к одному аккаунту MoonTrader. Bot Client поддерживает несколько профилей одновременно.

#### Добавить профиль

1. Откройте меню «Profile» → «Add».
2. Введите данные аккаунта из клиента MoonTrader.
3. Нажмите «Execute» — профиль добавится, если ядро доступно.

#### Изменить профиль

1. Откройте «Profile» → «Edit» или введите `/edit_profile`.
2. Выберите профиль из списка.
3. Перезапишите нужные параметры и нажмите «Execute».

#### Установить профили по умолчанию

Профили по умолчанию автоматически подставляются во все команды — не нужно каждый раз выбирать вручную.

1. Откройте «Profile» → «Default».
2. Выберите нужные профили из списка.
3. Нажмите «Execute».

**Текстовая команда:**

```
#change def profile; pr: profile1, profile2;
```

#### Удалить профиль

1. Откройте «Profile» → «Remove» или введите `/remove_profile`.
2. Выберите профиль из списка.
3. Нажмите «Execute» для подтверждения.

**Текстовая команда:**

```
#remove profile; pr: profile1, profile2;
```

***

### 5. Работа с ордерами и позициями

#### Добавить ордер

Команда работает только с одним профилем одновременно.

1. Откройте «Order» → «Add» или введите `/add_order`.
2. Заполните параметры: профиль, рынок, направление (buy/sell), тип ордера, инструмент, объём, цену.
3. При необходимости настройте Take Profit и Stop Loss в этом же меню.
4. Нажмите «Execute».

> ⚠️ Убедитесь, что все параметры заполнены корректно — ордер будет отправлен на биржу сразу.

#### Отменить ордера

Команда отменяет только выставленные, но ещё не исполненные ордера.

1. Откройте «Order» → «Cancel» или введите `/cancel_order`.
2. Выберите профиль, рынок и инструменты.
3. Нажмите «Execute».

Если передумали — нажмите «Stop» прямо во время выполнения команды.

**Текстовая команда:**

```
#cancel order; pr: profile1, profile2; market: spot; symbols: ethusdt;
#cancel order; pr: all; market: futures; cancel all: true;
```

#### Список ордеров

1. Откройте «Order» → «List» или введите `/get_order_list`.
2. Выберите профиль — загрузятся актуальные ордера по каждому рынку.
3. Из этого же меню можно закрыть выбранные ордера или просмотреть детали.

#### Закрыть позиции

Команда работает с открытыми позициями, но не с выставленными ордерами.

1. Откройте «Position» → «Close» или введите `/close_positions`.
2. Выберите профиль, рынок и инструменты.
3. Нажмите «Execute» и дождитесь ответа от ядра.

**Текстовая команда:**

```
#get pos; pr: profile1, profile2;
#get pos; pr: all;
```

#### Panic Sell — экстренное закрытие позиций

Panic Sell закрывает все открытые позиции в выбранных рынках. Выставленные ордера при этом не затрагиваются.

1. Откройте «Panic» или введите `/panic_sell`.
2. Выберите профиль — отобразятся все открытые позиции с разбивкой по рынкам.
3. Нажмите «Execute».

> ⚠️ Используйте Panic Sell только когда нужно быстро выйти из всех позиций — действие необратимо.

**Текстовая команда:**

```
#panic sell; pr: profile1; market: futures; symbols: btcusdt, ethusdt;
#panic sell; pr: all; market: spot; symbols: all;
```

***

### 6. Управление алгоритмами

#### Остановить все алгоритмы

Останавливает все запущенные алгоритмы на выбранном аккаунте.

1. Откройте «Algorithms» → «Stop All» или введите `/stop_all_algorithm`.
2. Выберите профиль и нажмите «Execute».

**Текстовая команда:**

```
#stop all algo; pr: all;
#stop all algo; pr: profile1, profile2;
```

#### Запустить все алгоритмы

Включает все ранее остановленные алгоритмы.

1. Откройте «Algorithms» → «Start All» или введите `/start_all_algorithm`.
2. Выберите профиль и нажмите «Execute».

**Текстовая команда:**

```
#start all algo; pr: profile1, profile2;
```

#### Управление отдельными алгоритмами

1. Откройте «Algorithms» → «Manage».
2. Загрузится список алгоритмов на выбранном ядре.
3. Для каждого алгоритма доступны действия: запустить, остановить, удалить.

***

### 7. Рыночные настройки

#### Изменить плечо

Команда работает только на рынках без открытых позиций и ордеров.

1. Откройте «Market» → «Change Leverage» или введите `/modify_leverage`.
2. Выберите профиль, рынок и инструменты.
3. Укажите новое значение плеча.
4. Нажмите «Execute».

> Если значение плеча не указано, будет установлено максимально допустимое биржей.

**Текстовая команда:**

```
#modify leverage; pr: profile1; market: futures; symbols: bnbusdt; leverage: 23;
```

#### Изменить тип маржи

Команда работает только на рынках без открытых позиций и ордеров.

1. Откройте «Market» → «Change Margin» или введите `/modify_margin`.
2. Выберите профиль, рынок, инструменты и тип маржи (Cross или Isolated).
3. Нажмите «Execute».

**Текстовая команда:**

```
#modify margin; pr: profile1; market: futures; margin type: cross; symbols: bnbusdt;
```

#### Баланс

Чтобы посмотреть баланс по выбранным профилям:

1. Откройте «Balance» → «Info» или введите `/get_balance`.
2. Выберите профиль и рынок.

**Текстовая команда:**

```
#get balance; pr: profile1; market: futures;
```

Чтобы перевести активы между рынками:

1. Откройте «Balance» → «Transfer».
2. Укажите профиль, исходный рынок, целевой рынок, актив и сумму.
3. Нажмите «Execute».

**Текстовая команда:**

```
#transfer balance; pr: profile1; from market: futures; to market: spot; symbol: USDT; amount: 100;
```

***

### 8. Ядро и отчёты

#### Управление ядром

В меню «Core» доступны четыре действия:

| Действие          | Описание                              | Текстовая команда                   |
| ----------------- | ------------------------------------- | ----------------------------------- |
| Status            | Показывает текущее состояние аккаунта | `#core status; pr: all;`            |
| Restart           | Перезапуск ядра с обновлением         | `#core restart; pr: all;`           |
| Restart No Update | Перезапуск без обновления             | `#core restart no update; pr: all;` |
| Shutdown          | Выключение ядра                       | `#core shutdown; pr: all;`          |

Выберите действие в меню «Core» и нажмите «Execute», или отправьте текстовую команду.

#### Отчёты

Загружает отчёты по алгоритмам с фильтрами по рынку и инструменту.

* Один профиль → детальный отчёт по каждому алгоритму (количество исполненных ордеров, средний размер ордера, результат).
* Несколько профилей → сводный отчёт без деталей по алгоритмам.

Поля «Markets», «Quote/Symbol», «Information» можно оставить пустыми.

#### Позиции

Загружает информацию по всем открытым позициям на выбранных аккаунтах.

**Текстовая команда:**

```
#get pos; pr: all;
```

***

### 9. Сигналы из Telegram-каналов

Bot Client умеет парсить торговые сигналы из Telegram-каналов и автоматически отправлять их на подключённые ядра.

> **Поддерживаемые платформы:** Windows, Ubuntu/Linux 20.04.

#### Шаг 1 — Подключить Telegram-аккаунт

1. Откройте «Profile» → «Telegram Profile».
2. Нажмите «Login».
3. В чате появятся поля для авторизации (если не появились — нажмите Enter).
4. Введите номер телефона.
5. Введите код из Telegram.
6. Введите пароль, если включена двухфакторная аутентификация.

После успешной авторизации в «Profile» → «Telegram Profile» отобразится статус подключённого аккаунта.

#### Шаг 2 — Выбрать каналы для отслеживания

1. Откройте «Algorithms» → «Signals» → «Channels».
2. Выберите каналы, из которых хотите получать сигналы.
3. Нажмите «Execute».

Правила парсинга для каждого канала настраиваются отдельно: «Algorithms» → «Signals» → «Channel Settings».

После настройки Bot Client начнёт отслеживать выбранные каналы и при появлении сигналов — передавать их на все подключённые ядра.

```
Binance USDT-M sell galausdt tp 3% sl 4 %
```

***

### Синтаксис текстовых команд

Текстовая команда должна начинаться с символа `#`. Все остальные сообщения бот воспринимает как навигацию по меню.

**Правила:**

* Параметры разделяются символом `;` или переносом строки — оба варианта равнозначны.
* Параметры можно сокращать: `pr` вместо `profiles`, `m` вместо `margin` и т. д.
* Порядок параметров не важен.
* Если все параметры верны — команда выполняется сразу. Если нет — откроется форма с предзаполненными данными.
* Несколько профилей перечисляются через запятую: `pr: profile1, profile2`. Чтобы применить ко всем — `pr: all`.
* Разделитель между параметром и значением — любой символ, включая пробел: `pr: all` и `pr all` — одно и то же.

**Обозначения рынков:** `f` — фьючерсы, `m` — маржа, `s` — спот, `d` — деливери.

**Направление ордера:** `buy`, `sell`.

**Тип ордера:** `Limit`, `Market`, `StopLimit`, `StopMarket`, `LimitMarket`, `PostOnly`.

**Тип маржи:** `Cross`, `Isolated`.

***

### Cheatsheet текстовых команд

#### Команды

| Команда                   | Описание                        | Пример                                                                                  |
| ------------------------- | ------------------------------- | --------------------------------------------------------------------------------------- |
| `#core status`            | Статус ядра                     | `#core status; pr: all;`                                                                |
| `#core restart`           | Перезапуск ядра с обновлением   | `#core restart; pr: main;`                                                              |
| `#core restart no update` | Перезапуск без обновления       | `#core restart no update; pr: main;`                                                    |
| `#core shutdown`          | Выключение ядра                 | `#core shutdown; pr: all;`                                                              |
| `#get pos`                | Список открытых позиций         | `#get pos; pr: main, backup;`                                                           |
| `#get balance`            | Баланс по рынку                 | `#get balance; pr: main; market: f;`                                                    |
| `#transfer balance`       | Перевод между рынками           | `#transfer balance; pr: main; from market: f; to market: s; symbol: USDT; amount: 500;` |
| `#start all algo`         | Запуск всех алгоритмов          | `#start all algo; pr: all;`                                                             |
| `#stop all algo`          | Остановка всех алгоритмов       | `#stop all algo; pr: main;`                                                             |
| `#panic sell`             | Экстренное закрытие позиций     | `#panic sell; pr: main; market: f; symbols: btcusdt, ethusdt;`                          |
| `#add order`              | Выставить ордер                 | см. ниже                                                                                |
| `#cancel order`           | Отменить ордера                 | `#cancel order; pr: main; market: f; symbols: btcusdt;`                                 |
| `#modify leverage`        | Изменить плечо                  | `#modify leverage; pr: main; market: f; symbols: btcusdt; leverage: 10;`                |
| `#modify margin`          | Изменить тип маржи              | `#modify margin; pr: main; market: f; margin type: cross; symbols: btcusdt;`            |
| `#remove profile`         | Удалить профиль                 | `#remove profile; pr: old_account;`                                                     |
| `#change def profile`     | Установить профили по умолчанию | `#change def profile; pr: main, backup;`                                                |

***

#### `#add order` — полный синтаксис

Минимальный пример (без TP/SL):

```
#add order; pr: main; market: f; side: buy; order type: Limit; symbol: btcusdt; order size: 100; price: 65000;
```

С Take Profit и Stop Loss:

```
#add order
pr: main
market: f
side: buy
order type: Limit
symbol: btcusdt
order size: 100
price: 65000
tp percentage: 2
tp order type: Limit
sl percentage: 1
sl order type: Market
sl trailing spread: 0.1
```

> Если `tp percentage` не указан — все остальные `tp *` параметры игнорируются. Аналогично для `sl percentage`.
>
> Если `sl trailing spread` указан — трейлинг включается автоматически.
>
> Если `leverage` не указан в `#modify leverage` — устанавливается максимум биржи.

***

#### Параметры

#### Общие

| Параметр      | Сокращение | Допустимые значения                                                          | Пример                      |
| ------------- | ---------- | ---------------------------------------------------------------------------- | --------------------------- |
| `profiles`    | `pr`       | Имена через запятую, или `all`                                               | `pr: main, backup`          |
| `market`      | `m`        | `f` / `m` / `s` / `d`                                                        | `market: f`                 |
| `symbols`     | —          | Тикеры через запятую, или `all`                                              | `symbols: btcusdt, ethusdt` |
| `side`        | —          | `buy` / `sell`                                                               | `side: buy`                 |
| `order type`  | —          | `Limit` / `Market` / `StopLimit` / `StopMarket` / `LimitMarket` / `PostOnly` | `order type: Limit`         |
| `order size`  | —          | Число                                                                        | `order size: 100`           |
| `price`       | —          | Число                                                                        | `price: 65000`              |
| `cancel all`  | —          | `true` / `false`                                                             | `cancel all: true`          |
| `leverage`    | —          | Число (если не указан — максимум биржи)                                      | `leverage: 10`              |
| `margin type` | —          | `Cross` / `Isolated`                                                         | `margin type: cross`        |
| `amount`      | —          | Число                                                                        | `amount: 500`               |
| `symbol`      | —          | Тикер актива                                                                 | `symbol: USDT`              |
| `from market` | —          | `f` / `m` / `s` / `d`                                                        | `from market: f`            |
| `to market`   | —          | `f` / `m` / `s` / `d`                                                        | `to market: s`              |

#### Take Profit (`#add order`)

| Параметр                   | Описание                                        | Пример                         |
| -------------------------- | ----------------------------------------------- | ------------------------------ |
| `tp percentage`            | % TP от цены входа. Обязателен для включения TP | `tp percentage: 2`             |
| `tp order type`            | Тип TP-ордера                                   | `tp order type: Limit`         |
| `tp is iceberg`            | Айсберг-ордер                                   | `tp is iceberg: true`          |
| `tp auto price down time`  | Время до автоснижения цены TP (сек)             | `tp auto price down time: 60`  |
| `tp auto price down step`  | Шаг автоснижения                                | `tp auto price down step: 0.1` |
| `tp auto price down limit` | Предел автоснижения                             | `tp auto price down limit: 1`  |

#### Stop Loss (`#add order`)

| Параметр             | Описание                                                        | Пример                    |
| -------------------- | --------------------------------------------------------------- | ------------------------- |
| `sl percentage`      | % SL от цены входа. Обязателен для включения SL                 | `sl percentage: 1`        |
| `sl order type`      | Тип SL-ордера                                                   | `sl order type: Market`   |
| `sl spread`          | Спред SL                                                        | `sl spread: 0.05`         |
| `sl delay`           | Задержка перед срабатыванием (сек)                              | `sl delay: 5`             |
| `sl trailing spread` | Трейлинг-спред. Если указан — трейлинг включается автоматически | `sl trailing spread: 0.1` |

***

#### Обозначения рынков

| Код | Рынок               |
| --- | ------------------- |
| `f` | Futures (фьючерсы)  |
| `m` | Margin (маржа)      |
| `s` | Spot (спот)         |
| `d` | Delivery (деливери) |
