Costruire Un Cryptocurrency Trading Bot con R
** si noti che l’API utilizzato in questo tutorial non è più in servizio. Questo articolo dovrebbe essere letto a scopo illustrativo con questo in mente.
La mente del trader è l’anello debole in qualsiasi strategia o piano di trading. L’esecuzione di trading efficace richiede input umani che vanno nella direzione opposta ai nostri istinti. Dovremmo comprare quando il nostro cervello rettile vuole vendere. Dovremmo vendere quando le nostre budella vogliono che compriamo di più.
È ancora più difficile scambiare criptovalute con una costituzione critica. I mercati giovani ed emergenti sono inondati di” gruppi di pompe ” che favoriscono l’intenso FOMO (paura di perdere) che fa salire i prezzi alle stelle prima di riportarli a terra. Molti investitori alle prime armi commerciano anche su questi mercati, investitori che probabilmente non sono mai entrati in un commercio sul NYSE. Su ogni commercio, c’è un creatore e un acquirente, e gli astuti investitori crittografici trovano facile approfittare dei novizi che inondano lo spazio.
Al fine di staccare le mie emozioni da crypto trading e di sfruttare i mercati aperti 24/7, ho deciso di costruire un semplice bot di trading che avrebbe seguito una semplice strategia ed eseguire mestieri come ho dormito.
Molti “bot traders” come vengono chiamati, usano il linguaggio di programmazione Python per eseguire queste operazioni. Se dovessi Google, “crypto trading bot”, troverai collegamenti al codice Python in vari repository Github.
Sono uno scienziato dei dati e R è il mio strumento principale. Ho cercato un tutorial decente sull’utilizzo del linguaggio R per costruire un bot di trading ma non ho trovato nulla. Ero pronto a costruire il mio pacchetto per interfacciarmi con l’API GDAX quando ho trovato il pacchetto rgdax, che è un wrapper R per l’API GDAX. Di seguito è riportata una guida per mettere insieme un bot di trading che è possibile utilizzare per costruire le proprie strategie.
In poche parole, scambieremo la coppia Ethereum — USD sullo scambio GDAX attraverso la loro API tramite il wrapper rgdax. Mi piace scambiare questa coppia perché Ethereum (ETH) è in genere in una posizione rialzista, che consente a questa strategia di brillare.
Nota: questa è una strat super-semplicistica che farà solo pochi dollari in un mercato rialzista. A tutti gli effetti, utilizzare questo come base per costruire il proprio strat.
Compreremo quando una combinazione di indicatori Relativi Strength Index (RSI) indica un mercato temporaneamente ipervenduto, con l’ipotesi che i tori spingeranno ancora una volta i prezzi verso l’alto e possiamo raccogliere profitti.
Una volta acquistato, il bot inserirà tre ordini di vendita limite: uno al profitto 1%, un altro al profitto 4% e l’ultimo al profitto 7%. Questo ci consente di liberare rapidamente fondi per entrare in un altro commercio con i due ordini 1st e l’ordine 7% rafforza la nostra redditività complessiva.
- Software
- Parte 1: invito Biblioteche e Costruire Funzioni
- Parte 2: Variabili di Archivio
- Parte 3: Trading Ciclo viene Eseguito
- Parte 4: Utilizzo di Windows Task Scheduler per automatizzare lo script
- Pianificazione script con Rstudio addin
- Modificare l’attività pianificata con l’utilità di Pianificazione
- Mantenere un occhio sulla vostra attività con il file di log
- Rendilo tuo
Software
Useremo Rstudio e Windows task scheduler per eseguire il nostro codice R su base regolare (ogni 10 minuti). Avrai bisogno di un account GDAX per inviare ordini e di un account Gmail per ricevere notifiche commerciali.
Parte 1: invito Biblioteche e Costruire Funzioni
iniziamo chiamando diverse librerie:
Il pacchetto rgdax fornisce l’interfaccia per la GDAX api, mailR viene utilizzato per inviare l’e-mail si aggiorna con un account Gmail, stringi ci aiuta ad analizzare i numeri da JSON e TTR ci permette di eseguire tecniche indicatore di calcoli.
Funzione: curr_bal_usd & curr_bal_eth
Utilizzerai la tua chiave api, il segreto e la passphrase generati da GDAX nella sezione API. Queste funzioni di query tuo GDAX account per l’ultima equilibrio che verrà utilizzato più volte nel nostro trading:
Funzione: RSI
useremo la RSI o Indice di Forza Relativa a come i nostri principali indicatori per questa strategia. Curr_rsi14_api estrae il valore dell’RSI di 14 periodi più recente, utilizzando candele di 15 minuti. RSI14_api_less_one e così via tirare l’RSI per i periodi precedenti:
Function: bid & ask
Next, we will need the current bid and ask prices for our strategy:
Function: usd_hold, eth_hold e cancel_orders
Per poter effettuare ordini limite in modo iterativo, dobbiamo essere in grado di inserire lo stato corrente dei nostri ordini già inseriti ed essere in grado di annullare gli ordini che si sono spostati troppo in basso nel portafoglio ordini per essere riempiti. Useremo la “tiene” la funzione del rgdax pacchetto per fare questo per il primo, e “cancel_order” per il secondo:
Funzione: buy_exe
Questa è la funzione big-daddy che esegue effettivamente i nostri ordini limite. Ci sono diversi passaggi che questa funzione funziona attraverso.
1. La funzione Order_size calcola quanto eth possiamo comprare, perché vogliamo comprare il più possibile ogni volta, meno 0.005 eth per tenere conto degli errori di arrotondamento
2. La nostra funzione WHILE pone ordini limite mentre abbiamo ancora zero ETH.
3. Un ordine viene aggiunto al prezzo bid (), il sistema dorme 17 secondi per consentire l’ordine da riempire, e quindi controlla per vedere se l’ordine è stato riempito. Se non lo fosse, il processo si ripete.
Parte 2: Variabili di Archivio
Avanti, abbiamo bisogno di memorizzare alcune nostre indicatore RSI variabili come gli oggetti in modo che il trading loop viene eseguito più velocemente e in modo che non si superi il limite di velocità di API:
Parte 3: Trading Ciclo viene Eseguito
Fino ad ora, siamo appena stati a preparare le nostre funzioni e variabili, in modo da eseguire il trading loop. Quanto segue è una passeggiata verbale attraverso il ciclo di trading effettivo:
Se il saldo corrente del nostro conto in USD è maggiore di $20, inizieremo il ciclo. Successivamente, se l’RSI corrente è maggiore o uguale a 30 E l’RSI nel periodo precedente era inferiore o uguale a 30 E l’RSI nei precedenti periodi 3 era inferiore a 30 almeno una volta, allora compriamo quanto più ETH possibile con l’attuale saldo USD.
Successivamente, salviamo questo prezzo di acquisto in un file CSV.
Quindi, inviamo una e-mail a noi stessi per avvisarci dell’azione di acquisto.
Il ciclo stampa quindi “acquista” in modo che possiamo rintracciarlo nel nostro file di registro.
Il sistema poi dorme per 3 secondi.
Ora, entriamo 3 livelli limite di ordini di vendita di prendere profitti.
Il nostro primo ordine di vendita limite prende profitto con un guadagno dell ‘ 1% , il prossimo prende profitto con un guadagno del 4% e l’ultimo prende profitto con un guadagno del 7% :
Che è l’intero script.
Parte 4: Utilizzo di Windows Task Scheduler per automatizzare lo script
L’intero scopo di questo bot è quello di prendere l’errore umano fuori del commercio, e per permetterci di entrare mestieri senza dover essere presenti a uno schermo. Useremo Windows Task Scheduler per realizzare questo.
Pianificazione script con Rstudio addin
Usare il pratico Rstudio aggiungere facilmente pianificare lo script:
Modificare l’attività pianificata con l’utilità di Pianificazione
Passare alla attività creata dalla Rstudio aggiungere e regolare il grilletto per sparare all’intervallo che si desidera. Nel mio caso scelgo ogni 10 minuti indefinitamente.
Mantenere un occhio sulla vostra attività con il file di log
Ogni volta che il tuo script viene eseguito farà una voce in un file di log di testo, che consente di risolvere gli errori nello script:
Si può vedere come la “VOCE del REGISTRO di AVVIO” e “END VOCE di REGISTRO” della funzione di stampa è utile per separare le nostre voci.
Rendilo tuo
Puoi modificare questo script per renderlo semplice o complesso come vuoi. Sto lavorando per migliorare questo script con l’aggiunta di reti neurali dal modulo Keras da Tensorflow per Rstudio. Queste reti neurali aggiungono un elemento esponenzialmente più complesso allo script, ma sono incredibilmente potenti per trovare modelli nascosti nei dati.
Inoltre, il pacchetto TTR ci fornisce un gran numero di funzioni finanziarie e indicatori tecnici che possono essere utilizzati per migliorare il tuo modello.
Detto questo, non giocare con più soldi che puoi permetterti di perdere. I mercati non sono un gioco e si può e si perde la camicia.