Ядро предназначно для следующего:
- Принимать данные со всех gates и сохранять их в memcached
- Посылать команды гейтам
- Принимать конфиг с агента
- Посылать все логи агенту
- Просчитывать алгоритм
- kernel - папка, главная папка, связанная с принятием всех данных от gate и agent, а также содержит сам алгоритм
- config - папка, содержащая все настройки
- src - папка, содержащая все вспомогательные и рабочие класса
- test - папка, содержащая тестовые файлы для работы и проверки кода
- index.php - главный файл, подключеймый во всех файлах проекта
-
Необходимо, чтобы aeron уже был установлен для php 8.0 (https://github.com/RoboTradeCode/aeron-php)
-
Сделать предварительные команды
sudo apt update && sudo apt upgrade -y
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt install php8.0
- Проверить, что php установился (версия должна быть PHP 8.0)
php -v
- Далее установить библиотеки.
sudo apt install php8.0-common && sudo apt install php8.0-cli && sudo apt install php8.0-fpm && sudo apt install php8.0-mysql && sudo apt install php8.0-memcache && sudo apt install php8.0-memcached -y && sudo apt install php8.0-bcmath && sudo apt install php8.0-curl
- Необходимо установить memcached
sudo apt install memcached
sudo apt install -y php-memcached
sudo apt install -y php8.0-memcached
- Проверить работает ли memcached
sudo service memcached status
Если не работает, то можно обратиться к статьям, чтобы решить проблему (https://habr.com/ru/post/108274/) (https://sheensay.ru/memcached-install-config#kak-ustanovit-server-memcached) или побробовать следующие команды
sudo apt update
sudo apt install memcached
sudo apt install libmemcached-tools -y
sudo systemctl start memcached
sudo apt-get install php8.0-memcache
-
Установка composer (https://getcomposer.org/download/)
-
Проверить версию (она обязательно должна быть не меньше 2.0.0) Если версия ниже 2.0.0, обратиться к статье (https://coderteam.ru/blog/obnovlyaemsya-do-composer-2-na-ubuntu/) Хотя, есть вероятность, что и в первой версии тоже будет работать.
composer
- Клонирование репозитория (Если ссылка не подходит, скопировать ее, на гитхаб в репозитории -> code -> https -> копирование значок)
git clone --recurse-submodules https://github.com/RoboTradeCode/core_3t_php.git
- перейти в папку core_3t_php
cd core_3t_php/
composer install
- Первый шаг - запуск получения данных от гейта.
php kernel/receive_data.php
- Запустить сам алгоритм cross_3t_php.
php kernel/cross_3t.php
Первоначальные данные:
- Все ордербуки со всех бирж
- Все балансы со всех бирж
- Настройки (min_deal_amount, курсы как amount, routes и т. д.)
Логика алгоритма:
- Фильтрация баланса по min_deal_amount, оставить только те ассеты, которые могут быть потенциально отторгованы
- Проходиться по всем routes (треугольникам), в которых один из шагов (route) имеет актив, который есть на главной бирже. Если биржи или ассета из баланса нет в routes, то пропустить этот треугольник
- Находим размер сделки deal_amount в зависимости от балансов и max_deal_amount
- Выбираем лучшие ордербуки идя в глубь стакана, и в зависимости от deal_amount (запоминаем, какая пара относится к какой бирже)
- Записать результат сделки в массив для каждого треугольника
- Выбираем лучший результат и если он положительный, совершаем сделку на станции если есть эта биржа в результате
- Первый шаг - запуск получения данных от гейта.
php kernel/receive_data.php
- Запустить сам алгоритм balancer_by_market_order.
php kernel/balancer_by_market_order.php
Логика алгоритма:
- Балансирует всю сумму к USDT
- Делит всю сумму поровну на все ассеты
- Отправляет запросы на постановку маркет ордеров для каждого ассета