Dünən axşam böyük və kiçik valyutaların bu dalğası tam zamanında gəldi, uzun müddətdir ki, belə hamar bir meyl görməmişdim.
Bu dəfə B Anın mərhələli tarix ticarət qeydlərindən necə istifadə etmək lazım olduğundan danışacağam.
B安官方 artıq bir çox ticarət məlumatlarını paylaşdı. Məlumatları yükləmək və hansı kateqoriyaların olduğunu ətraflı görmək üçün Github səhifəsi var. Burada əsasən aggTrades-in yüklənməsi, təşkil edilməsi və istifadəsi haqqında məlumat verəcəyəm.
aggTrades, ardıcıl bir neçə ticarət əməliyyatını eyni vaxtda, eyni istiqamətdə, eyni qiymətlə birləşdirərək Binance tərəfindən tərtib olunmuş ticarət qeydləridir, bu da bir k xəttinə bənzəyir, lakin yalnız bir qiymət var, maksimum və minimum qiymət və s. yoxdur. Məsələn, bazarda bir böyük sifariş olduqda, bir çox kiçik sifariş onu yerinə yetirmək üçün gəlir, beləliklə, çox qısa bir müddət ərzində (millisaniyə səviyyəsində) eyni zamanda gələn bu sifarişlər bir araya toplanır. Yaxud da ola bilər ki, bir dəfəlik uyğunlaşdırıcı motorun uyğunlaşdıra biləcəyi sifarişlərdir.
aggTrades məlumatlarının üstünlüyü, millisekund səviyyəsində ticarət qeydlərinə sahib olmaqdır, lakin saf müstəqil trades (yəni ən orijinal məlumat, eyni qiymətə yığılmamış) qeydləri ilə müqayisədə daha böyük məlumat həcmi yoxdur; bu, yaxşı bir yüksək tezlikli məlumat kompromisidir.
Ümumiyyətlə, belə yığma məlumatları yarı yüksək tezlikli strategiyalar istifadə edir. Həqiqi yüksək tezlikli strategiyalar adətən trades və orderbook məlumatlarından istifadə edir, məlumat həcmi çox böyükdür, işləmək də çox çətindir, istifadə edilmirsə, bunun üçün ehtiyac yoxdur. Yalnız resursları istehlak etmir, həm də proqramlaşdırma çətinliyini artırır.
aggTrades-in istifadəsi, 5, 10, 15 saniyəlik qısa k xətləri yaratmaq üçün istifadə oluna bilər, bu cür k xətləri gündəlik ticarət strategiyaları üçün də mümkündür.
Məsələn, aşağıda əvvəllər paylaşdığım 1 saniyəlik k xətti var.

Həmçinin yüksək tezlikli arbitrac, indi adi arbitrac ilə pul qazanmaq artıq çox çətindir, çox rəqabətlidir, biraz daha yüksək tezlikdə isə bəlkə də bir az şans var.
Bu cür müstəqil məlumatlar alternativ k xəttləri yaratmaq üçün də istifadə edilə bilər, məsələn, bərabər miqdarda bar və s. istifadə etdikdə, aggTrades istifadə edərək dəqiq olur. Bu cür yaradılan CTA strategiyaları, adi k xətti strategiyaları ilə müqayisədə bir-birini tamamlayır. Sonrakı bir neçə yazıda bu cür barların necə yaradılacağını yazmağa çalışacağam.
Aşağıda kod təqdimatı var (əksər kodlar əlavədədir, çox olduğu üçün mətndə paylaşmıram). Yükləmə kodu Binance-in nümunəsidir, amma bir az dəyişiklik edilib, həmçinin mənim hazırlama kodum da var.
Burada aylıq məlumatlar nümunə olaraq təqdim olunur (Binance həmçinin gündəlik məlumatları təqdim edir). Kodlar tək iplik, sinkron icra olunur, asinxron, çox iplik və s. ilə məşğul olunmur. Çünki bu cür yükləmələr bir ayda və ya n gün ərzində bir dəfə həyata keçirilir, bir az gözləmək kifayətdir, çox mürəkkəb etmək lazım deyil.
Əsas geridönüş üçün köhnə məlumatlardan istifadə etməkdə ümumiyyətlə heç bir problem yoxdur, çünki yüksək tezlikli məlumatların geridönüşü yalnız müəyyən analiz məqsədinə xidmət edir, əsasən real vaxtı izləmək lazımdır, çünki sürüşmələr ola bilər, ya da limit əməliyyatları yerinə yetirilmir, izləmə əməliyyatları yerinə yetirilmir, ticarət platformasında gecikmə və s.
Amma sonradan mən də ani məlumatları yükləmək üçün kod yazmışam, yəni o günün aggTrades məlumatlarını yükləmək, qaçırılan bazarları ani doğrulamaq. Binance'in gündəlik məlumatları bir neçə gün gecikir. Tələsik istifadə etməli olsanız, özünüz ticarət platformasının API-sindən istifadə etməlisiniz.
1 Yükləmə
Birinci hissənin kodu agg.py və utility.py iki fayldan ibarətdir, sonra istifadə olunur
python3 agg.py -y 2022 -m 6 -t um -folder /sizin_müəyyən_yolunuz
Bu, 2022-ci ilin iyun ayında bütün davamlı müqavilə aggTrades məlumatlarını yükləmək üçün bir komanda nümunəsidir. Adətən on dəqiqə ərzində yükləmə tamamlanır. Məlumat yüklənəndə sıxılmışdır, buna görə də növbəti addım sıxmağı açmaqdır.
2 Çıxarma
Çıxarmaq üçün unzip.py bu faylı istifadə edin, çox qısa bir kod, yalnız iki funksiyadır, biri aylıq məlumatları çıxarır, digəri gündəlik məlumatları çıxarır.
zip faylı çıxarıldıqdan sonra csv faylıdır. csv faylının problemi, diskdə çox yer tutmasıdır, həmçinin yükləmə sürəti də nisbətən yavaşdır. Beləliklə, növbəti addım, csv faylını pickle faylına çevirməkdir. Öz vəziyyətinizə görə sıxışdıra və sıxışdırmaya bilərsiniz. Əgər diskiniz böyükdürsə, sıxışdırmağı tövsiyə etmirəm, adətən davamlı məlumat bir ayda təxminən 50GB civarındadır, buna görə də öz vəziyyətinizə baxın. Ümumiyyətlə, bir az daha sürətli xarici SSD disk almaq olar, indi 1TB yalnız bir neçə yüz manatdır, artıq çox ucuzdur, geridönüş zamanı yükləmə də tezdir.
3 Sıxma pickle-ə çevrilir
Çevirilmiş kod csv_to_pkl.py-dədir. Yuxarıda qeyd olunduğu kimi, çevrildikdən sonra saxlanması daha asandır.
Çevrildikdən sonra csv faylını əl ilə silirəm, əks halda disk yerini tutar. Bu addım üçün kod yoxdur. Əvvəlcə dedim ki, bunlar çox aşağı tezlikli əməliyyatlardır, tam avtomatlaşdırmağa ehtiyac yoxdur. Mən misal kodunda gzip 2-ci səviyyə sıxma istifadə edirəm, adətən bir ayın məlumatları sıxıldıqdan sonra 10GB-dan az olur.
csv yalnız yer tutmur, həm də yavaş yüklənir. pickle formatını istifadə etməyi tövsiyə edirəm. Ümumilikdə, onun performansı yaxşıdır, əsas məsələ uyğunluqdur. Bulud serveri istifadə edirsinizsə, ya da bir çox digər açıq mənbə paketi, feather kimi daha uyğundur.
Yaxşı, bu mərhələyə qədər məlumat hazırdır, strategiyanı araşdırmağa başlaya bilərsiniz.
4 Ani məlumat yükləmə
Əvvəlcə qeyd olundu ki, Binance-in məlumat serverindəki məlumatlar bir iki gün gecikir. Əgər strategiyanızın indiki bazarda necə olacağını təsdiq etməlisinizsə, və müəyyən bir valyutanın real vaxtında olmaması halında, aşağıdakı kodla müəyyən bir vaxta qədər aggTrades-i yükləyə bilərsiniz. Mən adətən cari 12 saatlıq məlumatları yükləmək üçün istifadə edirəm, strategiyanın mümkün performansını görmək üçün.
Aşağıdakı kodun istifadəsi üçün, ən son başlanğıc vaxtını dəyişdirmək lazımdır.

Yüklənmiş məlumatlar belədir. Binance-in sənədinə baxaraq, son dövrlərdə baş vermiş əməliyyatları (toplama) onların konkret mənasını görə bilərsiniz.

Belə bir orijinal məlumatla, df.resample(bar_size).agg() istifadə edərək onları istədiyiniz hər hansı bir səviyyədə k xəttinə yığa bilərsiniz, daha sərbəst şəkildə.
Nəticədə
Əsasən bu, əvvəllər istifadə etdiyim aggTrades məlumatlarının hazırlanmasıdır. İndiki strategiya getdikcə daha sərt olur, daha dəqiq məlumatlardan istifadə edərək daha çox kateqoriyalı strategiyalar inkişaf etdirmək mümkündür. Strategiyalar arasında bir-birini tamamlaması, çox strategiyalı yanaşmanın əsasıdır.
Əgər bu kodlara ehtiyacınız varsa, əlaqə saxlaya bilərsiniz.