Протокол удалённого управления "MoonCMD"

Быстрый поиск по статье

Общая информация о протоколе "MoonCMD"

Терминал Moonbot может принимать команды удалённого управления на UDP порт, высылать ответы и высылать регулярные обновления.


Команды принимаются в формате:


hash команда
где hash = HMAC-SHA256 (команда, пароль); порт и пароль задаются в Настройки → Специальные → Remote:


Поля: UDP Commands Port\pass
Впишите порт, на котором Moonbot будет слушать команды, и пароль, который будет использоваться для подписи команд.


Общий формат ответов:


Ответы отправляются в виде json, с gzip:


{"cmd":"","bot":"string Bot Name","N": int,"data":string или object}


Основные команды


  • 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 Timing: 203 ms",
    "04.12 00:12:57.104: TON [400] CheckMarginRatio fail! InsufficientAB\n Timing: 203 ms",
    "04.12 00:12:57.966: TON [400] CheckMarginRatio fail! InsufficientAB\n Timing: 203 ms"]}};

  • 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 частей.