# 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 (деливери) |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://guide.moontrader.com/sovety-i-rekomendacii/bot-client-upravlenie-moontrader-cherez-telegram.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
