>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
Python

Tickflow Stock Panel: Jak zbudować własny terminal do ilościowej analizy giełdowej

Gdy zaczynasz zgłębiać handel algorytmiczny i analizę rynku, szybko napotykasz tę samą ścianę. Gotowe terminale albo kosztują fortunę, albo są powiązane z zastrzeżonymi chmurami, gdzie nie możesz samodzielnie manipulować surowymi danymi. Jeśli próbujesz zbudować własnego Frankensteina z porozrzucanych skryptów Pythona, wszystko kończy się jako zoo notatników Jupyter, które zawodzą z powodu wyczerpania pamięci, gdy próbujesz przetworzyć kilka lat historii.

Niedawno natknąłem się na ciekawy projekt o nazwie tickflow-stock-panel (TSP w skrócie). To samodzielny panel open-source do filtrowania akcji, testowania historycznego i monitorowania. Projekt koncentruje się początkowo na chińskim rynku A-akcji i API TickFlow, ale od strony inżynieryjnej jest zbudowany bardzo starannie. W środku znajdziesz solidny nowoczesny stos: Polars do szybkiej obróbki tabel, DuckDB z Parquet do przechowywania i zapytań, FastAPI na backendzie i czysty React na frontendzie.

Co potrafi ten panel

Autor repozytorium od razu wyraźnie zastrzega: projekt nie próbuje zastąpić terminali brokerskich takich jak Tongdaxin czy Thinkorswim i nie ma tu „magicznych przycisków AI gwarantujących zyski”. To stacja robocza do testowania hipotez i śledzenia sygnałów.

Interfejs dashboardu

Jeśli rozłożymy możliwości na czynniki pierwsze, mamy solidny zestaw narzędzi:

  1. Filtrowanie i selekcja akcji. Zawiera 18 wbudowanych strategii, a dodatkowo możesz skonfigurować własne warunki lub generować reguły za pomocą LLM (obsługuje dowolne API kompatybilne z OpenAI, jak DeepSeek czy lokalny Ollama). Dzięki Polars skanowanie całego rynku przez listę wskaźników zajmuje ułamki sekundy.
  2. Potok obliczania wskaźników technicznych. System oblicza klasyczne metryki w locie (MA, EMA, MACD, RSI, KDJ, Wstęgi Bollingera) i zapisuje wzbogacone dane do lokalnych plików Parquet.
  3. Moduł testowania historycznego. Silnik może uruchamiać testy historyczne w wielu trybach (analiza czynników z metrykami IC/IR oraz pełne testy strategii). Oblicza krzywe kapitału, spadki, współczynnik Sharpe'a, skuteczność z uwzględnieniem prowizji, poślizgu i stop-lossów. Postęp wykonania jest przesyłany do klienta przez Server-Sent Events w czasie rzeczywistym.
  4. Monitorowanie i alerty. Możesz powiązać reguły ze strategiami, poziomami cen lub anomaliami rynkowymi. Obsługuje sygnały głosowe w przeglądarce i powiadomienia przez webhooki.

Selektor i strategie

Techniczny stos pod maską

Architektura projektu zasługuje na szczególną uwagę. Nie ma tu rozbudzonych relacyjnych baz danych ani ciężkich kolejek wiadomości.

┌─────────────────────────────────────────────────────────┐
                      React 18 UI                        
   (Vite, Tailwind, Lightweight Charts, ECharts, dnd)    
└────────────────────────────┬────────────────────────────┘
                              REST / SSE
┌────────────────────────────▼────────────────────────────┐
                    FastAPI Backend                      
        (Pydantic v2, APScheduler, sse-starlette)        
└──────────────┬───────────────────────────┬──────────────┘
                                          
┌──────────────▼──────────────┐ ┌──────────▼──────────────┐
       Вычисления                     Хранение         
   Polars / vectorbt             DuckDB + Parquet      
└─────────────────────────────┘ └─────────────────────────┘

Deweloper postawił na lokalną wydajność maszyny:

  • Polars obsługuje wszystkie ciężkie transformacje tabel. Wykorzystuje wszystkie rdzenie CPU i nie dławi się na milionach wierszy, w przeciwieństwie do zwykłego Pandasa.
  • DuckDB i Parquet pokrywają zapytania analityczne. Dane siedzą lokalnie w kompaktowym formacie binarnym, odczytywane natychmiast bez potrzeby uruchomionego PostgreSQL czy ClickHouse.
  • vectorbt jest używany ściśle na etapie backtestingu, jako sprawdzona biblioteka wektorowa do symulacji handlu.
  • Docker z wielostopniowymi buildami pakuje skompilowany frontend i backend w jeden lekki kontener.

Testowanie strategii

Jak uruchomić lokalnie

System możesz wdrożyć na dwa sposoby. Jeśli chcesz zgłębić kod źródłowy i dodać coś własnego, tryb deweloperski jest najprostszy.

Będziesz potrzebować Pythona 3.11+, Node 20+, menedżerów pakietów uv i pnpm:

# Клонируем проект и настраиваем переменные окружения
git clone https://github.com/shy3130/tickflow-stock-panel.git
cd tickflow-stock-panel
cp .env.example .env

# Запуск dev-скрипта (поднимет фронтенд на :3011 и бэкенд на :3018)
./dev.sh

Druga opcja to zwykły Docker Compose:

cp .env.example .env
docker compose up --build

Po uruchomieniu interfejs webowy jest dostępny pod http://localhost:3018.

Centrum monitorowania

Podstawowa konfiguracja w .env jest minimalna:

TICKFLOW_API_KEY=              # Ключ данных (можно оставить пустым для базовой истории)
AI_API_KEY=                    # Ключ LLM (OpenAI-compatible) для автогенерации стратегий
PORT=3018                      # Порт веб-сервера

Jeśli nie handlujesz na chińskim rynku, projekt jest nadal interesujący. Architektura łączenia niestandardowych źródeł danych jest udokumentowana w docs/custom-data-source.md. Możesz wprowadzać własne CSV, JSON lub napisać adapter dla MOEX / Yahoo Finance / giełd kryptowalutowych, wykorzystując gotowy interfejs filtra, wykresy i silnik testów wektorowych.

Analiza koncepcji i sektorów

Poziomy zleceń limitowanych

Dla kogo jest ten projekt

Przede wszystkim repozytorium docenią programiści zainteresowani fintech i handlem algorytmicznym.

Z jednej strony to gotowe do użycia narzędzie dla osób szukających lekkiego samodzielnego systemu monitorowania bez dodatkowej infrastruktury. Z drugiej strony baza kodu służy jako wyraźny przykład, jak prawidłowo połączyć FastAPI, Polars i DuckDB w jedną responsywną aplikację ze strumieniowymi odpowiedziami i interaktywnymi wykresami.

Jeśli zamierzałeś napisać własny selektor lub backtester, warto przynajmniej zajrzeć do repozytorium shy3130/tickflow-stock-panel, przynajmniej dla podejść do obsługi danych.

Powiązane projekty