Crypto Quant: BTC programmiline kauplemine Binance'i ja Backtraderi abil – 2. osa 3-st PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Crypto Quant: BTC programmiline kauplemine Binance'i ja Backtraderi abil – 2. osa 3-st


Crypto Quant: BTC programmiline kauplemine Binance'i ja Backtraderi abil – 2. osa 3-st PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Selles osas wtahan installida Backtrader ja testida mõningaid kauplemismudeleid eelmises jaotises kogutud Binance'i andmetega.

Backtraderi ja selle seadistamise kohta on palju artikleid ja videoid. See populaarne Pythoni raamatukogu hõlbustab kauplemisstrateegiate tagasitestimist ajalooliste andmetega, vastates põhiküsimusele. "Kui tulus oleks olnud kaubelda antud OST/MÜÜ strateegiaid kasutades". Alguses tundub see matemaatilise alkeemiana, kuid tuleb meeles pidada, et ajaloolised andmed on ajaloolised! Kauplemisstrateegia, mis eile töötas, ei tööta tõenäoliselt täna, kuid tuleme selle juurde varsti tagasi.

Backtraderi ('bt') paigaldusjuhised on siin. Märkus. Maplotlibi versiooniga üle 3.2.0 on teadaolevaid probleeme, seega olge sellega ettevaatlik.

Kiirjuhend on väärt lugemist, leidke see üles siin.

RSI

See, mida me siin Backtraderiga proovime, on tagasitestimine RSI (Suhtelise tugevuse indikaator) kauplemisstrateegia ajalooliste krüptoandmete (BTC jaoks) kohta aasta algusest.

Selgitatakse RSI impulsi indikaatorit siin. See mõõdab antud kauplemisvara suhtelisi ülemüüdud ja üleostetud tingimusi ning perioodi parameetrit, milleks on tagurpidi tehingute arv (kauplemisvahemikud).

Perioodi parameetri vaikimisi väärtus on 14, nii et kui intervall on minutid, sisaldab valem 14 andmete intervalli. Nagu me järgmisena uurime, on igal tehnilisel indikaatoril parameetrid, mis on meie viis turutingimustele "häälestamiseks"; neil parameetritel on suur mõju strateegia mis tahes konkreetse näitaja kasumlikkusele.

Backtest.py

Meie tagasitesti seadistus: backtest.py on jagatud siin. See annab meie tagasitestimise struktuuri, mis määratakse järgmisena. See on üsna tavaline "bt" seadistus. Vaatame osa sellest koodist üle, Pange tähele, et Pythoni backtestis on veebis palju näiteid ja videoõpetusi, millest õppida.

Siin klassi määratluses kehtestame oma RSI strateegia parameetrid.

  • paljusõnaline: kui tahame tagasitesti ajal logiandmeid väljastada
  • kaardiperiood: libiseva keskmise periood, linnukeste arv, mida arvestada
  • kogus: ostetavate/müütavate aktsiate arv
  • ülemine: üleostetud indikaatori ülemine lävi
  • vähendada: ülemüüdud indikaatori alumine lävi
  • stopLoss: müügi peatamise seade

. järgmine () Funktsioon Backtrader strateegiaklassis on see, mis juhtub pärast iga andmete intervalli "tiksutamist". Siin on osta() või müü() vastavalt andmetele, antud juhul RSI indikaator ja meie läved.

Siin määratleme tagasijooksu test () funktsioon, mida meie kood kutsub. Eelnimetatud RSI strateegia funktsioon on lisatud aju Näiteks

Kõik üsna tavalised Backtraderi asjad. Vaatame, kuidas seda meie andmetega võrrelda.

Meie andmete tagasitestimine

Hankige kindlasti andmed (kasutades viimase jaotise samme) ajavahemikuks 1. jaanuar kuni 2. jaanuar 2021, need on failis nimega: BTCUSDT-20210101–20210102–1m.csv 1440 CSV reaga, üks iga minuti kohta päevas.

Siin on selle Bitcoini (BTC) ühepäevase kauplemispäeva kood ja väljund:

Lähemalt vaadates:

Parameetrid on lihtsad, soovime analüüsida ühte kauplemispäeva, kasutades RSI indikaatorit perioodiga 12 linnukest, stop-loss'i puudumist ja vaikelimiite 70,30 üleostetud ja ülemüüdud trigeritele.

1. jaanuar bt tulemused standardse RSI indikaatori strateegiaga

Väljundi viimane rida võtab kokku selle tagasitesti tulemused:

/BTCUSDT-20210101-20210102-1m.csv, RSI (Pd 12) (SL 0.0%) (U70 L30) Neto $ 777.78 (0.78%) WL 18/7 SQN 1.76

RSI periood 12, 0 (ei) stop-loss, (U) ülempiir 70 (L) alumine piir 30, puhaskasum (ühe päevaga) 777.78 dollarit 18 võitnud ja 7 kaotatud tehinguga.

Viimane näitaja on SQN, "Süsteemi kvaliteedinumber" (SQN), mis on mõeldud kauplejate abistamiseks kauplemissüsteemi tugevuste, soovitavuse ja kvaliteedi kindlaksmääramisel. Hea kvaliteediga strateegiat peetakse strateegiaks, mis on nii kaubeldav kui ka tõhus.*

Järgmised SQN väärtused viitavad järgmistele "omadustele":

  • 1.6–1.9 Alla keskmise
  • 2.0–2.4 keskmine
  • 2.5–2.9 Hea
  • 3.0–5.0 Suurepärane
  • 5.1–6.9 Suurepärane
  • 7.0 – Püha Graal

SQN valem:

Ruutjuur (Arvkaubandus) * Keskmine (TradesKasum) / StdDev (TradesKasum)

Tavaliselt nõuame vähemalt 30 tehingut, et see mõõdik oleks statistiliselt oluline, kuid jätame selle praegu tähelepanuta, kuna testime oma tagasitesti lühikese aja jooksul.

Saate suumida süžee osadesse, näiteks:

Siin näeme ostusignaali (roheline ülesnool), kui RSI väärtus langeb alla 30, ja seejärel tulutoovat müügisignaali ja kasumimarkerit (sinine ring), kui RSI jõuab üle 70. Vaadake RSI väärtusi paremas alumises nurgas. .

777.78 dollari suurune kasum (ühe päevaga) 18 võidutehingu ja 7 kaotatud tehinguga on üsna hea, eriti suhteliselt madala tehinguga kauplemispäeva puhul (+1.42%). Kujutage ette, mida me võiksime suure helitugevusega tõusval päeval saavutada!

Mudeli parameetrid

Saate käivitada get_data erinevate päevade kohta ja analüüsida neid eraldi. Pange tähele, kuidas erinevad RSI parameetrid mõjutavad kasumlikkust päevast päeva.

Näide: BTC kauplemise samal päeval, kuid RSI perioodiga 20, mitte 12, võit-kaotus 2/3 ja puhaskasum -21.51 dollarit (sh kauplemistasud). See on suur erinevus eelmisest tagasitestist!

Samuti saate katsetada erinevate RSI limiitide (va vaikimisi 70/30) ja stop-loss parameetritega. Stop-loss on automaatne müügikorraldus, kui hind langeb täidetud ostukorraldusega võrreldes alla teatud taseme. Nagu nimigi viitab, võib see pärast volatiilsusseisundisse sattumist "kahju peatada".

Stop-Loss

Stop-lossi seadistamise viis on järgmine:

  • 0 : Stop-loss seadistus puudub, oodake, kuni indikaator käivitab müügitellimuse
  • 0.00x : stop-loss ostuhinnast madalama väärtuse juures, 0.001 on 0.1% väiksem
  • -0.0x : hinna tõustes järgneb tehingule järgnev stop-loss, 0.01 on lõpp-stop-loss 1% ostuhinnast madalam

See stop-loss on iga tehingu jaoks oluline parameeter ja sellel võib mitte üllatavalt olla tulemuslikkus oluline. Lisateavet stop-loss strateegiate kohta vt siin.

Siin meie backtest.py-s on see koht, kus me selle backtraderi abil seadistame:

Siin on sama jooks, mida just analüüsisime, kuid 0.1% lõpp-stop-lossiga

Puhaskasum 383.67 dollarit 12 võidu ja 12 kaotusega, mis on palju parem kui eelnev kaotus. Graafikul on näha, et mahajäänud stop-loss kaitses paljusid tehinguid kahjumisse libisemise eest, kui indikaator ootas müügi (üleostetud) signaali.

Ühe indikaatori piires on selles seadistuses palju erinevaid võimalikke permutatsioone:

  • perioodivahemik 10 kuni 30 intervalli (20 varianti)
  • stop-loss seade (kujutame ette 5 erinevat praktilist varianti)
  • üleostetud/ülemüüdud künnis (kujutame praegu ette 5 varianti)

See oleks 20x5x5 või 500 erinevat variatsiooni igaks päevaks. Nende ükshaaval käsitsi uurimine oleks naeruväärne, kuid me tahame siiski teada, millised parameetrid olid kõige tulusamad ja kõrgeima kauplemiskvaliteediga ning millised mitte.

Kvant alkeemia!

See viib meid selle krüptokvanti uurimise järgmise sammuni. Saame julma jõuga kindlaks määrata antud kauplemisperioodi kõige kasumlikumad ja kvaliteetseimad kauplemisstrateegia parameetrid ning seejärel vaadata, kuidas need edasi kanduvad.

Source: https://medium.com/@gk_/crypto-quant-programmatic-trading-of-btc-using-binance-and-backtrader-part-2-of-3-d8af44c93e2b?source=rss——-8—————–cryptocurrency

Ajatempel:

Veel alates Keskmine