Contenuto

  • introduzione

  • Prerequisiti

    • Testare le chiavi di rete

    • Scarica e installa Postino

  • Creare un ambiente

  • Importa una raccolta

  • Esecuzione delle richieste

  • Pensieri finali


introduzione

Comprendere e utilizzare le API per il trading di criptovalute può aprire un mondo di possibilità quando si tratta di entrare e uscire da posizioni. Con alcune conoscenze di programmazione di base, puoi connetterti al backend dell'exchange per automatizzare le tue strategie di trading. Evitando il sito web, puoi raggiungere molto più velocemente il motore di corrispondenza per applicazioni ad alte prestazioni.

Lo scopo di questa serie è presentarti l'API REST di Binance e insegnarti come interagire con essa. Alla fine, dovresti avere fiducia nella tua capacità di interrogare i mercati e le tue posizioni e inserire diversi tipi di ordini.

In questo articolo utilizzeremo Postman per comunicare con l'exchange. Non preoccuparti: non metteremo a rischio i soldi veri.


Prerequisiti

Testare le chiavi di rete

Utilizzeremo una testnet per i nostri scopi. Questo ci darà dei fondi che non hanno alcun valore reale e con i quali possiamo sperimentare. Funzionano esattamente come monete e gettoni reali, quindi una volta che ti sarai abituato all'API, potrai iniziare a usarla per scambiare denaro reale.


  1. Inizia andando su Spot Test Network.

  2. È necessario aver effettuato l'accesso con un account GitHub per ottenere l'accesso. Crealo se non l'hai già fatto.

  3. Fai clic su "Autentica" e accedi con GitHub.

  4. Nella sezione "Chiavi API", vedrai che non hai chiavi registrate. Fare clic su Genera chiave HMAC_SHA256 per generare una coppia.

  5. Nella schermata successiva, assegna un'etichetta ai tasti. Nominali come preferisci e fai clic su "Genera".

  6. Ti verranno presentate due chiavi: chiave API e chiave segreta. È importante scriverli adesso. In caso contrario, dovrai avviare nuovamente il processo di generazione della chiave. Ti consigliamo di salvarli in un'applicazione per prendere appunti sul tuo computer per poterli copiare facilmente in seguito.

Nota: etichettare le tue chiavi è qualcosa che dovresti fare quando usi uno scambio live per gestire chiavi diverse. Il tuo account può avere più chiavi con autorizzazioni diverse. Se utilizzi più bot di trading, l'utilizzo di chiavi individuali con etichette descrittive semplifica la gestione delle autorizzazioni o la rimozione di chiavi individuali senza modificare tutti i bot.


Scarica e installa Postino

Postman è una piattaforma per la collaborazione API. Questo è un punto di partenza perfetto per noi: avremo accesso alle raccolte di query di Binance da testare senza scrivere una sola riga di codice.

Il programma è disponibile per Mac, Windows e Linux. Vai alla pagina Download e scarica il file .zip.

Successivamente, trovalo in Explorer e installalo. Apri l'app per iniziare. Tieni presente che puoi creare un account per accedere, ma questo non è obbligatorio. Se vuoi saltare questo passaggio, seleziona l'opzione appropriata nella parte inferiore della finestra.


Creare un ambiente

A questo punto dovreste avere un'interfaccia simile alla seguente.



Innanzitutto è necessario creare un ambiente. È solo un modo per aggiungere variabili all'insieme di query con cui lavoreremo. Per fare ciò, dobbiamo prima ottenere alcune informazioni dal repository Binance GitHub. Vai qui e scarica il file .zip.



Il download non richiederà molto tempo. Trovalo in Esplora file e decomprimilo. Quindi, possiamo tornare a Postino.



Fai clic sull'icona a forma di ingranaggio nell'angolo in alto a destra (come mostrato sopra). Vedrai una finestra pop-up "Gestisci ambienti".

  1. Seleziona "Importa" e vai alla cartella appena decompressa (binance-postman-api).

  2. Quindi accedere alla cartella dell'ambiente.

  3. Ora vedrai due file (uno per la rete principale, uno per la rete di prova). Stiamo cercando binance_com_spot_testnet_api.postman_environment.json. Assicurati di scegliere quella giusta perché le nostre chiavi non funzionano con le altre.



Quasi fatto. Fai clic su "Binance Spot Testnet API" e vedrai le variabili di seguito. Modifica i due parametri evidenziati in rosso inserendo le chiavi salvate in precedenza. Fai clic su "Aggiorna" e esci dalla finestra pop-up.



In questa schermata, lascia vuoti i campi "timestamp" e "firma". Questi due valori verranno generati automaticamente ad ogni richiesta.

C'è ancora qualcosa da fare. A destra dell'icona a forma di ingranaggio su cui abbiamo fatto clic in precedenza per configurare l'ambiente, vedrai un menu a discesa che attualmente dice "Nessun ambiente". Fare clic su di esso e selezionare "API Binance Spot Testnet".


Importa una raccolta

Ora importeremo una raccolta che è un ampio insieme di query che svolgono il lavoro pesante per noi. Per caricarlo nel nostro ambiente, attenersi alla seguente procedura:

  1. Fai clic su "Importa" nell'angolo in alto a sinistra.

  2. Nella finestra pop-up, nella scheda "File", seleziona "Carica file".

  3. Stiamo nuovamente cercando la cartella binance-postman-api. Trovalo e aprilo.

  4. Questa volta inserisci "raccolte" nella sottodirectory.

  5. Ecco di nuovo due file. Uno per lavorare con l'API dei futures. Ma stiamo lavorando con spot, quindi devi selezionare il file binance_spot_api_v1.postman_collection.json.

  6. Ora dovresti vedere una schermata di conferma che identifica l'importazione come formato di raccolta Postman. Seleziona "Importa".

Nella scheda "Raccolte" sul lato sinistro della finestra, ora noterai che abbiamo una cartella con oltre 100 richieste. Congratulazioni! Va bene. Nella prossima sezione vedremo quali richieste possiamo inviare.


Esecuzione delle richieste

Se espandi le cartelle nella scheda Raccolte, vedrai che abbiamo tantissime query diverse che possiamo fare. Dalla codifica dei colori, puoi vedere che possiamo utilizzare tre tipi di metodi:


  • GET: il metodo "GET" viene utilizzato per recuperare i dati dal server. Lo useremo per trovare informazioni sul saldo del tuo conto, sui prezzi degli asset, ecc.

  • POST: solitamente utilizziamo il metodo "POST" per creare informazioni sul server. Ciò è necessario per cose come effettuare ordini, richiedere prelievi, ecc.

  • DELETE: Il metodo "DELETE" è una richiesta al server di eliminare informazioni. Sarà utile per annullare gli ordini.


Cerca un elenco di simboli e regole di trading

È ora della nostra prima domanda! Otterremo i simboli che possono essere scambiati in borsa e le regole di trading:

OTTIENI /exchangeInfo


Questa richiesta non richiede parametri aggiuntivi: puoi copiarla e incollarla nella barra degli indirizzi e riceverai una risposta. Postman semplifica la visualizzazione e la modifica delle query in cui includiamo più parametri.

Per scaricare questa richiesta, seleziona Mercato > Scambia informazioni. Apparirà la seguente scheda:



Non dobbiamo fare nient'altro qui, quindi fai clic su "Invia". Riceverai la risposta:



Nella sezione evidenziata in alto, vedrai informazioni importanti:

  • stato della risposta (200 significa che la richiesta ha avuto successo, 400-499 significa che abbiamo un problema)

  • tempo necessario per ricevere una risposta (meno di un secondo)

  • dimensione della risposta (~22KB).


Il secondo campo contiene la parte principale della risposta. È splendidamente stampato per renderlo un po' più piacevole per gli occhi. Contiene informazioni sull'exchange stesso, nonché sulle coppie con cui puoi fare trading e i loro importi minimi/massimi.

Sembra che ci siano molte informazioni, ma il formato semplifica il lavoro con esse a livello di programmazione. Quando scrivi script di interazione, puoi selezionare facilmente determinate proprietà di determinati elementi dalla risposta.


Controllo del saldo del conto

Controlliamo quali asset abbiamo e quanti:

OTTIENI/account

Questa richiesta può essere trovata in "Commercio" > "Informazioni sull'account". Cliccaci sopra e vedrai un layout simile al precedente. Tuttavia, noterai anche che abbiamo due nuove variabili: "timestamp" e "firma". La firma è una misura di sicurezza. Poiché ora chiediamo informazioni riservate, ciò dimostrerà che siamo i proprietari dell'account.

Il timestamp indica al server quando è stata inviata la richiesta. Poiché le reti possono essere inaffidabili o inattive, il server potrebbe ricevere la nostra richiesta molto più tardi del previsto. Se è trascorso troppo tempo, rifiuterà la richiesta. Puoi specificare quanto tempo vuoi attendere utilizzando il parametro "recvWindow", che per impostazione predefinita è 5.000 millisecondi.

Postman gestisce per noi la creazione di entrambi questi campi. Fai clic su "Invia" e riceverai una risposta. Sotto Saldi, dovresti vedere sei asset: BNB, BTC, BUSD, ETH, LTC e TRX. Il saldo sarà suddiviso in libero e bloccato. Non abbiamo ancora bloccato nulla, quindi tutte le tue risorse dovrebbero essere libere.

Congratulazioni per la tua nuova (inesistente) ricchezza!


Come scoprire il prezzo attuale di un simbolo

Possiamo ottenere il prezzo corrente di un asset in diversi modi. Forse il più semplice è con una richiesta del genere:

OTTIENI /api/v3/ticker/24hr

Come avrai intuito, questo ci fornirà informazioni sui prezzi degli asset nelle ultime 24 ore. Lo trovi in ​​"Mercato" > "Statistiche sulla variazione del prezzo del ticker 24 ore". La coppia predefinita che vediamo come variabile simbolo è BTCUSDT.

Puoi inviarlo subito per visualizzare un'analisi dettagliata delle informazioni sui prezzi. Puoi anche modificare il simbolo (in BNBBUSD, LTCUSDT, ecc.) oppure deselezionare la variabile per restituire dati per 40 coppie.

Abbiamo anche una chiamata più semplice ("Mercato" > "Symbol Price Ticker") che restituisce il prezzo corrente al quale l'asset viene scambiato:

OTTIENI /api/v3/prezzo

Come prima, puoi modificare la variabile simbolo o rimuoverla completamente e ottenere il prezzo più recente per tutti i simboli.


Verifica della profondità attuale del book degli ordini

La profondità del portafoglio ordini (chiamata anche profondità del mercato o DOM) può dirci molto sul mercato. Faremo una chiamata per fornirti informazioni utili:

OTTIENI api/v3/profondità

Quando lo inviamo con i valori predefiniti ("Mercato" > "Libro ordini"), riceviamo una risposta che ci dice il bid e chiede BTCUSDT. Il server testnet non produrrà tanti dati quanto quello reale, quindi di seguito è riportato uno screenshot di ciò che ti aspetteresti di vedere in un ambiente reale:



Nella sezione evidenziata sopra, vediamo il primo problema. Poiché stiamo esaminando il registro di BTCUSDT, il numero in alto è il prezzo che qualcuno è disposto a pagare per il tuo BTC. Di seguito è riportato l’importo che sono disposti ad acquistare. Ciò suggerisce quindi che questo ordine richiede 0,999 BTC a un tasso di 9.704,65 USDT per BTC. Se continuassimo a scorrere verso il basso, vedremmo diminuire il prezzo dell'offerta, il che significa che l'acquirente verrà pagato di meno.

L’offerta migliore sarà naturalmente la più interessante se vuoi realizzare un profitto. Tuttavia, se provi a vendere sul mercato, ad esempio 3 BTC, potrai vendere solo 0,999 BTC al miglior prezzo. Dovrai accettare ulteriori offerte (più economiche) fino a quando il tuo ordine non sarà completamente riempito.



Continua a scorrere e vedrai la domanda. Funzionalmente, sono simili alle offerte, tranne per il fatto che sono ordini di vendita di BTC in cambio di USDT.


Effettuare un ordine di prova

Ora effettueremo un ordine di prova.

POST api/v3/ordine/test

Anche se utilizziamo solo fondi testnet, questa richiesta non comporterà effettivamente l'effettuazione di un ordine. Questo può essere utile per testare gli ordini prima di inviarli. Lo trovi in ​​"Commercio" > "Test Nuovo Ordine (COMMERCIO)".



Come puoi vedere, abbiamo ancora più parametri coinvolti. Esaminiamo quanto indicato:


  • simbolo: lo abbiamo già visto. Questa è la coppia che vuoi scambiare.

  • lato – qui indichi se vuoi ACQUISTARE o VENDERE. Per la coppia BTCUSDT, ACQUISTA indica che desideri acquistare BTC per USDT, mentre VENDI venderà BTC per USDT.

  • type – il tipo di ordine che desideri inviare. Valori possibili (dettagli qui):

    • LIMITE

    • MERCATO

    • STOP_LOSS

    • STOP_LOSS_LIMIT

    • AVERE UN PROFITTO

    • TAKE_PROFIT_LIMIT

    • LIMIT_MAKER

  • timeInForce – questo parametro esprime il modo in cui desideri che l'ordine venga eseguito:

    • GTC (Good Until Cancelled) è forse l'impostazione più popolare. Le Condizioni Generali garantiscono che il tuo ordine è valido finché non viene eseguito o finché non lo annulli.

    • FOK (Esegui o Annulla) – FOK ordina allo scambio di eseguire immediatamente l'ordine. Se lo scambio non può farlo, l'ordine verrà annullato immediatamente.

    • IOC (Esegui immediatamente o Annulla) – L'ordine deve essere eseguito in tutto o in parte immediatamente altrimenti verrà annullato. A differenza del FOK, gli ordini non vengono annullati se possono essere eseguiti parzialmente.

  • la quantità è semplicemente l'importo del bene che desideri acquistare o vendere.

  • prezzo – il prezzo al quale vuoi vendere. Per la coppia BTCUSDT, questo è espresso in USDT.

  • newClientOrderId – identificatore dell'ordine. Questo non è un campo obbligatorio, ma puoi impostarlo su un identificatore che semplificherà la query in seguito. Altrimenti, viene generato casualmente sullo scambio.

Bene! Ora creiamo un ordine di prova. Utilizzeremo i valori generati automaticamente: un ordine limite di vendita di 0,1 BTC per USDT al prezzo di $ 9.000. Fare clic su "Invia". Se tutto ha avuto successo, riceveremo semplicemente {{}} come risposta.

Effettuare un ordine reale

È ora di effettuare un vero ordine falso.

POST /api/v3/ordine

Vai su Commercio > Nuovo ordine. Hai già familiarità con gli ordini di prova, quindi i parametri qui non ti sorprenderanno. Lasciamo tutti i valori così come sono, ma cambiamo il prezzo a cui vendiamo a $ 40.000. Modificare il valore del prezzo per riflettere questo. Quindi fare clic su "Invia".

In caso di esito positivo, la tua risposta conterrà informazioni dettagliate sull'ordine.


Controllo dello stato di un ordine aperto

Abbiamo ricevuto la conferma che l'ordine è stato effettuato nella sezione precedente, ma cosa succede se vogliamo verificarlo in seguito? Abbiamo diverse richieste a nostra disposizione.

OTTIENI /api/v3/openOrders

Lo troverai sotto "Trade" > "Ordini aperti correnti (USER_DATA)". BTCUSDT è selezionato per impostazione predefinita. Se premi "Invia" riceverai tutti i tuoi ordini BTCUSDT aperti (finora dovresti vedere solo quello che abbiamo impostato in precedenza). Puoi omettere il simbolo, che restituirà invece tutti i tuoi ordini aperti.

OTTIENI /api/v3/allOrders

"Trade" > "Tutti gli ordini (USER_DATA)" ti offre una panoramica di tutti gli ordini, non solo di quelli aperti. Qui è necessario specificare il simbolo. "orderId", "startTime", "endTime" sono parametri opzionali che possono aiutarti a perfezionare la ricerca. Li lasceremo qui, quindi deseleziona le caselle. Fai clic su "Invia" e vedrai la stessa risposta di prima. Se hai avuto ordini chiusi o annullati, li vedrai anche qui.


Infine, possiamo richiedere ordini specifici utilizzando:

OTTIENI /api/v3/order

Ottienilo in "Commercio" > "Query ordine (USER_DATA)". Dovrai specificare "orderId" o "origClientOrderId" (un tag "newClientOrderId" facoltativo che può essere aggiunto agli ordini). Deseleziona "orderId". Per "origClientOrderId" forniremo il tag predefinito utilizzato in precedenza: "my_order_id_1". Compila il campo e fai clic su "Invia" per ricevere una risposta.


Annullamento ordine

Dopo un po’ di tempo, potremmo decidere che l’obiettivo di $ 40.000 è troppo ottimistico, quindi vogliamo annullare l’ordine. In questo caso utilizzeremmo:

ELIMINA /api/v3/order

Sotto "Trade" > "Annulla ordine", una query che ci consentirà di evidenziare gli ordini per l'annullamento. Deseleziona "orderId" e "newClientOrderId" e passa "my_order_id_1" come valore per "origClientOrderId".

Quando invii questa richiesta, l'ordine verrà restituito. Se scorri verso il basso fino a "stato" vedrai che è effettivamente cancellato. Per confermarlo, utilizza nuovamente l'endpoint GET /api/v3/openOrders (con un elenco vuoto) o GET /api/v3/order con origClientOrderId .


Sfocatura dell'ordine, che viene eseguito istantaneamente

Il nostro ordine precedente non è stato eseguito perché era un ordine limite che funzionerà solo quando il prezzo di BTC raggiungerà i 40.000$. Nel caso di un ordine di mercato, stiamo essenzialmente dicendo "acquista/vendi a qualunque prezzo l'asset sia attualmente scambiato". Questo ordine verrà eseguito immediatamente.

Per questo, torniamo a "Commercio" > "Nuovo ordine". Dimostreremo il tipo di risposta (newOrderRespType), che è un parametro che possiamo configurare a seconda della risposta che vogliamo ricevere dal server. Ci sono tre opzioni qui: ACK, RESULT o FULL: puoi vedere esempi di ciascuna risposta qui. Utilizzeremo un "ACK" che ci darà una semplice conferma che l'ordine è stato ricevuto.

Qui sotto puoi vedere che invieremo un ordine di mercato per vendere BNB in ​​cambio di BUSD al prezzo di mercato corrente.



Tieni presente che la risposta ci fornisce informazioni minime:



Puoi verificare che l'ordine sia stato eseguito tramite l'endpoint /api/v3/allOrders.


Controllo delle tue offerte

Infine, diamo un'occhiata a un endpoint per verificare le tue transazioni:

OTTIENI /api/v3/myTrades

La richiesta si trova nella sezione "Trade" > "Elenco transazioni account (USER_DATA)". Ti consente di controllare ogni transazione tramite un simbolo specifico. Se vuoi vedere tutte le tue operazioni per il simbolo predefinito (BTCUSDT), deseleziona semplicemente "startTime", "endTime" e "fromId". La risposta restituirà fino a 500 operazioni: cambia semplicemente il limite se vuoi vederne di più.


Debug con Postman

In Postman è inoltre possibile esporre la richiesta e la risposta HTTP non elaborate.



Questo menu aprirà la console Postman, che mostra i dettagli di ciascuna richiesta.



Pensieri finali

Lo scopo di questa guida è introdurti all'API Binance senza scrivere una sola riga di codice. Se hai completato tutti i passaggi necessari, ora dovresti capire come possiamo richiedere e inviare informazioni.

Nelle parti successive di questa serie, introdurremo alcuni concetti di base della codifica che ci consentiranno di automatizzare l'acquisto e la vendita di criptovalute e altre risorse digitali.

Hai altre domande? Visita il nostro crescente forum della community di sviluppatori Binance o consulta la documentazione.