Архітектура бота

TCP Architecture

Огляд системи

Торгова платформа ByNinja побудована як розподілена багатопроцесорна система, яка відокремлює виконання торгівлі від взаємодії з користувачем.

Архітектура складається з двох незалежних застосунків:

  • Торговий бот — відповідає за аналіз ринку, виконання стратегії, управління ризиками та обробку ордерів.
  • Сервер управління Telegram — відповідає за сповіщення, віддалене управління та обробку команд через Telegram.

Обидва сервіси спілкуються через легкий власний рівень TCP, що дозволяє їм працювати незалежно, залишаючись синхронізованими в реальному часі.

Це розділення покращує стабільність, масштабованість та ізоляцію помилок. Навіть якщо сервіс Telegram стає недоступним, торгове ядро може продовжувати працювати без перерв.


Архітектура процесів

Система використовує процесно-орієнтований дизайн, де кожен компонент має свою чітку відповідальність.

Торговий процес

Торговий процес керує:

  • Інтеграцією з API біржі
  • Моніторингом ринку
  • Виконанням стратегії
  • Управлінням ризиками
  • Обробкою позицій
  • Внутрішнім логуванням

Торгове ядро працює безперервно і приймає команди віддаленого управління через клієнтське з'єднання TCP.

Процес Telegram

Процес Telegram обробляє:

  • Комунікацію з Telegram Bot API
  • Обробку команд користувача
  • Сповіщення та алерти
  • Управління сервером TCP

Цей процес діє як міст між користувачем і торговим ядром.

Незалежне виконання

Обидва застосунки запускаються окремо і працюють як незалежні процеси:

Code
python3 -c "from trading.main import main; main()"
Code
python3 -c "from telegram.main import main; main()"

Оскільки обидва сервіси ізольовані, кожен процес можна перезапускати, оновлювати або налагоджувати незалежно, не впливаючи на іншу підсистему.


TCP комунікація

Комунікаційний рівень базується на власному TCP-протоколі, розробленому для низького навантаження та взаємодії в реальному часі.

Потік комунікації

Code
Telegram User
      ↓
Telegram Bot
      ↓
TCP Server
      ↓
Trading Bot TCP Client
      ↓
Trading Engine

Зворотний потік використовується для логів, попереджень та оновлень статусу.

Структура повідомлень

Всі повідомлення передаються у форматі JSON з фіксованою довжиною заголовка:

Code
{
    "tag": "command",
    "message": "starttrading",
    "timestamp": 1750000000
}

Підтримувані функції

TCP-рівень включає:

  • Логіку автоматичного перепідключення
  • Фонові воркери відправки/отримання
  • Потокобезпечні черги повідомлень
  • Обробку безпечного завершення роботи
  • Маршрутизацію повідомлень за типом
  • Постійний моніторинг з'єднання

Система команд

Архітектура підтримує такі віддалені команди як:

  • Запуск / зупинка торгівлі
  • Увімкнення або вимкнення покупок
  • Увімкнення або вимкнення продажів
  • Примусові дії купівлі / продажу
  • Отримання статистики
  • Моніторинг стану системи

Команди можуть бути глобальними або для конкретного символу.


Багатопроцесорний дизайн

Платформа дотримується багатопроцесорної архітектури замість монолітного дизайну.

Переваги

Ізоляція

Збій у підсистемі Telegram не зупиняє торгові операції.

Масштабованість

У майбутньому кожен сервіс може бути розгорнутий на різних машинах або контейнерах.

Зручність обслуговування

Кодова база розділена на логічні компоненти з чіткою відповідальністю.

Надійність

Перепідключення TCP та фонові воркери допомагають підтримувати стабільний зв'язок навіть під час тимчасових збоїв мережі.

Паралельне виконання

Торгові операції, опитування Telegram, TCP-комунікація та логування працюють паралельно в окремих потоках.


Внутрішня модель паралелізму

Усередині кожного процесу система використовує багатопотоковість для асинхронних операцій.

Потоки торгового застосунку

  • Потік виконання торгів
  • Потік TCP-комунікації
  • Потік пересилання логів
  • Фонові воркери моніторингу

Потоки Telegram застосунку

  • Потік опитування Telegram
  • Потік TCP-сервера
  • Воркери пересилання повідомлень

Цей дизайн гарантує, що мережеві операції ніколи не блокуватимуть саме торгове ядро.