Шлюз (ftxGateway) предназначен для осуществления взаимодействия торгового ядра с биржей ftx.
К основным выполняемым действиям шлюза можно отнести следуещее:
- получение информации о текущем балансе (используется приватный канал REST API);
- получение информации о предложениях покупки и продажи по конкретными ценным бумагам (используется публичный канал WebSocket);
- управление ордерами на покупку и продажу.
Для взаимодействия с ядром и агентом используется протокол aeron.
При запуске шлюз выполняет следующие действия:
- считывает из дефолтного файла конфигурации параметры для работы с агентом;
- получает от агента конфигурацию для работы;
- создает необходимые каналы aeron, а также приватный канал для получения баланса и списка открытых ордеров (REST API), приватный канал для отслеживания отмены или исполнения ордеров (WebSocket) и публичный канал для получения ордербука по каждой валютной паре (WebSocket);
- получает состояние баланса и отправляет эту информацию ядру;
- получает список открытых ордеров и отправляет эту информацию ядру;
- запускает главный цикл обработки.
Главный цикл выполняет следующие действия:
- опрашивает канал Aeron и обрабатывает полученные от него команды;
- обрабатывает сообщения, получаемые от web-сокетов;
- отправляет информацию об ошибках агенту;
- перезапускает сокет в случае разрыва соединения.
Шлюз отсылает на лог сервер следующую информацию:
- сообщение о создании ордера;
- сообщение об отмене ордера;
- сообщение о статусе ордера;
- инфомацию о балансе после создания, отмены или исполнении ордеров;
- периодически отпраляет метрику (ping).
Операционная система debian 11
Выполнить команды в терминале:
sudo apt update
sudo apt install git
Перед установкой выполнить в терминале команду (с помощью которой установятся необходимые отсутствующие пакеты):
sudo apt install build-essential gcc libssl-dev
Далее загружаем cmake с помощью команды (возможно потребуется выполнить команду apt-get install wget):
wget https://github.com/Kitware/CMake/releases/download/v3.21.0/cmake-3.21.0.tar.gz
Далее разархивируем только что загруженный архив и переходим в соответствующую папку:
tar xvf cmake-3.21.0.tar.gz
cd cmake-3.21.0
Выполняем команду
./bootstrap
и ожидаем ее завершения. Далее выполняем непосредственно установку:
sudo make install
Установленную версию можно проверить с помощью команды:
cmake --version
Загружаем дистрибутив с официального сайта и собрать Boost. Для этого перейдите в раздел «Download» и скопируйте ссылку на скачивание для
платформы unix
.
На момент написания гейта последней версией boost была 1.78.0, ее мы и будем использовать (Сейчас доступна версия 1.79.0). Ссылка на её скачивание выглядит так
— https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.tar.bz2
.
Выберите каталог, в который хотите установить Boost, а затем выполните в нём следующую команду, чтобы скачать файл с помощью Wget:
wget https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.tar.bz2
После загрузки разархивируйте Boost:
tar --bzip2 -xf boost_1_78_0.tar.bz2
Нам также потребуется получить библиотеку Certify. Она нужна нам для правильной
проверки подлинности IP-адреса сервера. Её рекомендуют сами разработчики beast
в комментарие к
файлу root_certificates.hpp.
Перейдите в подкаталог, содержащий библиотеки Boost:
cd boost_1_78_0/libs/
Загрузите исходный код:
git clone https://github.com/djarek/certify.git
А затем перейдите обратно в корневую директорию Boost:
cd ..
Выполните следующую команду для инициализации установщика:
./bootstrap.sh
sudo ./b2 install
Клонировать репозиторирий Aeron:
git clone https://github.com/real-logic/aeron.git
Также вам потребуется JDK версии 8 или новее. Как установить JDK 8 описано тут
Переходим в корневой каталог репозитория
cd aeron
и запускаем скрипт
./cppbuild/cppbuild
Скомпилированные файлы будут находиться в папке cppbuild/Release/binaries
Клонировать код репозитория:
git clone https://github.com/RoboTradeCode/gate-ftx.git
Выполнить установку библиотеки fmt с помощью команды
sudo apt-get install libfmt-dev
Перейти в папку проекта и выполнить команду
./build.sh
Испоняемый файл будет находиться в папке build/Release. Для запуска в терминале выполнить ./ftxGateway, предварительно скопировав файл default_config.toml из папки gate-ftx.
Всю необходимую для работы информацию гейт получает из файла default_config.toml
Пример файла default_config.toml
# данные для гейта
[gate]
exchange_name = 'ftx'
instance_name = '1'
[configuration]
# Откуда загружать конфигурацию. Может быть три значения: agent, api, file.
source = 'api'
# эндпойнт для получения конфигурации от конфигуратора.
api = ["configurator.robotrade.io", "/ftx/1?only_new=false"]
# настройки работы протокола aeron
[aeron]
# настройки каналов откуда будем принимать данные
[aeron.subscribers]
# настройки канала куда будет приходить конфигурацию от агента
# ["channel", channel_id]
agent = ["aeron:ipc", 1004]
# настройки каналов куда будем отправлять данные
[aeron.publishers]
# канал куда отправляем логи
logs = ["aeron:ipc", 2002]
# канал агента куда гейт при запуске отправит запрос на получение конфига
agent = ["aeron:ipc", 1002]
Значение полей "echange_name" и "instance_name" гейт использует при формировании json данных, которые он отправляет ядру.
Поле "source" может иметь три значения:
- agent (конфигурация будет получена от агента по каналу aeron);
- api (конфигурация будет получена непосредственно с сервера конфигуратора (как настроить файл конфигурации смотреть тут), будет использоваться эндпойнт из примера выше)
- file (конфигурация будет получена из файла config.json (настраивается так же, как и на сервере конфигуратора), который должен находиться там же где и default_config.toml)
Запустить гейт можно командой:
./ftxGateway