Sì! In questo articolo costruiremo un bot di trading personalizzabile, che può comprare e vendere Bitcoin su Binance in base al sentimento del tweet ogni volta che Elon musk twitta.
Domanda: Puoi dirci la motivazione dietro questo bot?
Risposta: certo, perché no?!
Riesci a vedere il movimento dei prezzi? Lo chiamano "Effetto Muschio".
Negazione di responsabilità: È puramente costruito solo per divertimento e educativo scopo. Questo post non incoraggia o critica nessuno o nulla. L'obiettivo era semplicemente dimostrare l'impianto tecnico di un bot di trading. Non è un consiglio o una raccomandazione finanziaria.
Prima di passare alla parte di implementazione, prepariamoci.
- NodeJS: per eseguire questo bot, devi avere NodeJS installato sul tuo computer. Se non l'hai ancora fatto, usa questo link.
- Account sviluppatore Twitter: Per aver ottenuto il token Bearer per effettuare richieste valide all'API di Twitter.
- Chiavi di Binance Testnet: Le chiavi sono necessarie per effettuare ordini in modo programmatico sull'exchange Binance Testnet. Può essere ottenuto accedendo con il tuo account GitHub.
Creiamo una nuova directory per questo bot e trasferiamoci la nostra directory corrente. Lo chiamerò il “bot muschiato”.
mkdir musk-bot && cd musk-bot
Inizializza un nuovo progetto eseguendo npm init
.
Le dipendenze utilizzate in questo progetto sono le seguenti:
- Axios: Per effettuare richieste http all'API di Twitter
- dotenv: Per leggere i valori delle variabili d'ambiente
- nodo-binance-api: Per effettuare ordini su Binance Exchange (testnet)
- sentimento: Per recuperare il sentimento del tweet.
Dobbiamo installare le dipendenze richieste.
npm installa axios dotenv node-binance-api sentiment --save
Per aumentare la coerenza nel bot, ho deciso di archiviare i registri commerciali e l'ultimo tweetId elaborato nel filesystem. Quindi abbiamo bisogno di creare altri due file nella directory del progetto.
toccare trade.logs tweetId.txt
Dolce!👏 Ora è il momento dell'implementazione.
Il modo in cui funziona il nostro bot è piuttosto semplice e diretto.
- Innanzitutto recupera fino a 10 tweet dall'ultimo tweet elaborato. Quando avviamo il bot per la prima volta, recupera gli ultimi 10 tweet dall'ID utente di Twitter specificato.
- Manterremo una serie di parole necessarie per verificare quali tweet sono necessari per l'elaborazione. I tweet senza quelle parole vengono trascurati. Nel nostro caso l'array di parole sarà qualcosa del tipo
['btc', 'bitcoin']
. Ci possono essere alcuni collegamenti ipertestuali nei tweet che contengono le parole presenti nell'array, quindi rimuoveremo i collegamenti ipertestuali dal tweet utilizzando Regex prima di confrontarlo con l'array di parole. - Estrai il punteggio del sentimento dal tweet. Se neutro o non supera la soglia, lo ignoriamo.
- Se il tweet supera il punteggio soglia positivo/negativo (può essere definito in un file, controlla l'implementazione per maggiori dettagli), effettueremo un ordine di acquisto/vendita basato sul sentimento.
- Quindi registreremo il registro commerciale e il
lastProcessedTweetId
in un file. - Se tutti i 10 tweet non contengono tweet relativi alle parole nell'array di parole, aggiorniamo semplicemente il
lastProcessedTweetId
al tweet più recente presente nell'array di tweet restituito dall'API di Twitter (ad es.lastProcessedTweetId = tweets[0].id
) e attendere l'iterazione successiva (tecnica della finestra scorrevole).
Crea un nuovo file chiamato app.js
nella directory principale del progetto e aggiungere i seguenti contenuti.
Ora dobbiamo creare i file di configurazione per personalizzare questo bot. Crea un file chiamato config.js
per memorizzare le configurazioni di base di questo bot.
modulo.export = {BASE: "BTC",CITAZIONE: "USDT",//acquista BTC utilizzando il 30% del saldo USDT
ACQUISTA_PERCENTUALE: 30,//vende il 35% di BTC
VENDITA_PERCENTUALE: 35,//bot controlla queste parole nei tweet
dovrebbeIncludere: ["btc", "bitcoin"],//UserId dell'utente Twitter. Si può ottenere da questo API
twitterUserId: "elon_musk_id_goes_here",//Frequenza per verificare la presenza di nuovi tweet (in minuti)
intervallo : 2};
Come accennato, questo bot è personalizzabile. Non si limita solo a scambiare bitcoin o a sondare i tweet di Elon Musk. Puoi modificare questi parametri in base alle tue esigenze.
Ora creiamo un altro file .env
per memorizzare le variabili di ambiente.
BEARER_TOKEN =
BINANCE_API_KEY=
BINANCE_SECRET=
Quasi lì! Abbiamo bisogno di creare una funzione di supporto per effettuare ordini sullo scambio testnet di Binance. Crea una nuova cartella chiamata helpers
all'interno della directory del progetto e aggiungere i seguenti contenuti a un nuovo file: placeOrder.js
Lo script sopra funzionerà in base all'opzione specificata.
- Se l'azione passata alla funzione è
BUY
quindi, lo script calcolerà ilBUY_PERCENT
(è 30 nel nostro caso), dal saldo totale USDT e pone aMARKET BUY
ordine nel mercato dato (BTCUSDT). - Se l'azione è
SELL
a causa di un sentimento negativo, quindi lo script vende in giroSELL PERCENT
(35%) del totale delle partecipazioni al prezzo di mercato.
A scopo di test ho aggiunto il mio ID utente di Twitter nel config.js
file e ho avviato il bot eseguendo il node app
comando.
Contemporaneamente ho postato un tweet positivo affermando che bitcoin is great
.L'output è il seguente:
trades.log
file aveva i seguenti dati commerciali inseriti.
25/06/2021, 00:06:02 - Acquistato 0.04739 BTC per 1656.069314602 USDT. ID ordine: 5005343
Fantastico ✨ Successivamente, ho pubblicato alcuni tweet negativi e neutri. I risultati sono stati perfetti!
Puoi vedere che il nostro bot aveva ignorato il tweet che aveva un neutral
sentimento e ha inserito un ordine di vendita per il tweet negativo. Funziona come previsto.
Ho anche provato con l'account di Elon Musk per assicurarmi che il bot calcolasse il sentimento come richiesto. Per questo mi è stato richiesto di effettuare alcune configurazioni per ottenere alcuni vecchi tweet dal suo account ed elaborarli con il nostro bot. Ecco i risultati del sentiment dal nostro BOT.
Risultati [
{
"testo": "#Bitcoin ",
"sentimento": "NEGATIVO"
}
]...Risultati [
{
testo: '@Cointelegraph Questo è impreciso. Tesla ha venduto solo ~ 10% delle partecipazioni per confermare che BTC potrebbe essere liquidato facilmente senza spostare il mercato.n' +
'n' +
"Quando ci sarà conferma di un uso ragionevole (~50%) di energia pulita da parte dei minatori con una tendenza futura positiva, Tesla riprenderà a consentire transazioni Bitcoin."
sentimento: 'POSITIVO'
}
]...
Puoi vedere che i sentimenti vengono valutati correttamente dal nostro bot 💥
È possibile trovare il codice sorgente di questo bot qui su GitHub.
Sì, sono d'accordo che questo bot è molto semplice e, come sempre, c'è molto margine di miglioramento. Ma l'obiettivo principale è mostrare come possiamo sfruttare l'API di Twitter ed effettuare ordini utilizzando l'API di Binance. Questo bot è assolutamente divertente e ci aiuta a imparare qualcosa di nuovo e interessante. Puoi provare a cambiare il file di configurazione e giocare con questo bot. Se riscontri problemi o desideri condividere i tuoi pensieri, non esitare a postarli nei commenti.
Buona codifica! 🔥🔥
- '
- "
- &
- 7
- Il mio account
- Action
- consigli
- Tutti
- Consentire
- api
- in giro
- articolo
- binance
- Bitcoin
- bitcoin transazioni
- Bot
- BTC
- BTCUSDT
- costruire
- Acquistare
- chiamata
- il cambiamento
- verifica
- Controlli
- codice
- Commenti
- testuali
- Corrente
- CZ
- dati
- Costruttori
- Elon Musk
- energia
- Ambiente
- EV
- exchange
- finanziario
- Nome
- prima volta
- FS
- ti divertirai
- function
- futuro
- GitHub
- qui
- Come
- hr
- HTTPS
- ia
- Aumento
- IP
- sicurezza
- IT
- saltare
- Tasti
- IMPARARE
- Leva
- Fare
- Rappresentanza
- medie
- minatori
- Opzione
- minimo
- ordini
- Abbondanza
- sondaggio
- presenti
- prezzo
- progetto
- Requisiti
- riparazioni
- Risultati
- Correre
- running
- venda
- sentimento
- Condividi
- Un'espansione
- So
- venduto
- inizia a
- iniziato
- Tornare al suo account
- Interruttore
- Consulenza
- Tesla
- Testing
- tempo
- token
- commercio
- Trading
- Le transazioni
- Tweet
- Aggiornanento
- us
- USDT
- aspettare
- parole
- Lavora
- lavori