Moontraider logo
Moontraider logo

Documentation

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)
  1.  Вводите номер телефона
  2.  Вводите код который пришёл в телеграм
  3.  При необходимости вводите пароль

 Регистрация закончена

Теперь если вы зайдёте в Профиль -> 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;