Architektura Bota

TCP Architecture

Przegląd systemu

Platforma transakcyjna ByNinja jest zbudowana jako rozproszony system wieloprocesowy, który oddziela wykonywanie transakcji od interakcji z użytkownikiem.

Architektura składa się z dwóch niezależnych aplikacji:

  • Bot transakcyjny — odpowiedzialny za analizę rynku, realizację strategii, zarządzanie ryzykiem i przetwarzanie zleceń.
  • Serwer kontrolny Telegram — odpowiedzialny za powiadomienia, zdalne sterowanie i obsługę komend za pośrednictwem Telegrama.

Oba serwisy komunikują się za pomocą lekkiej, niestandardowej warstwy TCP, co pozwala im działać niezależnie, pozostając jednocześnie zsynchronizowanymi w czasie rzeczywistym.

To rozdzielenie poprawia stabilność, skalowalność i izolację awarii. Nawet jeśli usługa Telegram stanie się niedostępna, silnik transakcyjny może kontynuować działanie bez przerwy.


Architektura procesów

System wykorzystuje projekt zorientowany procesowo, w którym każdy komponent ma dedykowaną odpowiedzialność.

Proces transakcyjny

Proces transakcyjny zarządza:

  • Integracją API giełdy
  • Monitorowaniem rynku
  • Realizacją strategii
  • Zarządzaniem ryzykiem
  • Obsługą pozycji
  • Logowaniem wewnętrznym

Silnik transakcyjny działa w sposób ciągły i udostępnia komendy zdalnego sterowania poprzez połączenie klienta TCP.

Proces Telegram

Proces Telegram obsługuje:

  • Komunikację z API Bota Telegram
  • Przetwarzanie komend użytkownika
  • Powiadomienia i alerty
  • Zarządzanie serwerem TCP

Proces ten działa jako pomost między użytkownikiem a silnikiem transakcyjnym.

Niezależne środowisko wykonawcze

Obie aplikacje są uruchamiane oddzielnie i działają jako niezależne procesy:

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

Ponieważ obie usługi są izolowane, każdy proces można ponownie uruchomić, zaktualizować lub debugować niezależnie, bez wpływu na drugi podsystem.


Komunikacja TCP

Warstwa komunikacyjna oparta jest na niestandardowym protokole TCP zaprojektowanym z myślą o niskim narzucie i interakcji w czasie rzeczywistym.

Przepływ komunikacji

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

Odwrotny przepływ jest używany do logów, alertów i aktualizacji statusu.

Struktura wiadomości

Wszystkie wiadomości są przesyłane w formacie JSON z nagłówkiem o stałej długości:

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

Obsługiwane funkcje

Warstwa TCP zawiera:

  • Logikę automatycznego ponownego łączenia
  • Wątki robocze wysyłania/odbierania w tle
  • Kolejki wiadomości bezpieczne dla wątków
  • Obsługę łagodnego zamykania
  • Routing wiadomości według typu
  • Monitorowanie trwałego połączenia

System poleceń

Architektura obsługuje zdalne polecenia, takie jak:

  • Rozpocznij / zatrzymaj handel
  • Włącz lub wyłącz kupowanie
  • Włącz lub wyłącz sprzedawanie
  • Wymuś kupno / sprzedaż
  • Pobieranie statystyk
  • Monitorowanie statusu systemu

Polecenia mogą być globalne lub specyficzne dla symbolu.


Projekt wieloprocesowy

Platforma jest zgodna z architekturą wieloprocesową zamiast projektu monolitycznego.

Zalety

Izolacja

Awaria podsystemu Telegram nie zatrzymuje operacji handlowych.

Skalowalność

Każda usługa może być w przyszłości wdrożona na różnych maszynach lub kontenerach.

Utrzymanie

Baza kodu jest podzielona na logiczne komponenty z jasno określonymi obowiązkami.

Niezawodność

Ponowne łączenie TCP i wątki robocze w tle pomagają utrzymać stabilną komunikację nawet podczas tymczasowych awarii sieci.

Wykonanie współbieżne

Operacje handlowe, odpytywanie Telegrama, komunikacja TCP i logowanie działają współbieżnie przy użyciu dedykowanych wątków.


Wewnętrzny model współbieżności

Wewnątrz każdego procesu system wykorzystuje wielowątkowość do operacji asynchronicznych.

Wątki aplikacji transakcyjnej

  • Wątek wykonawczy transakcji
  • Wątek komunikacji TCP
  • Wątek przekazywania logów
  • Wątki robocze monitorowania w tle

Wątki aplikacji Telegram

  • Wątek odpytywania Telegrama
  • Wątek serwera TCP
  • Wątki robocze przekazywania wiadomości

Ten projekt zapewnia, że operacje sieciowe nigdy nie blokują samego silnika transakcyjnego.