Jak chińska teoria analizy giełdowej przeniosła się do Rust
W azjatyckim handlu algorytmicznym istnieje popularna koncepcja analizy technicznej zwana Chan Lun (Chan Lun, czyli teoria „Chan Zhong Shuo Chan”). Odrzucając filozoficzne ozdobniki dotyczące zen i mądrości wschodu, w swojej istocie jest to ścisły model geometryczny fraktalnej dekompozycji wykresów cenowych na wzorce: szczyty, dołki, segmenty i tak zwane strefy konsolidacji centralnej.
Biblioteka czsc przeniosła te algorytmy do kodu. Projekt był pierwotnie napisany w czystym Pythonie, ale gdy przyszło do iterowania przez dane tickowe i obsługi setek sygnałów w locie, interpreter nie dawał rady. W gałęzi 1.0 autorzy przepisali cały rdzeń matematyczny w Rust, pozostawiając znajome powiązania Pythona na zewnątrz przez PyO3.
Przyjrzyjmy się, jak to narzędzie działa i dlaczego jest interesujące poza chińskim rynkiem.
Pod maską
Architektura projektu jest wyraźnie podzielona na dwie warstwy: szybka warstwa obliczeniowa w Rust i interfejs użytkownika w Pythonie.
Warstwa Rust (czsc._native) wykonuje ciężką pracę:
- Podstawowe struktury danych i łączenie świec w wyższe interwały czasowe
- Rozpoznawanie wzorców geometrycznych dla teorii Chan (fraktale
FX, segmentyBI, strefyZS) - Biblioteka ponad 220 gotowych funkcji sygnałowych
- Wskaźniki techniczne (SMA, EMA, Wstęgi Bollingera)
Warstwa Python organizuje przepływy pracy:
- Konektory do źródeł danych, takich jak Tushare, TQSdk i giełdy kryptowalut przez CCXT
- Budowanie strategii i kompozycja zdarzeń tradingowych
- Generowanie samodzielnych raportów HTML z wykresami interaktywnymi
To podejście zapewnia niezły wzrost szybkości: parsowanie dziesiątek tysięcy świec i generowanie sygnałów odbywa się bez typowych opóźnień Pythona.
Szybki start
Wymagany jest Python 3.10 lub nowszy. Instalując z PyPI, kompilator Rust nie jest potrzebny, ponieważ autor buduje gotowe pakiety wheel dla popularnych platform:
Budując ze źródeł, będziesz potrzebować najnowszego cargo i narzędzia maturin:
Praca z wykresami i rozpoznawanie wzorców
Biblioteka przyjmuje notowania jako standardowy pandas.DataFrame, następnie konwertuje je do struktur RawBar i oblicza geometrię ruchu cen:
Obiekt CZSC automatycznie filtruje świece wewnętrzne (mechanika jednego zakresu cenowego obejmującego inny), znajduje ekstrema lokalne i składa z nich segmenty kierunkowe.
Synteza wyższych interwałów czasowych i generowanie sygnałów
Jedną z przydatnych funkcji w bibliotece jest BarGenerator. Pozwala na wprowadzanie świec minutowych w strumieniu i uzyskiwanie zsynchronizowanych świec dla interwałów 5-minutowych, 30-minutowych lub dziennych w locie:
Po syntezie interwałów można dołączyć gotowe sygnały. Ponad dwieście wzorców jest wbudowanych w repozytorium, zaimplementowanych w Rust:
Wizualizacja i backtesting
Patrzenie na surowe tablice punktów jest niewygodne. czsc ma wbudowany moduł wizualizacji oparty na plotly i lightweight-charts. Generuje gotowy samodzielny plik HTML ze świecami nałożonymi na segmenty i punkty wejścia:
Do weryfikacji strategii autor wyodrębnił obliczenia zwrotów do osobnego pakietu o nazwie wbt (Weight Back Test), który jest twardą zależnością. Model operuje na zmianach docelowych wag portfela w czasie, a nie na dyskretnych zleceniach, co upraszcza skalowanie do koszyka instrumentów.
Niuanse i niedociągnięcia
Projekt ma specyfiki, o których warto wiedzieć przed rozpoczęciem:
- Prawie cała dokumentacja, komentarze w kodzie i nazwy sygnałów są w języku chińskim. Aby zrozumieć logikę niektórych funkcji, będziesz potrzebować tłumacza pod ręką.
- Silne powiązanie z azjatyckimi źródłami danych (Tushare, Tianqin), choć dostępność CCXT wygładza to dla handlujących kryptowalutami.
- Wersja 1.0 złamała wsteczną kompatybilność z gałęzią 0.9. Jeśli wcześniej pracowałeś z czsc, będziesz musiał przepisać kod pod nowy interfejs API.
Kto znajdzie ten projekt użyteczny
Biblioteka będzie przydatna dla programistów quant i traderów szukających alternatywy dla klasycznych wskaźników, takich jak RSI czy MACD. Chan Lun zapewnia ścisłą formalizację poziomów wsparcia i struktur trendu, a rdzeń w Rust w czsc eliminuje potrzebę pisania ciężkich obliczeń geometrii wykresów od zera. Aby rozpocząć, wystarczy podstawowa znajomość Pythona i zrozumienie, jak działają szeregi czasowe cen.
Powiązane projekty