Skip to content

Ядро выполняет быстрый просчет алгоритмов

Notifications You must be signed in to change notification settings

RoboTradeCode/core_3t_php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Core documentation

Ядро предназначно для следующего:

  • Принимать данные со всех gates и сохранять их в memcached
  • Посылать команды гейтам
  • Принимать конфиг с агента
  • Посылать все логи агенту
  • Просчитывать алгоритм

Core Service Structure

  • kernel - папка, главная папка, связанная с принятием всех данных от gate и agent, а также содержит сам алгоритм
  • config - папка, содержащая все настройки
  • src - папка, содержащая все вспомогательные и рабочие класса
  • test - папка, содержащая тестовые файлы для работы и проверки кода
  • index.php - главный файл, подключеймый во всех файлах проекта

Установка необходимого окружения и проекта

  1. Необходимо, чтобы aeron уже был установлен для php 8.0 (https://github.com/RoboTradeCode/aeron-php)

  2. Сделать предварительные команды

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
  1. Проверить, что php установился (версия должна быть PHP 8.0)
php -v
  1. Далее установить библиотеки.
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
  1. Необходимо установить memcached
sudo apt install memcached
sudo apt install -y php-memcached
sudo apt install -y php8.0-memcached
  1. Проверить работает ли 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
  1. Установка composer (https://getcomposer.org/download/)

  2. Проверить версию (она обязательно должна быть не меньше 2.0.0) Если версия ниже 2.0.0, обратиться к статье (https://coderteam.ru/blog/obnovlyaemsya-do-composer-2-na-ubuntu/) Хотя, есть вероятность, что и в первой версии тоже будет работать.

composer
  1. Клонирование репозитория (Если ссылка не подходит, скопировать ее, на гитхаб в репозитории -> code -> https -> копирование значок)
git clone --recurse-submodules https://github.com/RoboTradeCode/core_3t_php.git
  1. перейти в папку core_3t_php
cd core_3t_php/

Установка зависимостей

composer install

Cross 3t алгоритма

  1. Первый шаг - запуск получения данных от гейта.
php kernel/receive_data.php
  1. Запустить сам алгоритм cross_3t_php.
php kernel/cross_3t.php

Первоначальные данные:

  1. Все ордербуки со всех бирж
  2. Все балансы со всех бирж
  3. Настройки (min_deal_amount, курсы как amount, routes и т. д.)

Логика алгоритма:

  1. Фильтрация баланса по min_deal_amount, оставить только те ассеты, которые могут быть потенциально отторгованы
  2. Проходиться по всем routes (треугольникам), в которых один из шагов (route) имеет актив, который есть на главной бирже. Если биржи или ассета из баланса нет в routes, то пропустить этот треугольник
  3. Находим размер сделки deal_amount в зависимости от балансов и max_deal_amount
  4. Выбираем лучшие ордербуки идя в глубь стакана, и в зависимости от deal_amount (запоминаем, какая пара относится к какой бирже)
  5. Записать результат сделки в массив для каждого треугольника
  6. Выбираем лучший результат и если он положительный, совершаем сделку на станции если есть эта биржа в результате

Балансировочный алгоритм

  1. Первый шаг - запуск получения данных от гейта.
php kernel/receive_data.php
  1. Запустить сам алгоритм balancer_by_market_order.
php kernel/balancer_by_market_order.php

Логика алгоритма:

  1. Балансирует всю сумму к USDT
  2. Делит всю сумму поровну на все ассеты
  3. Отправляет запросы на постановку маркет ордеров для каждого ассета

About

Ядро выполняет быстрый просчет алгоритмов

Resources

Stars

Watchers

Forks

Packages

No packages published