Skip to content

RoboTradeCode/gate-ftx

Repository files navigation

gate-ftx

Шлюз (ftxGateway) предназначен для осуществления взаимодействия торгового ядра с биржей ftx.

К основным выполняемым действиям шлюза можно отнести следуещее:

  • получение информации о текущем балансе (используется приватный канал REST API);
  • получение информации о предложениях покупки и продажи по конкретными ценным бумагам (используется публичный канал WebSocket);
  • управление ордерами на покупку и продажу.

Для взаимодействия с ядром и агентом используется протокол aeron.

При запуске шлюз выполняет следующие действия:

  • считывает из дефолтного файла конфигурации параметры для работы с агентом;
  • получает от агента конфигурацию для работы;
  • создает необходимые каналы aeron, а также приватный канал для получения баланса и списка открытых ордеров (REST API), приватный канал для отслеживания отмены или исполнения ордеров (WebSocket) и публичный канал для получения ордербука по каждой валютной паре (WebSocket);
  • получает состояние баланса и отправляет эту информацию ядру;
  • получает список открытых ордеров и отправляет эту информацию ядру;
  • запускает главный цикл обработки.

Главный цикл выполняет следующие действия:

  • опрашивает канал Aeron и обрабатывает полученные от него команды;
  • обрабатывает сообщения, получаемые от web-сокетов;
  • отправляет информацию об ошибках агенту;
  • перезапускает сокет в случае разрыва соединения.

Шлюз отсылает на лог сервер следующую информацию:

  • сообщение о создании ордера;
  • сообщение об отмене ордера;
  • сообщение о статусе ордера;
  • инфомацию о балансе после создания, отмены или исполнении ордеров;
  • периодически отпраляет метрику (ping).

Установка и сборка гейта

Операционная система debian 11

1. Установка git

Выполнить команды в терминале:

sudo apt update
sudo apt install git

2. Установка CMake

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

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

3. Установка boost

Загружаем дистрибутив с официального сайта и собрать 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

Boost.Certify

Нам также потребуется получить библиотеку 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

4. Установка Aeron

Клонировать репозиторирий Aeron:

git clone https://github.com/real-logic/aeron.git

Также вам потребуется JDK версии 8 или новее. Как установить JDK 8 описано тут

Переходим в корневой каталог репозитория

cd aeron

и запускаем скрипт

./cppbuild/cppbuild

Скомпилированные файлы будут находиться в папке cppbuild/Release/binaries

5. Установка гейта

Клонировать код репозитория:

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.

6. Подготовка к запуску

Всю необходимую для работы информацию гейт получает из файла 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages