Burada əsasən, orta və aşağı tezlikli ticarət strategiyasının proqramlaşdırılmış real bazar kodunun həyata keçirilməsindən danışılır.
Strategiya
Bir kvant ticarət strategiyasının yaranması, adətən bazarın müşahidəsi və anlayışı vasitəsilə strategiya ideyası meydana gəlir, sonra strategiyanın konkret detalları hazırlanır, daha sonra müxtəlif növ məlumatlar üzrə geriyə test edilir, beləliklə, konkret parametr dəyərlərinin təsirini əldə etmək və təsdiq etmək mümkündür. Əgər təsir mümkündürsə, universal olsa, növbəti addım kiçik vəsaitlə real bazar testidir. Nümunə xaricində real bazar tətbiqi mümkün olsa, nəticədə vəsaiti artırmaq və uzun müddət işlətmək olar.
Döngəciləri azaltmaq üçün bir az izah edim, əlbəttə ki, strategiya yaratmaq üçün başqa metodlar da var, məsələn, məlumatların qazılması, qaz, qaz, faktorları qaz. Həmçinin, maşın öyrənməsi, gücləndirici öyrənmə kimi avtomatik faktorlar yaradan metodlar var. Lakin bu cür qara qutu metodları, strategiyanın geri çəkilmə dövründə davamlı işləmək çətindir, çünki bu faktorlardan çıxarılanların nə vaxt uğursuz olacağını və niyə uğursuz olacağını bilmirik. Və kvant ticarətində ən vacib məqam real bazarda davamlı olmaqdır, bazar pisdirsə, depoziti azalda bilərsiniz, lakin dayanmamalısınız. Heç kim böyük bazar hadisələrinin nə vaxt baş verəcəyini bilmir. İtirdinizsə, əvvəlki geri çəkilmələriniz boşuna olur.
Bir analoji, strategiyanın dizaynı, test edilməsi, demək olar ki, (Sun Tzu müharibə sənəti) 'məbəd hesablaması' kimi, 'döyüşə başlamadan əvvəl məbəd hesablamasında qalib gələnlərin çox sayda hesablaması var; döyüşə başlamadan əvvəl məbəd hesablamasında qalib gələ bilməyənlərin isə az sayda hesablaması var. Çox sayda hesablamalar qalib gəlir, az sayda hesablamalar qalib gələ bilmir, bəs hesablama olmaması barədə nə deyək!
Beləliklə, ticarət strategiyası başlanğıc dizaynında yaxşı planlaşdırılmalı, dəqiq hesablanmalıdır, əks halda real ticarətə başlamadan belə artıq uduzmuş olursunuz. Bu addım ən çətindir, sonrakı real ticarət kodu da asan deyil, amma əksəriyyəti sadəcə çətindir, daha çox vaxt və enerji sərf etməklə, mütləq yaxşılaşa bilərsiniz. Real ticarətin açarı hələ də risk idarəetməsindədir.
Ticarət strategiyası, ya da ticarət qaydası, bizə 'doğru işləri görmək' üçün imkan yaradır, konkret reallaşma isə 'doğru şəkildə iş görməkdir'. Çox zaman, doğru istiqaməti bilmək, məsafəni tamamlamaqdan daha çətindir. Məsələn, avadanlığın təmiri ilə bağlı bir anekdot, bir xətt çəkmək 1000 yuan ödənilir. Xətt çəkmək özü yalnız 1 yuan dəyərindədir, amma harada çəkmək lazım olduğunu bilmək 999 yuan dəyərindədir.
Strategiya + real ticarət birgə ticarət sistemini təşkil edir. Ticarət sisteminin dizaynı ilə bağlı, əvvəlki bu məqaləyə baxa bilərsiniz: Tam ticarət sisteminin yeddi elementi. Buradakı real ticarət əslində ticarət sisteminin arxasındakı 4 addımın 'qazanc və ziyan' konkret əməliyyatıdır. Önündəki 3 addım, strategiya dizaynı tamamlandıqda, artıq əsasən müəyyən edilmişdir.
Amma, əgər strategiya yaxşıdırsa, əgər real ticarət yerinə yetirilmir, onda nəticələr də əhəmiyyətli dərəcədə azalacaq, hətta əla potensial strategiyaları dayandırmağa səbəb ola bilər. Yaxşı bir strategiya inkişaf etdirmək asan bir iş deyil, icra mərhələsində çətinliklərdən düşməyin. Yaxşı fikirlər, sonunda etibarlı bir şəkildə həyata keçirilməlidir.
Problem
1. Anidən bazar
Bu, yalnız bar içi siqnalları olan strategiyalarla qarşılaşan bir şeydir. Bar içi, müəyyən bir k xəttinin bağlanma qiyməti və ya açılma qiymətini istifadə etməmək deməkdir, əksinə, bazar qiymətini siqnal yaratmaq üçün istifadə edir.
Burada bir neçə gün əvvəl real ticarətdə qarşılaşdığım bir problemi misal gətirərək. Bir ticarət bazarının mikroskopik bir nümunəsi. Kripto bazarında olduqca yaygındır.
Aşağıdakı şəkil, bir neçə gün əvvəl (2023.7.10 17:21) BNB sonsuz müqaviləsinin 10 saniyəlik k xətti (yəni bir bar 10 saniyə ərzindəki ticarət məlumatlarının OHLCV-ə toplanması deməkdir).

O böyük günəş xəttinin amplitudası 3.53% olduğunu, təxminən 30 milyon dollar həcmində ticarət edildiyini görə bilərsiniz. 10 saniyə ərzində tamamlanıb. Bu bazar fəaliyyətinin başlanmasından əvvəl, trend demək olar ki, heç bir dalğalanma göstərmədi.
Gəlin, aşağıdakı şəkillərə baxaq, o vaxt 1 saniyəlik k xəttini görə bilərsiniz, daha çox detal əldə edə bilərsiniz.

Təxminən 4 saniyə ərzində tam yüksəlir. 1-ci saniyədə təxminən 2-dən çox bal yüksəlir. Bunlar, əsasən, o yüksək tezlikli strategiyalar (hadisə yönümlü, yüksək tezlikli trend, bazar yaratma və s.) hələ də öncədən yerləşdirilmiş alqoritm nəticələridir.
Gəlin BNB-nin 4 saatlıq k xəttinə baxaq. Ən böyük günəş xətti, o vaxt xəbərin yayıldığı zaman aralığıdır. Amplituda 4.05%.

Bu dövrlərin k xəttini müqayisə edərək görmək olar ki, bu cür məlumat yönümlü dalğalanma (bu dəfəki xəbər Binance-in yeni IEO, ARKM-dir) adətən anlıq tamamlanır. 4 saatlıq artım, hətta 10 saniyəlikdən çox fərqlənmir, əsl başlanğıc isə yalnız 4 saniyədir. Bu cür döyüş, silahlanmış yüksək tezlikli strategiyalar üçündür. Ancaq bu, orta aşağı tezlikli strategiyalara da təsir edə bilər, daha çox sürüşmə yarada bilər.
Burada yüksək tezlikli strategiyaları araşdırmırıq, orta aşağı tezlikli strategiyalar nə deməkdir? Düşündüyüm əsas iki məsələ var:
1. Bəzi trend partlayışları çox qəfil olur və çox qısa bir müddətdə tamamlanır, bu səbəbdən strategiyanı istədiyiniz zaman dayandırmamalısınız. Kripto bazarında real ticarət 24 saat online olmalıdır, xüsusilə mövqe varsa, əlaqə kəsilməməlidir.
2. Real ticarətdə sürüşmə 2% səviyyəsinə çata bilər. Yuxarıdakı 1 saniyəlik k xətti, əgər sizin alış siqnalınız müəyyən bir qiymətə əsasən olsa, o qiymət də böyük k xəttinin aşağı hissəsində meydana çıxarsa, nə olursa olsun, giriş etdikdən sonra qiymətinizin sürüşməsi 2~3% ola bilər. Ən pis halda 4% ola bilər, o, iynə ucu ilə ticarət edən alış əməliyyatlarıdır. Ancaq əgər siz satış əməliyyatındasınızsa, o zaman gözləniləndən daha çox qazanc əldə edə bilərsiniz. Lakin, Murphy qanununa görə, düşən çörək həmişə yağılı tərəfi ilə yerdədir. Uzun müddətli perspektivdə, böyük ehtimalla, sürüşmə daha çox olacaq.
Amma yaxşı tərəfi budur ki, bu cür hallar nadir baş verir. Strategiyalarda problem olmadıqda, sürüşmə bir az daha çox olsa, sadəcə qazancın bir hissəsinin itirilməsi deməkdir, uzun müddətli müsbət gəliri təsir etmir. Sadəcə bir dəfə daha dalğalanma itirməyə dözmək kimi qəbul edin.
Yüngülləşdirmək üçün bir yol, websocket istifadə edərək ən son qiymətləri əldə etməkdir, sənədlərdə 250 millisekundda bir dəfə yeniləndiyi qeyd olunur, amma bəzən daha sürətli yenilənə bilər, beləliklə, birinci vaxtda reaksiya verə bilərsiniz. Websocket-in digər bir üstünlüyü, ticarət birliyinin Restful API tezlik məhdudiyyətini istifadə etməməsidir. Bu, daha sonra ətraflı qeyd olunacaq.
2. Saat başı bazar
Bu, bir çox trend strategiyalarının qarşılaşdığı bir haldır, çünki əksər hallarda giriş və çıxış siqnallarını açar qiymətləri ilə hesablayırlar. Beləliklə, saat başı keçdikdə, hər biri fəaliyyətə başlayır.
Saat başı, xüsusilə 8-ə bölünən dövrlərdə, çünki sizin strategiyanızın hansı dövrü olursa olsun, bu üç vaxtın hamısı eyni vaxtda ticarət edəcək, avtomatlaşdırılmış strategiyalar hər biri öz siqnallarını yaradır, eyni zamanda öz müxalifəti olur.
Bundan əlavə, bu vaxt, ticarət birliyinin də hesablaşma və təhvil verməsi lazımdır. Hərçənd ki, sonsuz müqavilələr təhvil verilmir, lakin təhvil verilən maliyyə haqqını hesablamaq lazımdır, bəlkə də digər əməliyyatlar da var. 0/8/16 bu üç saatdan sonra 6 saniyə ərzində, Binance-in websocketi k xətti məlumatlarını göndermir, bu dayandı! Bəs siz nə edəcəksiniz? Real vəziyyət, çox zaman heç bir şey edə bilməməkdir.
Daha ciddi bir problem odur ki, bazar rezonans yarada bilər, xüsusilə düşmənin bazarı, qorxu daha çox yayılır. Ticarət birliyinin serverləri daha çox yüklənir, bir çox kiçik valyutalar birbaşa çökməyə məruz qalır, sifarişlər daxil edilmir, hamısı 1001 xətasıdır. Sizin sürətli sifarişiniz uğurla həyata keçdiyində, o iynə ucu ilə ticarət edilən sifarişlər bəlkə də sizin sifarişlərinizdir.
Beləliklə, sürüşmə həqiqətən qaçılmazdır, bu taleyin bir hissəsidir, bunu qəbul edin, kodu çox optimallaşdırmağın da əhəmiyyəti yoxdur. Yuxarıda qeyd olunduğu kimi, bu, bir dəfə çox dayandırma kimi qəbul edin.
Amma, bəzi kiçik fəndlər də var.
Saat başı keçməzdən əvvəl n saniyə ərzində siqnalların hesablanması mümkündür, o vaxt hələ sıxlaşma başlamayıb, çünki əksər avtomatlaşdırılmış strategiyalar yalnız saat başı k xətti bağlanma qiyməti çıxdıqdan sonra siqnalları hesablamağa başlayır. Ancaq bu cür əməliyyatın gətirdiyi problem odur ki, səhv siqnallar meydana gələ bilər, məsələn, qiymət dərhal geri dönə bilər, əslində siqnal olmamalıdır, yanlış pozitiv yaranır. Bu vaxt sizin seçiminizdir, bunu etməliyik, yoxsa yox. Ancaq müəyyən bir hədd əlavə edə bilərsiniz, yalnız o həddi keçdikdə tetiklenir, beləliklə qısa müddətli qiymət geri dönüşünün səbəb olduğu yanlış siqnalları önləmək olar. Sürüşməni bir az azaltmaq, bir şeydir.
Bundan əlavə, zaman offset və ya shift k xətti kimi siqnal metodlarının istifadəsi, saat başında siqnal yaratmır, başqaları ilə bir araya gəlməyərək daha yaxşı sıxlıqdan qaçır. Həmçinin TWAP və s. kimi üsullar da var.
Amma bunların hamısı müəyyən bacarıqlar tələb edir, bu da real ticarət kodunun çətinliyini artırır.
Real ticarət
Başlanğıc orta aşağı tezlikli CTA strategiyası, adətən real ticarət kodu çox sadədir. Bir növ yalnız bir strategiyaya malikdir və əlavə və ya azalmalar yoxdur, üst-üstə düşən məlumatlar yoxdur. Beləliklə, yerli kod heç bir vəziyyəti saxlamağa ehtiyac yoxdur, çünki ticarət birliyi hər şeyi qeyd edir. Mövqe varmı, nə qədər margin var, əməliyyat həyata keçirilibmi və s. Çünki orta aşağı tezlikdədir, lazım olduqda hər zaman ticarət birliyinin hesab məlumatlarını sorğulaya bilərsiniz və bu, ən dərhal və dəqiqdir. Yerli verilənlər bazası kimi ticarət vəziyyətini qeyd etməklə bağlı çətinliklərdən xilas edir.
Bu cür sadə strategiyalar əslində işləkdir, amma problem budur ki, mümkün olan geri çəkilmə daha böyük ola bilər, kifayət qədər yayılmamışdır, risk yüksəkdir. Tək bir növ bazar heç bir fəaliyyət göstərməyə bilər, dalğalanma ilə geri çəkilmə görünməz, ya da ekstremal bazar şəraiti ilə qarşılaşdıqda, maliyyə xətti yenidən böyük bir çuxurla qarşılaşacaq. Ciddi şəkildə, dözə bilməsəniz, strategiyanı dayandırmaqdan qorxacaqsınız; yüngül olarsanız, ticarət təcrübəsi çox pis olacaq. Diqqət edin ki, bunların hamısı məqbul mövqe şərtləri altında baş verir. Əks halda, mövqe çox yüngül olsa, geri çəkilmə az olur, amma gəlir də aşağıdır, qazanc və ziyan eynidir, fürsət qaçırılmışdır; çox ağırdırsa, bu səhvdir, gec-tez sona çatacaq.
Amma, yeni başlayanlara əvvəlcə belə bir strategiyanı real ticarətə başlamağı tövsiyə edirəm. Təcrübə, öz ticarət səviyyənizi sürətlə artırmağın yeganə yoludur. Ancaq mütləq yüngül mövqelərlə başlayın, sonra da leverajı aşağı tutun, mümkün olan halda leverajdan istifadə etməyin, beləliklə daha uzun müddət davam edə bilərsiniz.
Daha peşəkar etmək istəyirsinizsə, tək nöqtə riskini azaltmaq, maliyyə xəttini daha hamar etmək, real ticarət zamanı daha az narahat olmaq (yuxarıda qeyd olunduğu kimi, məqbul vəziyyət altında, bu əslində çox vacibdir, çünki strategiyaların fəaliyyətini davam etdirmək daha asandır, külək gələnə qədər) adətən çox növlü, çox strategiyalı, çox parametrlərli modeldir, sonra da əlavə və azalmalar. Bu, hər zaman bir strategiya çərçivəsində deyil, bir neçə alt strategiyanın əlavə və azalmasına imkan verə bilər. Ancaq belə olduqda, strategiya daha sıx olacaq, əgər açılış və bağlanma sürüşməsini mümkün qədər azaltmaq istəyirsinizsə, kodun mürəkkəbliyi sürətlə artacaq.
İndi bu cür çox növ, çox strategiya, çox parametr modelinin gətirdiyi çətinliklərdən danışaq.
Çətinlik
1. API tezlik məhdudiyyəti
Çox strategiyanın ilk çətinliyi API tezlik məhdudiyyətidir. Növlər çoxaldıqca, strategiyalar çoxaldıqca, anında qiymət, mövqe, əməliyyat və s. məlumatları əldə etmək üçün ticarət birliyinə davamlı müraciət etməlisiniz. Yuxarıda qeyd olunduğu kimi, tezlik aşağıdırsa, yavaşdırsa, qiyməti əldə etmək mümkün olmaya bilər, sürüşmə xeyli artar.
Ticarət birliyinin server resursları məhduddur, buna görə də API-nin giriş tezliyi məhdudiyyətləri yaranır. Binance-in məhdudiyyəti dəqiqədə 2400-dür, sonra da 10 saniyəlik məhdudiyyət var, sonra da digər bir çox 'maşın öyrənmə' davranışlarını aşkar etmək üçün modellər var, qısacası, çox tez-tez olmamalıdır, nə qədər tez-tez olmamalıdır, bunu ticarət birliyi müəyyən edir, bunu anlayırsınız, müəyyən bir forma yoxdur.
Hər nə qədər 2400 olsa da, mən paralel olaraq sınaqdan keçirdim, əgər k xətti sorğulayırsınızsa, bir dəfə ən qısa 99 ədəd (API ağırlığı 1) olsa, bir anda təxminən 75 valyuta sorğuladığınızda, bir neçə dəqiqəlik qadağan ediləcəksiniz. Beləliklə, həddini asanlıqla aşmamağa çalışın.
İhlal edildiyində, 429, 418 xətası alırsınız, IP bir neçə dəqiqədən bir neçə günə qədər qadağan edilir, bu zaman, əgər sizin mövqeniz varsa, bədbəxt olur (sifariş vermək, xüsusilə mövcud mövqeyi təmizləmək məhdudiyyətə tabe deyil, amma qiymət məlumatları yoxdur, əgər websocket hələ də yoxdursa)
Bu problemin həlli, websocket istifadə edərək məlumat əldə etməkdir, beləliklə ticarət birliyi aktiv şəkildə göndərir, vaxtında olur və API sərf etmir. Bəzi sürüşmə azaldıla bilər. Gətirdiyi problem odur ki, websocket-ə əsaslanan bir bazar mərkəzini saxlamağınız lazımdır. Real ticarət kodunun çətinliyi artır, mürəkkəbləşir. 24 saat online olmalısınız, əlaqə kəsildikdə, dərhal avtomatik yenidən qoşulmalısınız.
2. Strategiya vəziyyəti
Önündə dediyim kimi, strategiyalar çoxaldıqca, mürəkkəbləşdikcə, hər bir strategiyanın vəziyyətini qeyd etməli olursunuz, əks halda ticarət birliyinin mövqeyi hansı strategiya tərəfindən açıldığını, hər birinin nə qədər olduğunu bilmir. Həmçinin, arxa planda yenidən analiz etmək üçün daha çox məlumat qeyd etmək lazımdır.
Bu vaxt verilənlər bazasını daxil etmək lazımdır (əlbəttə ki, fayllarla qeyd etmək də mümkündür, eyni şeydir).
Verilənlər bazası daxil edildikdə, verilənlər bazasının bəzi problemləri ortaya çıxır. Ancaq bu, digər sənaye proqram inkişafı ilə oxşardır, yeni bir şey yoxdur. Xüsusilə elektron ticarət sahəsində, çünki burada maliyyə balansları, sifariş idarəetməsi kimi oxşar məsələlər var, təcrübəsi olmayanlar bu cür kitablar və məqalələrə baxa bilərlər.
Diqqət yetirin ki, bir çox addımın bənzər verilənlər bazası tranzaksiyalarının atomik əməliyyatlarına çatması lazımdır, yəni bir qrup əməliyyat ya hamısı uğurla tamamlanmalıdır, ya da bir addım uğursuz olduqda, heç nə etməməlidir, ilkin vəziyyətə geri dönməlidir.
Sonra, çünki nəhayət real pul ticarətidir, sifariş məlumatlarının verilənlər bazası əməliyyatları üçün, ən yaxşı 4 izolyasiya səviyyəsinin ən yüksək səviyyəsi olan serializable istifadə etmək daha yaxşıdır, bütün çirkin oxuma, təkrar oxuma, xəyal oxuma ehtimallarını aradan qaldırır. Bu, heç bir paralellik, çox iplik, hətta asinxronluqla verilənlər bazasının əsas məlumatlarını oxumaq və yazmaq üçün istifadə etməməkdir, bütün əməliyyatlar bir iplikdə tamamlanmalıdır. Əməliyyatın ölümlülüyünü yerinə yetirmək.
Paralel proqramlaşdırmaya asanlıqla meydan oxumaqdan çəkinin. Bu cür sistemlərdə bir problem çıxarsa, demək olar ki, heç bir şey edə bilməzsiniz, bu, proqram inkişafında ən çətin aşkar edilən bug-lardır. Bu cür işləri təmiz və dəqiq yerinə yetirənlər, 50,000+ aylıq maaş səviyyəsində proqramçılar olurlar.
Mənim düşündüyüm az sayda çox iplik və ya asinxron (çox iplik və asinxron, çox iplik istifadə etməyi tövsiyə edirəm, çünki Python-da asinxron xəstəlik kimi, bir dəfə istifadə etdikdə, bir çağırış zəncirində hamısını istifadə etməlisiniz) həqiqətən faydalı ola biləcək yerlərdən biri, DingTalk xəbərdarlıq siqnalları göndərməkdir. Çünki DingTalk xidməti Çindədir, kripto ticarət birliyi serverləri isə xaricdədir, sizin kod serveriniz də xaricdə, ticarət birliyinə daha yaxın yerləşdirilməlidir, buna görə DingTalk göndərərkən bəzən bir neçə saniyə gözləməli olacaqsınız, bəzən hətta onlarla saniyə bloklana bilər.
Sonunda
Həqiqətən, bir çox şeyi etmək mümkün olmur, bu da narahat deyil. Sadəcə daha böyük sürüşmə qəbul etməyə hazır olmalısınız, yəni təxminən 1/5 və ya daha çox qazancınızı itirmək ehtimalı var. Əsas olan strategiyadır, müsbət gəlir, dayanmadan işləyə bilməkdir.
Nəticə etibarilə, real ticarətin birinci vəzifəsi, strategiyanın müəyyən edilmiş məntiqini davamlı və sabit şəkildə yerinə yetirməkdir. Sürüşmə ticarətin bir hissəsidir, mümkün olanı azaltmağa çalışın, yalnız əzələləri zədələmədən.
Birinci dərəcəli strategiya, 2, 3-cü dərəcəli real ticarət həyata keçirmək, problem deyil. Ancaq strategiya əla deyilsə, ən yüksək dərəcəli real ticarət kodu da kömək etməz, itki mütləq olacaq. Beləliklə, yalnız kodun yaxşı yazılması, kəmiyyət ticarətini həyata keçirmək üçün kifayət deyil. Strategiya yaxşıdır, real ticarət kodu da möhkəm olmalıdır, əlbəttə ki, ən yaxşısıdır. Ancaq zaman məhdud olduğunda, əsas diqqəti strategiyaya yönəltmək lazımdır.
Davamedir