Протокол удалённого управления "MoonCMD"
Общая информация о протоколе "MoonCMD"
Терминал Moonbot может принимать команды удалённого управления на UDP порт, высылать ответы и высылать регулярные обновления.
Команды принимаются в формате:
hash команда
где hash = HMAC-SHA256 (команда, пароль); порт и пароль задаются в Настройки → Специальные → Remote:
Поля: UDP Commands Port\pass
Впишите порт, на котором Moonbot будет слушать команды, и пароль, который будет использоваться для подписи команд.
Общий формат ответов:
Ответы отправляются в виде json, с gzip:
{"cmd":"
Основные команды:
-
buy ... – применяются стандартные правила для сигналов на покупку
-
short ... – применяются стандартные правила для сигналов на шорт (фьючерсы)
-
sell token – Включить PanicSell на монете. Пример: sell NEO
-
SellALL – Включить PanicSell НА ВСЕХ активных ордерах и остановить бота
-
list ("lst" для короткого формата) – Список активных ордеров на продажу
-
silent – Отключить уведомления бота в чат о закрытых сделках
-
talk – Включить уведомления бота в чат о закрытых сделках
-
STOP – Нажать Стоп в боте (Не покупать новые сигналы)
-
CancelBuy – Отменить все неисполненные BUY ордера
-
START – Нажать Старт в боте, запустить стратегии
-
BL – Показать чёрный список монет
-
BL + coin – Добавить монету coin в ЧС
-
BL - coin – Убрать монету coin из ЧС
-
TempBL +N coin1 coin2 – Временный ЧС на N часов
-
SetParam Strategy Param Value – Поменять параметр в стратегии ("empty" для пустой строки)
-
SetBL+ Strategy coin – Добавить монету в ЧС стратегии или папки
-
SetBL- Strategy coin – Убрать монету из ЧС стратегии или папки
-
SetWL+, SetWL- Strategy coin – аналогично для БС
-
sgStart Strategy, sgStop Strategy <время, минуты> – запустить или остановить стратегии на заданное время
-
ResetSession coin | ALL – сбросить сессии на монете или на всех рынках
-
ResetLoss – сбросить счётчик профита
-
Leverage X [coin,coin] – поменять плечо на монетах на X
-
Margin [coin,coin \ ALL] ISO\Cross – поменять маржу на маркетах
-
ConvertBNB – пыль в BNB
-
report [N days \ weeks] [coin] [hide] – выслать отчёт. По умолчанию за сегодня
-
SellPiece [coin\ALL] – продать по кусочку от каждого ордера (если SellPiece не 0)
-
DoUpdate – обновить версию
Дополнительные команды:
GetStrategiesFull - выслать все стратегии
GetStrategiesActive - выслать только активные стратегии
Формат выдачи:
{"cmd":"strats","bot":"BotName","N":number,"data":"string"}
N: номер пакета (все стратегии могут не поместиться в один пакет, тогда они дробятся на N пакетов)
Data: список стратегий (формат обычный как при копировании тегии в буфер):
##Begin_Strategy
…
##End_Strategy
В одном пакете может быть подряд несколько стратегий
Регулярные апдейты от терминала на порт, с которого пришла команда:
Ордера
{"cmd":"order","bot":"BotName","oid":number,"sql":"string"}
Oid: ID ордера в БД терминала Moonbot. Нужно использовать для корректного обновления записей в БД, когда поступают новые sql после изменения цен, частичного или полного исполнения ордера
Балансы: (шлёт раз в 5 секунд)
{"cmd":"acc","bot":"BotName", "data":{ "A":”double”,"T":"double", "S":bool,"V":int}}
A: Available доступный баланс
T: Total - всего баланс
S: запущен ли терминал
V: номер версии (без точки, например, для версии 7.56 отправка в формате “756”)
Ошибки API: (шлёт по наличию; пачками по 5 секунд. Тексты ошибок идут в массиве data.E)
{"cmd":"errors","bot":"BB-Futures","data":{"E":[
"04.12 00:12:56.268: TON [400] CheckMarginRatio fail! InsufficientAB\n
Bin файлы с графиками:
SubscribeCharts: Подписаться на рассылку файлов.
UnsubscribeCharts: Отписаться на рассылку файлов.
Формат заголовка
TMoonCmdHeader = packed record
Flag: byte; // 0 всегда, чтобы отличить от простого gzip
Kind: byte; // тип полезной нагрузки. 1 = график
id: integer; // 4 байта для графика - id ордера (dbID)
blockNum: byte; // номер куска датаграммы, с 0
blocksCount: byte; // всего кусков. 1 если не дробим
end;
Файл может дробиться на blocksCount частей.
Формат чтения:
Формат бинарного файла, записанного TMarket.SaveToStreamShort