construi un bot de tranzacționare Criptomonedă cu R
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.