Binance emulátor, szimulátor, guberátor
Az előző részben az alap stratégiáról esett szó mely biztos alapot nyújt egy sikeres kereskedéshez. Most inkább egy kicsit technikaibb jellegű bejegyzés következik.
A bot tesztelés egyik alapja a megbízható háttérrendszer. Mivel a Binance nem rendelkezik api szinten éles adatokra épülő demo funkcióval ezért egy ilyet (is) le kellett fejleszteni. Az ezzel kapcsolatos kritériumok a következők voltak:
- Éles adatokkal működjön (ez Binance API-ból jön)
- Ha elküldöm a rendszernek, hogy venni akarok, akkor azt regisztrálja, tárolja és tartsa nyilván az aktuális pozícióm.
- Lehessen benne módosítani a tőkeáttétet
- Lehessen bővíteni/szűkíteni a pozíciót, vagyis lehessen újabb és újabb likviditás bevonással építeni a pozíciót vagy zárni egy részét.
- Egy megadott célárat elérve a pozíció záródjon le és erről legyen egy eredmény
- Tudjon likvidálni ha elfogy a tőke
- Könnyen lehessen indítani, legyen valami áttekinthető kimenete
- Kezelje a tranzakciós díjakat
- Ha szükséges mentse adatbázisba az eredményeket.
Nagyjából ezeket sikerült is megvalósítani. Egyedül a likvidálás az, ami nem tökéletes, mert semmi kedvem nem volt a Binance algoritmusát lemásolni, ugyanis elég bonyolult. Ehelyett egy saját képlettel oldottam meg ami egy kicsit hamarabb likvidál, mint a Binance tenné. A szimulátor lényege, hogy bármilyen stratégia ráprogramozható, csak azt várja paraméterben, hogy adott pillanatban akarok-e vásárolni, ha igen milyen összegért, milyen tőkeáttéttel és milyen árfolyamon szeretném ha záródna a pozíció. A szimulátor semmilyen stratégiával nem törődik, a beadott igényeket rögzíti és számolgatja a pozíció értékét és ha kell zárja azt vagy likvidál (kb ahogy a Binance is csinálja). A stratégia programozása a szimulátoron kívül történik. Mondjuk egy egyszerű esetet vegyünk: amikor a BTC árfolyama elér 30.000 USD-t vásárolni szeretnék 1x tőkeáttéttel 10 USD értékben BTC-t és azt szeretném ha 30.300 USD-s árfolyamnál (ez 1% emelkedés) lezáródna a pozíció. A szimulátor addig fut, amíg ez nem teljesül vagyis amíg a Binance-tól nem kap egy 30.300 USD-s árat. Futás közben bármikor módosítható a stratégia vagyis vehetek még 10 USD-ért BTC-t vagy dönthetek úgy, hogy elég lesz 30.001 USD-s árfolyam is mert inkább megelégszek kisebb haszonnal.
Mivel csak egy rövid ideig izgalmas real-time nézegetni a tesztelés eredményét ezért egyrészt készítettem egy rendszert, ami folyamatosan menti a Binance futures párok árfolyamát (2 másodpercenként, teszteléshez első körben ez is bőven elég) másrészt a bot futtatása lehetséges nem aktuális, hanem múltbéli adatokra is egy egyszerű dátum, időpont megadással. Így a leprogramozott stratégia a szimulátorral együttműködve ad egy eredményt.
Az előző részben vázolt stratégia, miszerint a bot percenkén vásárol fix 10 USD értékben 20x tőkeáttéttel adott kriptovalutából és 10% hasznot vár, ilyen eredményeket hozott:
Jól látható, hogy volt ami szinte azonnal teljesült és volt ami elhúzódott. A Binance alapból a pozíciót egyben kezeli de itt bontva láthatóak, hogy látszódjon mi történt 1-1 vásárlással. Természetesen voltak likvidálások is. Egy kicsit hosszabb stratégia futtatásról itt egy videó is (felgyorsítva), hogy lehessen látni hogy is működik valójában:
Több 1000 többnyire véletlenszerűen indított teszt után a konklúzió az, hogy a stratégia meglepően jól teljesített ahhoz képest mennyire egyszerű. Két nagyon fontos tanulság szűrhető le:
- A stratégia nem rossz, nyugodt vagy egyértelműen bika piacon nagyon jól teljesít, azonban amint van egy korrekció, nagyon nehezen dolgozza le az esést. Épp ezért a startégia tekintetében mindenképp azt kell megvalósítani, hogy a bot felismerje ha épp esik a piac és takarékoskodva a tőkével az esés alját eltalálva kell pozíciót építeni.
- A másik sarkalatos pont a bot indításának ideje. A megfelelő pillanatban indított bot nyeresége szinte azonnal teljesül és nincs szükség semmilyen stratégia alkalmazására. A következő részben ezt fogjuk kicsit részletesebben kivesézni.