ДОВЕРИТЕЛЬНОЕ УПРАВЛЕНИЕ

ВЫСОКОЧАСТОТНЫЙ ТРЕЙДИНГ ПО ПРОТОКОЛУ UDP

Инструменты доверительного управления использовали передачу команд между управляющим и ведомыми ботами при помощи канала в Telegram. Задержка при этом могла составлять 1-3 секунды, что приемлемо при работе по среднесрочным сигналам. Однако, при сверхбыстрой торговле и скальпинге задержка играет критическую роль.

Поэтому мы разработали новый протокол обмена сигналами между терминалами MoonBot, сводящий задержку к минимуму. Функционал доступен только в ПРО версии.

По итогам тестов задержка может быть сведена к 100мс и менее! Более того, в некоторых случаях ведомые терминалы могут исполнить команду даже раньше, чем управляющий (если ведомый бот расположен на сервере ближе к бирже, чем управляющий бот)!

За счет чего достигается такая скорость:

  1. Обмен данными посредством протокола UDP не требует установки соединения, то есть пакет данных идет только в 1 сторону. Кроме того, 1 команда умещается в 1 датаграмму, и быстрее проходит по сети.
  2. Некоторые команды являются составными с точки зрения взаимодействия с биржей, например команда «переставить ордер» состоит из 3 фаз: отменить текущий ордер, проверить результат операции, выставить новый ордер. Такая команда отправляется ведомому боту в 1 пакет, и исполняется уже на нем, не затрачивая дополнительного времени на обмен с ведущим ботом.

Перечень команд и принципы работы ДУ в MoonBot описаны в этом разделе, ознакомьтесь с ним прежде чем читать дальше.


Как настроить прием команд ду через udp (ведомый бот)

1) Для корректной работы ведомый бот должен иметь статический IP адрес и открытый UDP порт. Адрес и порт вы сообщаете управляющему, чтобы он добавил вас в список рассылки.

1A) Как открыть UDP порт: каждый терминал может использовать свой порт, номер порта указать в «Настройках — Специальные». По умолчанию это порт 1999.

Далее, если у вас Windows Server 2016: открыть настройки Windows Firewall


Открыть Advanced Settings

Создать новое правило, разрешающее принимать пакеты на нужный UDP порт:

После создания правила можно открыть его свойства и настроить прием только с определенных IP адресов (которые сообщат вам управляющие).

1B) Как настроить бота: Создайте стратегию с типом сигнала «UDP». В этой стратегии установите параметр AcceptCommands = YES. Поле ChannelKey оставьте пустым.

Управляющий может передавать сигналы в зашифрованном виде, в этом случае установите OnlyEncrypted = YES и возьмите у управляющего файл с ключами (см. ниже).

3) Настройка управляющего бота

Настройка производится нажатием ПКМ на кнопку «поделиться»:


Поставьте галочку «Хочу передавать сигналы посредством UDP»

Нажмите кнопку «Send LIst», заполните список рассылки, получив у ведомых адреса и порты.

(Необязательно) Заполните поле MaxOrder: ведущий задает макс. размер ордера, когда ведущий использует меньший ордер, ведомые так же используют пропорционально меньший ордер

(Необязательно) Заполните поле ChannelKey: ведомые боты должны указать такой же ChannelKey в своих стратегиях

Свои сигналы желательно передавать в зашифрованном виде. Для этого нужно создать ключевые файлы:

Нажмите кнопку Keys 1 раз, это сгенерирует файлы с приватным ключом (data\UDPKeys.key) и публичны ключом data\UDPKeys.pub

Приватный ключ никому не отдавайте. Он сам по себе зашифрован и должен храниться на вашем ПК, с которого вы шлете сигналы, в папке data

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

Важно! Если вы нажмете кнопку Keys снова, то старые ключи будут перезаписаны, и нужно будет снова раздать всем новые публичные ключи.

Обратите внимание:

При включенном шифровании в сигнале передается также базовая валюта, и сверяется принимающим ботом.

Сигналы старого формата из раздела “экспорт” https://moon-bot.com/ru/74-trust-management-2/ можно пересылать таким же образом на удаленного бота

Обратить внимание:

Для использования мультиордеров нужно включить шифрование! (при этом будет передаваться идентификатор ордера, позволяющий ведомым ботам отличить разные ордера на 1 монете). В открытых (не шифрованных) командах идентификатор ордера не передается.

При использовании мультиордеров в ДУ объединение sell ордеров не работает. Управляющему не следует использовать функцию объединения ордеров!

Сплит в ДУ нужно делать только по ордеру, при этом ордер разделиться на 3 части как у управляющего, так и у ведомого с сохранением управления всеми 3 ордерами.

ВНИМАНИЕ. Не используйте сплит позиции при ДУ, поскольку такая команда зависит от конкретного размера позиции управляющего, и не может корректно копироваться на ведомого, а так же позиция у ведомого может быть набрана не только 1 управляющим, но и другими управляющими, или самим ведомым вручную или по его другим стратегиями и тп.

На серверах Амазона и гугла нужно еще создать правило, разрешающее принимать пакеты, в админке. Для серверов Гугла инструкция тут https://cloud.google.com/vpc/docs/using-firewalls .

Любой бот занимает 1 порт (даже если он без стратегий и не настроен на ДУ). Если вы запускаете несколько ботов, нужно назначить им разные порты (Настройки — специальные)

Если порт на сервере открыт, и IP адрес управляющий указал верно, то стратегия с выключенным шифрованием должна принимать сигналы и писать в лог, даже если не может их обработать. Таким образом, если в логе ничего нет, значит неверно настроены порт или IP адрес

Для отправки ничего открывать не надо, если вы видите рейтинг на кнопке поделиться — значит отправка работает.