Trend rynkowy zeszłej nocy dla Big Pie i Two Pie był naprawdę na czasie. Już dawno nie było tak płynnego trendu.
Tym razem porozmawiajmy o tym, jak wykorzystać historyczne zapisy transakcji B.
Urzędnicy B'an udostępnili wiele danych dotyczących transakcji. Istnieje strona Github, na której możesz szczegółowo sprawdzić, jakie kategorie danych są dostępne i jak je pobrać. Tutaj przedstawiam głównie pobieranie, organizację i wykorzystanie zagregowanych zapisów transakcji aggTrades.
aggTrades to zapis transakcji po agregacji, czyli Binance agreguje kilka kolejnych transakcji wykonanych w tym samym czasie, w tym samym kierunku i po tej samej cenie w jeden rekord, podobny do linii K, ale tylko z jedną ceną i bez najwyższa cena, najniższa cena i tak dalej. Na przykład, jeśli na rynku złożono duże zamówienie i wiele małych zamówień zostało złożonych w celu jego realizacji, wówczas zamówienia, które dotarły w tym samym czasie w bardzo krótkim czasie (w milisekundach), zostaną zagregowane. Może to być także kolejność, którą dopasowujący silnik może dopasować jednocześnie.
Zaletą danych aggTrades jest to, że mogą zawierać zapisy transakcji na poziomie milisekund, ale nie mają tak dużej objętości danych jak czyste transakcje (czyli najbardziej oryginalne dane, nie zagregowane w tej samej cenie), co jest dobry kompromis w przypadku planu danych o wysokiej częstotliwości.
Ogólnie rzecz biorąc, strategie quasi-wysokiej częstotliwości wykorzystują takie zagregowane dane. Ci, którzy mają naprawdę dużą częstotliwość, zwykle korzystają z danych dotyczących transakcji i księgi zamówień. Ilość danych jest bardzo duża i ich przetwarzanie jest bardzo niewygodne. Jeśli nie są wykorzystywane, nie ma takiej potrzeby. Nie tylko zużywa zasoby, ale także zwiększa trudność programowania.
aggTrades można wykorzystać do syntezy krótkich linii K o dowolnym poziomie, takich jak krótkie linie K trwające 5, 10 i 15 sekund. Nadal możliwe jest użycie takich linii K w niektórych strategiach handlu śróddziennego.
Na przykład poniżej znajduje się 1-sekundowa linia k opublikowana wcześniej.

Istnieje również arbitraż o wysokiej częstotliwości. Trudno jest obecnie zarabiać pieniądze na zwykłym arbitrażu i jest on bardzo ryzykowny. Jeśli częstotliwość jest wyższa, mogą pojawić się pewne możliwości.
Tego rodzaju dane tick-by-tick można również wykorzystać do syntezy alternatywnych linii K, takich jak równe słupki i tym podobne. Korzystanie z aggTrades może być znacznie dokładniejsze niż używanie drobnych linii K. Strategia CTA stworzona w ten sposób może być w porównaniu ze zwykłą strategią uzupełniającą linii K. O tym, jak zsyntetyzować tego rodzaju baton, będę mógł napisać w kilku kolejnych artykułach.
Poniżej wprowadzenie do kodu (większość kodu znajduje się w załączniku, ponieważ jest za duża i za długa, nie będę go zamieszczał w tekście). Kod do pobrania to przykład Binance, ale z pewnymi niewielkimi zmianami i moim kodem przetwarzania.
Oto przykład danych miesięcznych (Binance udostępnia również dane dzienne). Cały kod jest jednowątkowy i wykonywany synchronicznie, bez asynchronii lub wielowątkowości. Ponieważ takie pobieranie odbywa się raz na miesiąc lub n dni, możesz po prostu trochę poczekać i nie ma potrzeby komplikować tego.
Generalnie nie ma problemu z wykorzystaniem starszych danych do podstawowego testu historycznego, ponieważ testowanie danych o wysokiej częstotliwości pełni głównie rolę analityczną i zależy głównie od rzeczywistej ceny, ponieważ poślizg może być duży lub oczekujące zlecenie nie zostało zrealizowane, a dalsze działania Zamówienie nie zostało przyjęte, wymiana została opóźniona itp.
Ale później mam również kod do pobierania danych w czasie rzeczywistym, który polega na pobraniu danych aggTrades z dnia, aby natychmiast zweryfikować pominięte ceny rynkowe. Dzienne dane Binance są dostępne dopiero z kilkudniowym opóźnieniem. Jeśli chcesz z niego pilnie skorzystać, musisz sam go zaindeksować za pomocą interfejsu API wymiany.
1 pobranie
Pierwsza część kodu to dwa pliki agg.py i użytkowe.py, a następnie użyj
python3 agg.py -y 2022 -m 6 -t um -folder /określona ścieżka
Oto przykład polecenia pobrania wszystkich danych aggTrades dotyczących kontraktów wieczystych za czerwiec 2022 r. Pobieranie trwa zwykle około dziesięciu minut. Dane są pobierane w postaci skompresowanej, dlatego kolejnym krokiem jest ich dekompresja.
2. Rozpakuj
Do dekompresji użyj pliku unzip.py. Jest to bardzo krótki kod posiadający tylko dwie funkcje, jedną do dekompresji danych miesięcznych, a drugą do dekompresji danych dziennych.
Po rozpakowaniu pliku ZIP staje się on plikiem CSV. Problem z plikami CSV polega na tym, że zajmują one więcej miejsca na dysku twardym i wolniej się ładują. Następnym krokiem jest więc konwersja pliku csv na plik marynaty. Możesz kompresować lub nie, w zależności od własnej sytuacji. Jeśli Twój dysk twardy jest duży, zaleca się, aby go nie kompresować. Ogólnie rzecz biorąc, pojemność danych wynosi około 50 GB miesięcznie, więc zależy to od Twojej sytuacji. Ogólnie rzecz biorąc, można kupić szybszy zewnętrzny dysk twardy SSD. Obecnie 1 TB kosztuje zaledwie kilkaset juanów, co jest już tanie i ładuje się bardzo szybko podczas testów historycznych.
3. Zamień kompresję na marynatę
Kod konwersji znajduje się w pliku csv_to_pkl.py. Jak wspomniano powyżej, łatwiej jest zapisać i używać po konwersji.
Po konwersji ręcznie usunąłem plik csv, w przeciwnym razie zajmowałby on dysk twardy. Nie ma kodu umożliwiającego implementację tego kroku. Jak wspomniano wcześniej, są to operacje o bardzo niskiej częstotliwości i nie muszą być w pełni zautomatyzowane. W przykładowym kodzie używam kompresji gzip poziomu 2. Ogólnie rzecz biorąc, po kompresji dane z jednego miesiąca zajmują mniej niż 10 GB.
Plik CSV nie tylko zajmuje miejsce, ale także ładuje się powoli. Zaleca się stosowanie formatu marynowanego. Ogólnie rzecz biorąc, jego wydajność jest dobra, ale kluczem jest dobra kompatybilność. Jeśli chcesz korzystać z serwerów w chmurze lub wielu innych pakietów open source, są one bardziej kompatybilne niż pióro i tym podobne.
OK, teraz, gdy dane są już gotowe, możesz zacząć studiować strategie.
4. Natychmiastowe pobieranie danych
Jak wspomniano wcześniej, dane na serwerze danych Binance są opóźnione o jeden lub dwa dni. Jeśli chcesz sprawdzić, jak Twoja strategia będzie działać w bieżących warunkach rynkowych, ale nie opublikowałeś na czas rzeczywistej ceny danej waluty, możesz użyć poniższego kodu, aby pobrać aggTrades z powrotem do określonego czasu. Zwykle używam go do pobierania danych z bieżących 12 godzin, aby zobaczyć, jak strategia może działać.
Jeśli używany jest następujący kod, należy go zmodyfikować do najpóźniejszego czasu rozpoczęcia.

Pobrane dane wyglądają tak. Możesz zapoznać się z dokumentacją Binance i ostatnimi transakcjami (akumulacją), aby zobaczyć ich konkretne znaczenie.

Mając takie surowe dane, możesz użyć df.resample(bar_size).agg(), aby zagregować je w dowolną potrzebną linię k poziomu i możesz zrobić, co chcesz.
w końcu
Zasadniczo jest to przygotowanie danych aggTrades, z których korzystałem wcześniej. Dzisiejsze strategie stają się coraz bardziej wolumetryczne i przy użyciu bardziej szczegółowych danych można opracować więcej kategorii strategii. Komplementarność strategii jest kluczem do wielostrategii.
Jeśli potrzebujesz powyższego kodu, możesz skontaktować się z nami, aby go uzyskać.