TradeSys —
algo trading platform
TradeSys to własna platforma do algo tradingu, którą buduję i doskonalę od ponad roku. Composite signals, backtesting, paper trading i automatyczne execution. Cały system oparty na własnym kodzie, bez zewnętrznych frameworków tradingowych.
Własna platforma zamiast cudzego oprogramowania.
Punktem wyjścia było proste pytanie: dlaczego mam ufać backtest wynikowi z zewnętrznej platformy, skoro nie wiem jak dokładnie implementuje sygnały? Postanowiłem zbudować własne narzędzie od zera. Kontrola nad każdą linią kodu. Możliwość modyfikacji silnika sygnałów w 20 minut zamiast czekania na aktualizację platformy.
Wymagania, które postawiłem sobie sam: historyczne dane dla Forex i indeksów (XAUUSD, US30, XAGUSD), backtesting z realistycznym spread i slippage, composite signal engine (nie jeden wskaźnik, ale kilka filtrów razem), paper trading przed przejściem na real, eksport wyników do CSV/JSON do analizy.
Cel nie jest "get rich quick". Celem jest zrozumieć, jakie strategie mają statystyczną przewagę przy realistycznych założeniach, i zbudować system, który można odtwarzać i mierzyć.
3 fazy: dane, sygnały, execution.
Faza 1: infrastruktura danych. TimescaleDB (PostgreSQL extension) do przechowywania szeregów czasowych OHLCV. Python scraper pobierający dane historyczne z Dukascopy (darmowe dane 1-minutowe do 2003). Normalizacja timestampów UTC, duplikat detection, auto-fill weekendowych przerw.
Faza 2: silnik sygnałów. Każdy sygnał to Python klasa z metodą generate(df) -> pd.Series. Composite signal łączy wagi z kilku sygnałów składowych. Backtesting engine symuluje realny spread (2.1 pips dla XAUUSD), slippage 0.5 pips, position sizing na bazie % konta.
Faza 3: paper trading i monitoring. FastAPI endpoint odbierający sygnały. Dashboard React z equity curve, drawdown wykresem, listą otwartych pozycji. Alerty przez Telegram bota gdy signal się wygeneruje lub pozycja zostaje zamknięta z SL/TP.
> RSI Filter (14): weight 0.35 — BUY if RSI < 35
> EMA Cross (20/50): weight 0.40 — BUY if 20 cross above 50
> Volume Spike: weight 0.25 — BUY if vol > 1.8x avg(20)
THRESHOLD: 0.65 → ENTRY
SL: 1.5x ATR(14) | TP: 2.5x ATR(14) [R:R 1:1.67]
TimescaleDB zamiast flat CSV. FastAPI zamiast Celery.
TimescaleDB
PostgreSQL extension do time-series. Hypertables automatycznie partycjonują dane po czasie. Zapytania o rok danych 1-minutowych w <200ms.
Python + pandas
Cały silnik backtestingu i sygnałów w Python. Pandas do manipulacji OHLCV. Vectorized operations zamiast pętli — backtesting roku danych 1-minutowych w <3 sekundy.
Docker Compose
TimescaleDB + FastAPI + Redis + React dashboard w jednym docker-compose.yml. Jeden polecenie do uruchomienia całego środowiska. Przenośność między maszynami.
Composite signals
Jeden wskaźnik to za mało. System łączy filtry z wagami i generuje sygnał tylko gdy suma przekroczy threshold. Mniej fałszywych sygnałów, gorszy recall — świadomy trade-off.
React dashboard
Equity curve, drawdown chart, open positions, backtesting wyniki. Recharts do wykresów. Polling co 5s przez REST API — nie WebSocket, bo nie potrzeba ms latency dla paper trading.
Telegram bot
Alerty gdy sygnał aktywny lub pozycja zamknięta. python-telegram-bot library. Jeden plik bota, async handlers. Cały alert w 5 liniach kodu.
Python-first. Dane blisko kodu. Zero vendor lock-in.
TradeSys to projekt, który ciągle ewoluuje. Jestem na etapie optymalizacji parametrów composite signals dla różnych par i timeframe'ów. Każda zmiana jest logowana, wyniki backtestu zapisywane w bazie z pełnym parametryzacją — żeby móc wrócić do poprzedniej wersji i porównać.
Działający system. Pełna kontrola nad danymi i kodem.
TradeSys pokazuje, że można zbudować zaawansowany system tradingowy bez kupowania drogiego oprogramowania i bez polegania na cudzej implementacji wskaźników. Pełna kontrola nad danymi, sygnałami i logiką executiona.
Projekt jest też dowodem koncepcji dla klientów zainteresowanych podobnymi systemami w swoich firmach: zarządzanie ryzykiem, automatyczne triggery decyzyjne, dashboardy z realtime alertami. Stack jest przenośny i dostosowywalny do dowolnej branży.