Bygg En Cryptocurrency Trading Bot Med R
** Merk at api brukes i denne opplæringen er ikke lenger i tjeneste. Denne artikkelen bør leses for illustrasjonsformål med det i tankene.den næringsdrivendes sinn er det svake leddet i enhver handelsstrategi eller plan. Effektiv handelsutførelse trenger menneskelige innganger som går i motsatt retning til våre instinkter. Vi bør kjøpe når reptilhjernen vår ønsker å selge. Vi bør selge når våre guts vil at vi skal kjøpe mer.Det er enda vanskeligere å handle cryptocurrencies med en kritisk grunnlov. De unge og fremvoksende markedene oversvømmes med «pumpegrupper» som fremmer intens FOMO (frykt for å gå glipp av) som driver prisene skyhøye før de slår dem tilbake til jorden. Mange nybegynnere investorer handler også på disse markedene, investorer som muligens aldri gikk inn i en handel PÅ NYSE. På hver handel er det en maker og en taker, og skarpe kryptoinvestorer finner det enkelt å dra nytte av nybegynnere som oversvømmer rommet.For å løsne følelsene mine fra kryptohandel og dra nytte av markeder som er åpne 24/7, bestemte jeg meg for å bygge en enkel handelsbot som ville følge en enkel strategi og utføre handler mens jeg sov.Mange «bothandlere» som de kalles, bruker Programmeringsspråket Python til å utføre disse handlene. Hvis du skulle google, «crypto trading bot», ville du finne koblinger Til Python-kode i ulike Github-repositorier.
jeg er dataforsker, Og R er mitt hovedverktøy. Jeg søkte etter en anstendig opplæring om Å bruke r-språket til å bygge en handelsbot, men fant ingenting. Jeg ble satt på å bygge min egen pakke til grensesnitt MED GDAX API da jeg fant pakken rgdax, som er En R wrapper FOR GDAX API. Følgende er en veiledning for å sette sammen en handelsbot som du kan bruke til å bygge dine egne strategier.I et nøtteskall vil Vi handle Ethereum-USD-paret på GDAX-utvekslingen gjennom DERES API via rgdax-omslaget. Jeg liker å handle dette paret fordi Ethereum (ETH) vanligvis er i en bullish holdning, noe som gjør at denne strategien kan skinne.
Merk: dette er en super-forenklet strat som bare vil tjene noen få dollar i et oksemarked. For alle praktiske formål, bruk dette som en base for å bygge din egen strat.Vi skal kjøpe når en kombinasjon Av Relative Strength Index (Rsi) indikatorer peker på et midlertidig oversolgt marked, med antagelsen om at oksene igjen vil presse prisene opp og vi kan samle fortjeneste.Når vi kjøper, vil boten legge inn tre grense salgsordrer: en med 1% fortjeneste, en annen med 4% fortjeneste og den siste med 7% fortjeneste. Dette gjør at vi raskt kan frigjøre midler for å gå inn i en annen handel med 1. to ordrer, og 7% – ordren styrker vår samlede lønnsomhet.
Programvare
Vi skal bruke Rstudio Og Windows task scheduler å utføre Vår R kode på en jevnlig basis (hvert 10. minutt). DU trenger EN GDAX-konto for å sende bestillinger til, Og En Gmail-konto for å motta handelsvarsler.
del 1: ring biblioteker og bygg funksjoner
vi begynner med å ringe flere biblioteker:
pakken rgdax gir grensesnittet til gdax api, mailr brukes til å sende oss e-postoppdateringer med en gmail-konto, hjelper stringi oss analysere tall fra json og ttr tillater oss å utføre tekniske indikatorberegninger.
Funksjon: curr_bal_usd & curr_bal_eth
du vil bruke api-nøkkelen, hemmelig og passord som genereres fra GDAX I API-delen. DISSE funksjonene spør GDAX-kontoen din for den siste saldoen som vi vil bruke gjentatte ganger i vår handel:
funksjon: rsi
vi vil bruke rsi eller relative strength index som våre hovedindikatorer for denne strategien. Curr_rsi14_api trekker i verdien av den siste 14 perioden RSI, ved hjelp av 15 minutters lys. RSI14_api_less_one og så videre trekker I RSI for periodene før:
Function: bid & ask
Next, we will need the current bid and ask prices for our strategy:
Function: usd_hold, eth_hold og cancel_orders
for at vi skal kunne plassere limit-ordrer på en iterativ måte, må vi kunne trekke inn den nåværende statusen til våre bestillinger som allerede er plassert, og kunne kansellere bestillinger som har gått for langt ned i ordreboken for å bli fylt. Vi vil bruke «holder» – funksjonen til rgdax-pakken for å gjøre dette for den tidligere, og «cancel_order» for sistnevnte:
funksjon: buy_exe
dette er big-daddy-funksjonen som faktisk utfører våre grenseordrer. Det er flere trinn som denne funksjonen fungerer gjennom.
1. Order_size-funksjonen beregner hvor mye eth vi kan kjøpe, fordi vi ønsker å kjøpe så mye som mulig hver gang, mindre 0.005 eth for å ta hensyn til avrundingsfeil
2. VÅR MENS funksjonen plasserer grenseordrer mens vi fortsatt har null ETH.
3. En ordre legges til budprisen (), systemet sover 17 sekunder for å tillate bestillingen å bli fylt, og deretter sjekker for å se om bestillingen ble fylt. Hvis det ikke var så gjentar prosessen.
Del 2: Lagre Variabler
deretter må vi lagre noen AV VÅRE rsi-indikatorvariabler som objekter, slik at handelssløyfen går raskere og slik at VI ikke overskrider hastighetsgrensen for API: