Articles

construi un bot de tranzacționare Criptomonedă cu R

fotografie de Branko Stancevic pe Unsplash

** rețineți că API-ul utilizat în acest tutorial nu mai este în funcțiune. Acest articol trebuie citit în scopuri ilustrative, având în vedere acest lucru.

mintea Traderului este veriga slabă în orice strategie sau plan de tranzacționare. Executarea eficientă a tranzacțiilor are nevoie de intrări umane care rulează în direcția opusă instinctelor noastre. Ar trebui să cumpărăm când creierul nostru de reptile vrea să vândă. Ar trebui să vindem când curajul nostru vrea să cumpărăm mai mult.

este și mai dificil să tranzacționezi criptomonede cu o constituție critică. Piețele tinere și emergente sunt inundate de” grupuri de pompe ” care încurajează FOMO intens (frica de a pierde), care conduc prețurile la cer înainte de a le trânti înapoi pe pământ. Mulți investitori începători tranzacționează și pe aceste piețe, investitori care, eventual, nu au intrat niciodată într-o tranzacție pe NYSE. La fiecare tranzacție, există un producător și un beneficiar, iar investitorii cripto-vicleni consideră că este ușor să profite de novicii care inundă spațiul.

pentru a-mi detașa emoțiile de tranzacționarea criptografică și pentru a profita de piețele deschise 24/7, am decis să construiesc un bot simplu de tranzacționare care să urmeze o strategie simplă și să execute tranzacții în timp ce dormeam.

mulți „comercianți de bot”, așa cum sunt numiți, folosesc limbajul de programare Python pentru a executa aceste tranzacții. Dacă ați fi la google, „crypto trading bot”, ați găsi linkuri către codul Python în diferite depozite Github.

sunt un om de știință de date, iar R este instrumentul meu principal. Am căutat un tutorial decent despre utilizarea limbajului R pentru a construi un bot de tranzacționare, dar nu am găsit nimic. Am fost setat pe construirea propriul meu pachet de interfață cu API GDAX când am găsit pachetul rgdax, care este un înveliș R pentru API GDAX. Următorul este un ghid pentru a pune cap la cap un bot de tranzacționare pe care îl puteți utiliza pentru a vă construi propriile strategii.

pe scurt, vom tranzacționa perechea Ethereum — USD pe bursa GDAX prin API-ul lor prin intermediul ambalajului rgdax. Îmi place să tranzacționez această pereche, deoarece Ethereum (ETH) este de obicei într-o poziție ascendentă, ceea ce permite ca această strategie să strălucească.

Notă: Acesta este un strat super-simplist care va face doar câțiva dolari pe o piață de tauri. Din toate punctele de vedere, utilizați acest lucru ca bază pentru construirea propriului strat.

vom cumpăra atunci când o combinație de indicatori ai indicelui de rezistență relativă (RSI) indică o piață supravanzată temporar, cu presupunerea că taurii vor împinge din nou prețurile în sus și putem aduna profituri.

odată ce cumpărăm, botul va introduce trei comenzi de vânzare limită: unul la 1% profit, altul la 4% profit și ultimul la 7% profit. Acest lucru ne permite să eliberăm rapid fonduri pentru a intra într-un alt comerț cu cele două ordine 1, iar ordinul 7% ne susține rentabilitatea generală.

Software

vom folosi Rstudio și Windows Task scheduler pentru a executa codul nostru R în mod regulat (la fiecare 10 minute). Veți avea nevoie de un cont GDAX pentru a trimite comenzi și de un cont Gmail pentru a primi notificări comerciale.

procesul nostru

partea 1: apelați bibliotecile și construiți funcții

vom începe prin a apela mai multe biblioteci:

pachetul rgdax oferă interfața API-ului GDAX, mailr este folosit pentru a ne trimite actualizări prin e-mail cu un cont Gmail, stringi ne ajută să analizăm numerele de la JSON și TTR ne permite să efectuăm calcule tehnice ale indicatorilor.

funcție: curr_bal_usd &curr_bal_eth

veți folosi cheia api, secretul și fraza de acces care sunt generate din GDAX în secțiunea API. GDAX pentru cel mai recent sold pe care îl vom folosi în mod repetat în tranzacționarea noastră:

funcție: RSI

vom folosi RSI sau indicele de rezistență relativă ca indicatori principali pentru această strategie. Curr_rsi14_api trage în valoarea celor mai recente 14 perioada RSI, folosind 15 lumânări minut. RSI14_api_less_one și așa mai departe trage în RSI pentru perioadele anterioare:

Function: bid & ask

Next, we will need the current bid and ask prices for our strategy:

Function: usd_hold, eth_hold și cancel_orders

pentru a plasa comenzi limită într-un mod iterativ, trebuie să putem trage în starea actuală a comenzilor noastre deja plasate și să putem anula comenzile care s-au mutat prea departe în cartea de comenzi pentru a fi completate. Vom folosi funcția „holds” a pachetului rgdax pentru a face acest lucru pentru prima și „cancel_order” pentru cea din urmă:

funcție: buy_exe

aceasta este funcția big-daddy care execută efectiv ordinele noastre limită. Există mai mulți pași prin care funcționează această funcție.

1. Funcția Order_size calculează cât de mult eth putem cumpăra, pentru că vrem să cumpere cât mai mult posibil de fiecare dată, mai puțin 0.005 eth pentru a ține cont de erori de rotunjire

2. Funcția noastră în timp ce plasează comenzi limită în timp ce avem încă zero ETH.

3. Se adaugă o comandă la prețul bid (), sistemul doarme 17 secunde pentru a permite completarea comenzii și apoi verifică dacă comanda a fost completată. Dacă nu a fost, atunci procesul se repetă.

Partea 2: stocați variabilele

în continuare, trebuie să stocăm câteva variabile indicatoare RSI ca obiecte, astfel încât bucla de tranzacționare să ruleze mai repede și astfel încât să nu depășim limita ratei API:

partea 3: bucla de tranzacționare execută

până acum, tocmai ne-am pregătit funcțiile și variabilele pentru a executa bucla de tranzacționare. Următoarea este o plimbare verbală prin bucla de tranzacționare reală:

dacă soldul curent al contului nostru în USD este mai mare de 20 USD, vom începe bucla. Apoi, dacă RSI curent este mai mare sau egal cu 30 și RSI în perioada anterioară a fost mai mică sau egală cu 30 și RSI în perioadele anterioare 3 a fost mai mică de 30 cel puțin o dată, atunci cumpărăm cât mai mult ETH cu soldul curent USD.

apoi, salvăm acest preț de cumpărare într-un fișier CSV.

apoi, ne trimitem un e-mail pentru a ne avertiza despre acțiunea de cumpărare.

bucla apoi imprimă „cumpara” astfel încât să putem urmări că în fișierul nostru jurnal.

sistemul doarme apoi timp de 3 secunde.

acum, vom introduce 3 niveluri limită Vinde Comenzi pentru a lua profituri.

prima noastră comandă limită de vânzare are profit la un câștig de 1%, următoarea ia profit la un câștig de 4% , iar ultima Ia profit la un câștig de 7% :

asta este, acesta este întregul script.

Partea 4: Utilizarea Windows Task Scheduler pentru a automatiza scriptul

întregul scop al acestui bot este de a scoate eroarea umană din comerț și de a ne permite să intrăm în tranzacții fără a fi nevoie să fim prezenți la un ecran. Vom folosi Windows Task Scheduler pentru a realiza acest lucru.

program script cu RStudio addin

utilizați RStudio la îndemână adăuga în a programa cu ușurință script-ul:

modificați sarcina programată cu Task Scheduler

navigați la sarcina creată de RStudio add in și reglați declanșatorul la foc la intervalul dorit. În cazul meu aleg la fiecare 10 minute pe termen nelimitat.

fii atent la sarcina ta cu fișierul jurnal

de fiecare dată când scriptul rulează, acesta va face o intrare într-un fișier jurnal text, care vă permite să depanați erorile din script:

puteți vedea cum funcția de imprimare”start log entry „și” End log entry „este utilă pentru a separa intrările noastre.

asigurați-vă propriul

puteți modifica acest script pentru a face la fel de simplu sau la fel de complex, după cum doriți. Lucrez la îmbunătățirea acestui script cu adăugarea de rețele neuronale din modulul Keras de la Tensorflow pentru Rstudio. Aceste rețele neuronale adaugă un element exponențial mai complex scriptului, dar sunt incredibil de puternice pentru a găsi modele ascunse în date.

în plus, pachetul TTR ne oferă un număr mare de funcții financiare și indicatori tehnici care pot fi utilizați pentru a vă îmbunătăți modelul.cu toate acestea fiind spuse ,nu te juca cu mai mulți bani pe care îți poți permite să-i pierzi. Piețele nu sunt un joc și puteți și vă veți pierde cămașa.