Crypto Quant: BTC:n ohjelmallinen kauppa Binancen ja Backtraderin avulla — Osa 2/3 PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Crypto Quant: BTC: n ohjelmallinen kaupankäynti Binancen ja Backtraderin avulla - osa 2/3


Crypto Quant: BTC:n ohjelmallinen kauppa Binancen ja Backtraderin avulla — Osa 2/3 PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Tässä osassa we haluat asentaa Takaisinkauppa ja testaa joitain kaupankäyntimalleja edelliseen osaan keräämiemme Binancen tietojen perusteella.

Backtraderista ja sen asetuksista on lukuisia artikkeleita ja videoita. Tämä suosittu Python -kirjasto helpottaa Quant -työtä kaupankäyntistrategioiden jälkitestauksessa historiallisilla tiedoilla ja vastaa olennaiseen kysymykseen "Kuinka kannattavaa olisi ollut käydä kauppaa käyttämällä BUY/SELL -strategioita". Tämä tuntuu aluksi matemaattiselta alkemialta, mutta on muistettava, että historialliset tiedot ovat hyvin historiallisia! Kaupankäyntistrategia, joka toimi eilen, ei todennäköisesti toimi tänään ... mutta palaamme siihen pian.

Backtrader ('bt') asennusohjeet ovat tätä. Huomautus: Mapplotlib -versioiden 3.2.0 yläpuolella on tunnettuja ongelmia, joten varo sitä.

Pikaopas on lukemisen arvoinen, löydä se tätä.

RSI

Mitä yritämme Backtraderin kanssa täällä, on testata jälkikäteen RSI (Suhteellisen voimakkuuden ilmaisin) kaupankäyntistrategia historiallisista salausdatoista (BTC) aikaisemmasta vuodesta.

RSI -vauhdin ilmaisin selitetään tätä. Se mittaa suhteellisia ylimyytyjä ja yliostettuja ehtoja tietylle kaupankäyntivarallisuudelle ja parametrin "jakso", joka on punkkien (kaupankäyntivälien) määrä taaksepäin.

Jaksoparametrin oletusarvo on 14, joten jos väli on minuutteja, kaava sisältää 14 aikaväliä dataa. Kuten tarkastelemme seuraavaksi, jokaisella teknisellä indikaattorilla on parametreja, joiden avulla voimme "virittää" markkinaolosuhteisiin. näillä parametreilla on valtava vaikutus minkä tahansa strategian indikaattorin kannattavuuteen.

Backtest.py

Takakokoonpanomme: backtest.py on jaettu tätä. Tämä tarjoaa backtest -rakenteen backtest -ajollemme, joka määritellään seuraavaksi. Tämä on melko vakio "bt" -asetus. Katsotaanpa muutama koodi, Huomaa, että Python -backtestissä on paljon esimerkkejä ja video -opetusohjelmia, joista voi oppia.

Täällä luokan määritelmässä määritämme parametrit RSI -strategiallemme.

  • jaaritteleva: jos haluamme lähettää lokitietoja jälkitestin aikana
  • kausi: liukuva keskiarvo, harkittavien punkkien määrä
  • määrä: ostettavien/myytävien osakkeiden lukumäärä
  • ylempi: yliostetun indikaattorin yläraja
  • alentaa: ylimyynnin indikaattorin alaraja
  • stopLoss: stop loss -asetus myyntiin

- Seuraava() funktio Backtrader -strategialuokassa on se, mitä tapahtuu jokaisen datavälin "rasti" jälkeen. Tässä on osta () tai myy () tietojen mukaan, tässä tapauksessa RSI -indikaattori ja kynnysarvot.

Tässä määritellään runbacktest () toiminto, jota kutsutaan koodillamme. Edellä mainittu RSI -strategiatoiminto lisätään aivo ilmentymä.

Kaikki melko tavallisia Backtrader -juttuja. Katsotaanpa, miten tämä voidaan käyttää tietojamme vastaan.

Tietojemme uusintatesti

Muista hankkia 1. tammikuuta - 2. tammikuuta 2021 tietoja (viimeisen osion vaiheiden avulla), jotka ovat tiedostossa nimeltä: BTCUSDT-20210101–20210102–1m.csv 1440 CSV -linjaa, yksi jokaista päivän minuuttia kohden.

Tässä on tämän yhden päivän Bitcoin-kaupankäyntipäivän (BTC) koodi ja tuotos:

Tarkemmin katsottuna:

Parametrit ovat yksinkertaisia, haluamme analysoida yhden kaupankäyntipäivän käyttämällä RSI-indikaattoria, jonka ajanjakso on 12, ei stop-lossia ja oletusrajoja 70,30 yliostetuille ja ylimyydyille laukaisimille.

1. tammikuuta bt -tulokset standardilla RSI -indikaattoristrategialla

Tuloksen viimeinen rivi tiivistää tämän jälkitestin tulokset:

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

RSI-jakso 12, 0 (ei) stop-loss, (U) per raja 70 (L) tai yläraja 30, nettotulos (yhdessä päivässä) 777.78 dollaria, 18 voittoa ja 7 häviävää kauppaa.

Viimeinen luku on SQN, 'System Quality Number' (SQN), joka on suunniteltu auttamaan elinkeinonharjoittajia määrittämään kauppajärjestelmän vahvuudet, toivottavuus ja laatu. Hyvää laatustrategiaa pidetään kaupankäynnin kohteena ja tehokkaana.*

Seuraavat SQN -arvot viittaavat seuraaviin "ominaisuuksiin":

  • 1.6–1.9 alle keskiarvon
  • 2.0–2.4 Keskiarvo
  • 2.5–2.9 Hyvä
  • 3.0–5.0 Erinomainen
  • 5.1–6.9 Erinomaista
  • 7.0 - Pyhä Graali

SQN -kaava:

SquareRoot (NumberTrades) * Keskimääräinen (TradesProfit) / StdDev (TradesProfit)

Normaalisti vaadimme vähintään 30 kauppaa, jotta tämä mittari olisi tilastollisesti merkitsevä, mutta jätämme tämän huomiotta toistaiseksi, kun testaamme taustatestimme lyhyen ajan kuluessa.

Voit zoomata juonen osiin, esimerkiksi:

Tässä näemme ostosignaalin (vihreä ylöspäin osoittava nuoli), kun RSI-arvo laskee alle 30: n ja sitten kannattavan myyntisignaalin ja voitonmerkin (sininen ympyrä), kun RSI saavuttaa yli 70. Katso RSI-arvot oikeassa alakulmassa .

Voitto (yhdessä päivässä) 777.78 dollaria 18 voittavalla kaupalla ja 7 häviävällä kaupalla on varsin hyvä varsinkin suhteellisen matalan kaupankäyntipäivän aikana (+1.42%). Kuvittele, mitä voisimme saavuttaa nousupäivänä suurella äänenvoimakkuudella!

Malliparametrit

Saat ajaksi get_data eri päiville ja analysoit ne erikseen. Huomaa, kuinka erilaiset RSI -parametrit vaikuttavat kannattavuuteen päivästä toiseen.

Esimerkkinä sama BTC-kaupankäynnin päivä, mutta RSI-aika on 20 eikä 12, voitto-tappio 2/3 ja nettotulos -21.51 dollaria (mukaan lukien kaupankäyntimaksut). Siinä on suuri ero edelliseen jälkitestiin!

Voit myös kokeilla erilaisia ​​RSI-rajoja (muita kuin oletusarvoisia 70/30) ja pysäytysparametreja. Stop-loss on automaattinen myyntitilaus, kun hinta laskee jonkin tason alapuolelle suhteessa toteutettuun ostotilaukseen. Kuten nimestä voi päätellä, tämä voi auttaa ”pysäyttämään tappion” volatiliteettitilanteeseen joutumisen jälkeen.

Stop-Loss

Pysäytyshävikki on määritetty seuraavasti:

  • 0 : ei stop-loss-asetusta, odota, että ilmaisin käynnistää myyntitilauksen
  • 0.00x : stop-loss prosenttiosuudella alle ostohinnan, 0.001 on 0.1 % alle
  • -0.0x: Loppupysäytyshäviö seuraa kauppaa hinnan noustessa, 0.01 on loppupysäytys, joka on 1% ostohintaa alhaisempi

Tämä stop-loss on tärkeä parametri jokaisessa kaupassa, ja sillä voi olla merkittävä vaikutus suorituskykyyn, ei yllättävää. Lisätietoja stop-loss -strategioista on osoitteessa tätä.

Tässä backtest.py -tiedostossamme määritimme tämän backtraderin avulla:

Tässä on sama juoksu kuin juuri analysoitiin, mutta 0.1%: n loppu stop-loss

Nettotulos 383.67 dollaria 12 voitolla ja 12 tappiolla, paljon parempi kuin aikaisempi tappio. Voit nähdä juonessa, että jäljellä oleva stop-loss suojaa monia kauppoja liukumasta tappioihin indikaattorina, joka odottaa myyvän (yliostetun) signaalin.

Yhden indikaattorin sisällä, tässä asetuksessa, meillä on monia erilaisia ​​mahdollisia permutaatioita:

  • ajanjakso 10 ja 30 välin välillä (20 varianttia)
  • stop-loss-asetus (kuvitellaan 5 erilaista käytännön vaihtoehtoa)
  • ylimääräisen/ylimyydyn kynnys (kuvitellaan nyt viisi vaihtoehtoa)

Se olisi 20x5x5 tai 500 erilaista vaihtelua joka päivä. Näiden tarkastelu yksitellen käsin olisi naurettavaa, mutta haluamme kuitenkin tietää, mitkä parametrit olivat kannattavimpia ja parhaan kaupankäynnin laatua ja mitkä eivät.

Melkoinen alkemia!

Tämä vie meidät seuraavaan vaiheeseemme tässä Crypto Quant -tutkimuksessa. Voimme raa'alla voimalla määrittää kannattavimmat ja korkealaatuisimmat kaupankäyntistrategiaparametrit tietylle kaupankäyntikaudelle ja nähdä sitten, miten ne jatkuvat.

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

Aikaleima:

Lisää aiheesta Keskikokoinen