BotClient-дополнительный функционал расширяющий возможности торгового терминала MoonTrader.
С помощью BotClient возможно удаленно управлять ядром терминала, отменять или открывать позиции, останавливать и запускать алгоритмы, а так же получать статистические данные о работе ядра и отчеты о результатах торговли.
Для использования данного расширения вам необходимо быть зарегистрированным в мессенджере Telegram.
Если у вас уже есть аккаунт в Telegram, вам необходимо создать своего бота с которого вы будете управлять своими аккаунтами MoonTrader.
Как создать своего бота?
Для создания бота вам нужно написать в строке поиска имя бота для создания ботов в Telegram @BotFather


Пишем команду /newbot — создаём нового бота

Даём имя нашему боту:
Имя обязательно должно быть с перепиской Bot *

После успешного создания бота нужно сохранить его Token *
Для этого пишем команду /mybots — показать всех ваших ботов

В списке наших ботов выбираем имя ранее созданного бота:

Выбираем пункт API Token:

После того как мы узнали Token нашего бота нам нужно узнать наш собственный (не группы или канала!) ChatID:
Для этого мы находим бота @myidbot

Пишем команду /getid — узнать свой ChatID:

Сохраняем все данные и переходим к установке BotClient:
Запуск и настройка BotClient
Для начала нужно разархивировать BotClient в любую удобную папку

Запускаем BotClient.exe:
Для Линукс:
Перейдите в директорию с BotClient cd MoonTrader/BotClient
Запустите бот командой ./BotClient
В начале нам нужно указать сохранённые данные Token и ChatID:

BotClient успешно создан и готов к работе:
Инструкция по использованию BotClient
BotClient может управлять сразу многими аккаунтами одновременно*
Для того что бы начать использовать сперва нам нужно найти нашего бота которого мы создали в @BotFather
Для этого пишем команду /mybots — показать всех ваших ботов

Нажимаем на @ИмяНашегоБота, переходим к чату с ботом и нажимаем запустить:

В данном меню и будет происходить вся работа по управлению нашими аккаунтами MoonTrader:
Для удобства можно изменить язык в меню Telegram Settings в разделе Telegram layout:

Команды
Cписок всех доступных команд можно узнать с помощью команды /help
1. Для управления командами используйте кнопки вперёд, назад*
2. Вводите данные с клавиатуры либо нажимайте на кнопки в меню*
3. Команды можно повторять путём нажатия на кнопку повторить после выполнения команды вне зависимости от результата*
4. К команде можно обратиться через символ / из выпадающего меню либо выбирать пошаговое действие в меню*
5. Команды по умолчанию берут профили из “профиля по умолчанию”*
6. Команды можно останавливать во время их выполнения*
7. Команды могут содержать более одного профиля, что позволит выполнить одну и туже действие для всех выбранных профилей*
8. При выборе символов в некоторых командах появляется кнопка “все”, она добаляет весь рынок который вы выбрали в запрос (будьте осторожны при работе со всем рынком сразу, используйте данный функционал когда он действительно вам нужен)

Добавить профиль
Для того чтобы управлять профилем в MoonTrader нам нужно добавить его:
Заходим в меню профиля, раздел добавить:

Указываем все данные нашего аккаунта из клиента:

Если такой профиль существует то он успешно добавится при нажатии на кнопку выполнить
Изменить профиль
Для изменения профиля нужно зайти в меню профиль раздел изменить либо команда /edit_profile

Выбираем профиль который нам нужно отредактировать и переписываем нужные нам параметры:

Нажимаем кнопку выполнить и работаем с новыми данными:
Профили по умолчанию
Если у вас больше одного профиля для удобства можно выбрать профили по умолчанию которые в дальнейших командах будут выставленный в базовой настройке*
Чтобы перейти к профилям по умолчанию перейдите в меню профиль раздел по умолчанию

В данном списке можно выбрать профиль по умолчанию нажав на него:

После выбора необходимых профилей нажмите кнопку выполнить для сохранения настроек:
Удалить профиль
Для того чтобы удалить профиль вам нужно перейти в меню профиль раздел удалить либо командой /remove_profile

Чтобы удалить профиль нужно выбрать его в списке профилей:

Для подтверждения действий нажмите кнопку выполнить:
Выставить ордер
Данная команда работает только с одним профилем*
Чтобы перейти к данной команде нужно выбрать в меню “ордер” раздел “добавить” либо командой /add_order *

В данной команде много настроек для выставления ордера, убедитесь что вы ввели все данные правильно*
Для выставления ордера в меню также присутствует настройки Тейк-профита и Стоп-лоса:

Отмена ордеров
Отмена ордеров работает на уже выставленных ордерах но которые не исполнились*
Чтобы перейти к данной команде нужно выбрать в меню ордер раздел отменить либо команду /cancel_order

В настройках выставляем желаемые настройки после чего нажимаем кнопку выполнить и ожидаем ответа от ядра:

Если мы передумали останавливать ордера или ввели неверные данные мы всегда можем остановить команду кнопку остановить*
Получить список ордеров
Для управления ордерами так же присутствует команда “/get_order_list”
Чтобы перейти к данной команде выберите в меню “Ордер” раздел “Список”
Данная команда позволяет получить информацию о ордерах которые выставлены в настоящем времени

При выборе профиля будут подгружены ордера и в дальнейшем при выборе рынка вы сможете видеть сколько ордеров на каком рынке висят

Далее предлагается либо закрыть выбранные профили или посмотреть информацию о них
Паника
Быстрое закрытие открытых позиций
Не влияет на открытые ордера на том же рынке*
Чтобы перейти к команде выберите в меню раздел паника либо командой /panic_sell
*При выборе одного профиля, автоматически подгрузятся все позиции и покажет сколько поз висят и на каких рынках

Чтобы выполнить команду нажмите на кнопку выполнить и ожидайте ответа от ядра:
Остановить все алгоритмы
Команда останавливает все запущенные алгоритмы на аккаунте*
Чтобы перейти к команде выберите в меню алгоритмы раздел остановить все либо командой /stop_all_algorithm

Чтобы выполнить команду нажмите на кнопку выполнить и ожидайте ответа от ядра:
Запустить все алгоритмы
Команда включает все выключенные алгоритмы на аккаунте*
Чтобы перейти к команде выберите в меню алгоритмы раздел остановить все либо командой /start_all_algorithm

Чтобы выполнить команду нажмите на кнопку выполнить и ожидайте ответа от ядра
Управление алгоритмами
Данная команда позволяет получить список алгоритмов которые есть на ядре
И в дальнейшем предоставляет возможность остановить\запустить или же удалить выбранные алгоритмы

Изменить плечо
Команда работает только на рынках где нет открытых позиций либо висящих ордеров*
Чтобы перейти к команде выберите в меню рынок раздел изменить плечо либо командой /modify_leverage

Чтобы выполнить команду нажмите на кнопку выполнить и ожидайте ответа от ядра:
Изменить маржу
Команда работает только на рынках где нет открытых позиций либо висящих ордеров*
Чтобы перейти к команде выберите в меню рынок раздел изменить моржу либо командой /modify_margin

Чтобы выполнить команду нажмите на кнопку выполнить и ожидайте ответа от ядра:
Ядро
Команда может показать вам статус аккаунта, перезагрузить, выключить, перезагрузить без обновления*
Чтобы перейти к команде перейдите в меню ядро и выберите нужное вам действие:

Чтобы выполнить команду нажмите на кнопку выполнить и ожидайте ответа от ядра:
Отчёты
Данная команда позволяет посмотреть отчёты по фильтрам
Если выбрать один профиль, то придёт информация о каждом алгоритме (сколько ордеров было выполнено и какой результат)
Если же выбрать несколько профилей, то придёт главная информация без подробностей о каждом алгоритме

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

Информация Баланса
Данная команда позволяет загрузить информацию о балансе с выбранных профилей на указанном рынке

Перевести Баланс
Команда позволяет перевести активы с одного рынка на другой

SIGNAL
*сигналы поддерживают операционную систему linux до версии (ubuntu/linux 20.04) & windows
Настройка Бот клиента на парсинг телеграм сигналов
1. Первым делом мы должны подключить телеграм аккаунт к ремоту контроллеру:
- Заходим в меню «Профиль»
- Выбираем “Telegram профиль”
- Нажимаем “Авторизироваться”
- После чего, в кончоле бота появится поля для авторизации (Если не появились нажмите клавишу Enter)
- Вводите номер телефона
- Вводите код который пришёл в телеграм
- При необходимости вводите пароль
Регистрация закончена
Теперь если вы зайдёте в Профиль -> Telegram профиль, вы увидете следующее:
2. Далее требуется выбрать канналы которые хотите трекерить на получение сигналов
- Заходим в меню “Алгоритмы”
- Выбираем “Сигналы”
- Выбираем “Каналы”
- Выбираем каналы которые хотим трекерить
- Жмем “Выполнить”
Для каждого канала можно настроить правила парсинга (Алгоритмы -> Сигналы -> Настроки канала)

Как все действия выполнены, бот начнёт отслеживать выбранные каналы и при наличии сигналов будет пытаться распарсить полученные данные и отправит всем ядрам подключённым к боту
Текстовые команды
/*
— Команда будет считаться текстовой, только если в начале есть #
— Параметры разделены символом ‘;’ или перейдя на новую строку
— Параметры могут быть неполными, например `pr` будет эквивалентно `profiles`
— Порядок параметров не имеет значения
— Если все параметры были введены правильно, то команда будет выполнена сразу, если какие-то параметры были введены неправильно, то будет отображена стандартная форма заполнения команды с параметрами, которые удалось разобрать
— Разделителем между параметром и значением может быть любой символ, включая пробел
— Профили могут быть перечислены через запятую, или вы можете указать `all` в параметре профилей.
— Markets: f — Futures; m- Margin; s — Spot; d — Delivery;
— Side: buy, sell;
— Order Type: Limit, Market, StopLimit, StopMarket, LimitMarket, PostOnly
— Margin Type: Cross, Isolated
*/
l CORE STATUS :
#core status; pr: <profile name 1>, …, <profile name N>; //get core status from selected profiles
#core status; pr: all; //get core status from all profiles
// The parameter separator is a newline, instead of a semicolon:
#core status
pr: <profile name 1>, …, <profile name N>
#core status
pr: all
Examples:
#core status; pr all;
#core status; profiles: pr01, pr 02, pr03;
l CORE RESTART:
#core restart; pr: <profile name 1>, …, <profile name N>; //restart selected cores
#core restart; pr: all; //restart all cores
// The parameter separator is a newline, instead of a semicolon:
#core restart
pr: <profile name 1>, …, <profile name N>
#core restart
pr: all
Examples:
#core restart; pr all;
#core restart; profiles: pr01, pr 02, pr03;
l CORE RESTART NO UPDATE
#core restart no update; pr: <profile name 1>, …, <profile name N>;
#core restart no update; pr: all;
#core restart no update
pr: all
Examples:
#core restart no update; pr all;
#core restart no update; profiles: pr01, pr 02, pr03;
l CORE SHUTDOWN
#core shut down; pr: <profile name 1>, …, <profile name N>;
#core shut down; pr: all;
#core shut down
pr: all
Examples:
#core shutdown; pr all;
#core shutdown; profiles: pr01, pr 02, pr03;
l GETP POSITIONS
#get pos; pr: <profile name 1>, …, <profile name N>;
#get pos; pr: all;
#get pos
pr: all
#get pos
pr: <profile name 1>, …, <profile name N>
Examples:
#get pos; pr all;
#get pos; profiles: pr01, pr 02, pr03;
l START\STOP ALL ALGORITHM
#start all algo; pr: <profile name 1>, …, <profile name N>;
#start all algo
pr: <profile name 1>, …, <profile name N>
#stop all algo; pr: <profile name 1>, …, <profile name N>;
#stop all algo
pr: <profile name 1>, …, <profile name N>
Examples:
#start all algo; pr all;
#stop all algo; profiles: pr01, pr 02, pr03;
l PANIC SELL
#panic sell; pr: <profile name 1>, …, <profile name N>; market: <Market Type>; symbols: <symbol1>, …, <symbol N>;
#panic sell
pr: pr: <profile name 1>, …, <profile name N>
market: f
symbols: <symbol1>, …, <symbol N>
Examples:
#panic sell; pr: 01; market: futures; symbols: btcusdt, ethusdt;
#panic sell; pr: all; market: spot; symbols: all;
l ADD ORDER
#add order
pr: <profile name 1>, …, <profile name N>
market: <Market Type>;
side: <Side Type>
order type: <Order Type>
symbol: <symbol1>, …, <symbol N>
order size: <Order Size Value>
price <Price Value>
//optional parameters
// TP DETAILS PARAMETERS
//*!!!* if the «TP Percentage» parameter is not specified, then the rest of the take profit parameters will not be checked
tp percentage: <Take Profit percentage>
tp order type: <Order Type>
tp is iceberg: <true, false>
//*!!!*if you want to specify auto-lowering of the TP and do not specify all the parameters, then UseAutoPriceDown will be false
tp auto price down time: <Auto price down time>
tp auto price down step: <Auto price down step>
tp auto price down limit: <Auto price down limit>
// SL: DETAILS PARAMETERS
//*!!!* if the «SL Percentage» parameter is not specified, then the rest of the stop loss parameters will not be checked
sl percentage: <Stop Loss percentage>
sl order type: <Order Type>
sl spread: <Stop Loss Spread>
sl delay: <Stop Loss Delay>
// *!!!* if Stop Loss Trailing spread is specified, then useTralingSL will be true
sl trailing spread: <Stop Loss Trailing Spread>
*TakeProfit and StopLoss parameters can be omitted
l CANCEL ORDER
#cancel order; pr: all; market: <Market Type>;
#cancel order
pr: <profile name 1>, …, <profile name N>
market: <Market Type>
symbols: <symbol1>, …, <symbol N> //optional parameter
cancel all: <True, False> //optional parameter
Examples:
#cancel order; pr: pr01, pr02, pr03; market: spot; symbols: ethusdt;
#cancel order
pr: all
market: delivery
cancel all: true
l MODIFY MARGIN
#modify margin; pr: <profile name 1>, …, <profile name N>; market: <Market Type>; margin type: <Margin Type>; symbols: <symbol1>, …, <symbol N>;
#modify margin
pr: <profile name 1>, …, <profile name N>
market: <Market Type>
margin type: <Margin Type>
symbols: <symbol1>, …, <symbol N>
Examples:
#modify margin; pr: pr01, pr02; market: futures; margin type: cross; symbols: bnbusdt;
#modify margin
pr: pr01, pr02
market: futures
margin type: cross
symbols: bnbusdt
l MODIFY LEVERAGE
#modify leverage; pr: <profile name 1>, …, <profile name N>; market: <Market Type>; symbols: <symbol1>, …, <symbol N>; leverage: <New leverage Value>;
#modify leverage
pr: <profile name 1>, …, <profile name N>
market: <Market Type>
symbols: <symbol1>, …, <symbol N>
leverage: <New leverage Value>
Examples:
#modify leverage; pr: pr01, pr02; market: futures; symbols: bnbusdt; leverage: 23;
#modify leverage
pr: pr01, pr02
market: futures
symbols: bnbusdt
leverage: 23
*if the leverage parameter is not specified, the maximum value will be set
l REMOVE PROFILE
#remove profile; pr: <profile name 1>, …, <profile name N>;
Examples:
#remove profile; pr pr04, pr13;
l CHANGE DEFAULT PROFILE
#change def profile; pr: <profile name 1>, …, <profile name N>;
Examples:
#change def profile; pr pr04, pr13;
l GET BALANCE
#get balance; pr: <profile name 1>, …, <profile name N>; market: <Market Type>;
#get balance;
pr: <profile name 1>, …, <profile name N>;
market: <Market Type>;
Examples:
#get balance; pr pr04, pr13; market futures;
l TRANSFER BALANCE
#transfer balance; pr <Profile Name>; from market: <Market Type>; to market: <Market Type>; symbol: <Quote Asset>; amount: <Amount>;
#transfer balance
pr <Profile Name>
from market: <Market Type>
to market: <Market Type>
symbol: <Quote Asset>
amount: <Amount>
Examples:
#get balance; pr pr04, pr13; from market: futures; to market: spot; symbol: USDT; amount 23;