API Binance

Binance

 

Binance è un exchange di criptovalute internazionale e multilingue. Offre alcune API per accedere ai dati di Binance. Sono supportate le seguenti API:

 

  1. Stream WebSocket: consente di sottoscriversi ad alcuni metodi e ricevere dati in tempo reale. Gli eventi vengono inviati ai client dal server agli iscritti. Utilizza WebSocket come protocollo.
  2. Stream UserData: i client sottoscritti ricevono i dettagli dell'account. Richiede una chiave API per l'autenticazione e utilizza WebSocket come protocollo.
  3. REST API: Richiede una chiave API e un segreto per l'autenticazione e utilizza HTTPS come protocollo.
    1. Dati di mercato
    2. Dati account e trading
    3. Portafoglio
  4. Futures: I flussi di dati di mercato WebSocket Futures sono supportati tramite il Binance Futures Client API.

 

Il client supporta anche Binance.us; sono supportate le seguenti API:

 

  1. Stream WebSocket: consente di sottoscriversi ad alcuni metodi e ricevere dati in tempo reale. Gli eventi vengono inviati ai client dal server agli iscritti. Utilizza WebSocket come protocollo.
  2. Stream UserData: i client sottoscritti ricevono i dettagli dell'account. Richiede una chiave API per l'autenticazione e utilizza WebSocket come protocollo.
  3. REST API: i client possono richiedere al server dati di mercato e dell'account. Richiede una API Key e una Secret per l'autenticazione e utilizza HTTPs come protocollo.

 

Proprietà

L'API di Binance ha 2 tipi di metodi: pubblici e privati. I metodi pubblici sono accessibili senza autenticazione, ad esempio: ottenere i prezzi dei ticker. Alcuni sono privati e relativi ai dati utente; tali metodi richiedono l'uso delle chiavi API di Binance.

 

 

 

 

Usi più comuni

 

WebSocket Stream API

L'endpoint base è wss://stream.binance.com:9443; il client può sottoscrivere/annullare la sottoscrizione agli eventi dopo una connessione riuscita.

Sono supportati i seguenti metodi di sottoscrizione/cancellazione della sottoscrizione.

 

Metodo Parametri Descrizione
AggregateTrades Symbol invia informazioni di trading aggregate per un singolo ordine taker
Trades Symbol pubblica informazioni grezze sulle transazioni; ogni transazione ha un acquirente e un venditore univoci
KLine Symbol, Interval invia aggiornamenti alle klines/candlestick correnti ogni secondo, minuto, ora...
MiniTicker Symbol Statistiche mini-ticker su finestra mobile di 24 ore. NON si tratta delle statistiche del giorno UTC, ma di una finestra mobile di 24 ore per le 24 ore precedenti.
AllMiniTickers   Statistiche mini-ticker a finestra mobile di 24 ore per tutti i simboli che hanno subito variazioni, in un array. NON si tratta delle statistiche del giorno UTC, bensì di una finestra mobile di 24 ore sulle 24 ore precedenti. Si noti che nell'array saranno presenti solo i ticker che hanno subito variazioni.
Ticker Symbol Statistiche del ticker su finestra mobile di 24 ore per un singolo simbolo. Queste NON sono le statistiche del giorno UTC, ma una finestra mobile di 24 ore relativa alle 24 ore precedenti.
AllMarketTickers   Statistiche del ticker su finestra mobile di 24 ore per tutti i simboli che sono cambiati, in un array. Queste NON sono le statistiche del giorno UTC, ma una finestra mobile di 24 ore relativa alle 24 ore precedenti. Si noti che nell'array saranno presenti solo i ticker che sono cambiati.
BookTicker Symbol Invia in tempo reale qualsiasi aggiornamento al prezzo o alla quantità della migliore offerta o domanda per un simbolo specificato.
AllBookTickers   Trasmette in tempo reale qualsiasi aggiornamento al prezzo o alla quantità del miglior bid o ask per tutti i symbol.
PartialBookDepth Symbol, Depth Le migliori offerte e richieste per <levels> livelli, aggiornate ogni secondo. I valori validi per <levels> sono 5, 10 o 20.
DiffDepth Symbol Aggiornamenti della profondità di prezzo e quantità del libro degli ordini utilizzati per gestire localmente un libro degli ordini.

 

Dopo una sottoscrizione / annullamento della sottoscrizione con esito positivo, il client riceve un messaggio in merito, dove id è il risultato del metodo Subscribed / Unsubscribed.

 


{
  "result": null,
  "id": 1
}

 

User Data Stream API

Richiede un ApiKey valido ottenuto dal proprio account Binance; ApiKey deve essere impostato nella proprietà Binance.ApiKey del componente.

 

I seguenti dati vengono inviati al client ogni volta che si verifica una modifica. Non è necessario sottoscrivere alcun metodo; questa operazione viene eseguita automaticamente se si imposta un ApiKey valido.

 

Metodo Descrizione
Aggiornamento account Lo stato dell'account viene aggiornato con l'evento outboundAccountInfo.
Aggiornamento Saldo

L'aggiornamento del saldo si verifica nelle seguenti situazioni:

 

  • Depositi o prelievi dall'account
  • Trasferimento di fondi tra account (ad esempio da Spot a Margin)
Aggiornamento ordine Gli ordini vengono aggiornati con l'evento executionReport.

 

 

REST API

L'endpoint di base è: https://api.binance.com. Tutti gli endpoint restituiscono un oggetto o un array JSON. I dati vengono restituiti in ordine crescente. Prima i più vecchi, ultimi i più recenti.

 

Accesso alle opzioni REST API tramite la proprietà REST_API.BinanceOptions.

 

 

EndPoint API Pubblici

 

Questi endpoint sono accessibili senza alcuna autorizzazione.

 

EndPoint generali

 

Metodo Parametri Descrizione
Ping   Verifica la connettività all'API Rest.
GetServerTime   Verifica la connettività alla Rest API e ottiene l'ora corrente del server.
GetExchangeInformation   Regole di trading correnti dell'exchange e informazioni sui simboli

 

 

EndPoint dei dati di mercato

 

Metodo Parametri Descrizione
GetOrderBook Symbol Recupera il libro degli ordini.
GetTrades Symbol Ottiene gli scambi recenti
GetHistoricalTrades Symbol Ottiene trade più vecchi.
GetAggregateTrades Symbol Recupera trade aggregati e compressi. I trade eseguiti contemporaneamente, dallo stesso ordine e allo stesso prezzo avranno la quantità aggregata.
GetKLines Symbol, Interval Barre Kline/candlestick per un simbolo. Le Kline sono identificate in modo univoco dal loro orario di apertura.
GetAveragePrice Symbol Prezzo medio attuale per un simbolo.
Get24hrTicker Symbol Statistiche di variazione del prezzo nelle ultime 24 ore a finestra scorrevole. Fare attenzione quando si accede senza specificare un simbolo.
GetPriceTicker Symbol Prezzo più recente per un simbolo.
GetPriceTickers Simboli Prezzo più recente per un array di simboli. Esempio: ["BTCUSDT","BNBUSDT"]
GetBookTicker Symbol Miglior prezzo/quantità sull'order book per un simbolo o più simboli.
GetUIKLines Symbol, Interval Barre Kline/candlestick per un simbolo. La risposta è simile a GetKLines, ottimizzata per la presentazione di grafici a candele.
GetRollingWindowTicker Symbol, Symbols, WindowSize Statistiche di variazione del prezzo su finestra temporale mobile. Nota: il valore predefinito di WindowSize è 1d se non specificato.
GetTradingDayTicker Symbol, Symbols, Type Statistiche di variazione del prezzo per una giornata di trading.

 

 

 

EndPoint API privati

 

Richiede un APIKey e un APISecret per essere autorizzato dal server.

 

EndPoint dati account

 

Metodo Parametri Descrizione
NewOrder Symbol, Side, Type Invia un nuovo ordine.
PlaceMarketOrder Side, Symbol, Quantity Inserisce un nuovo ordine di mercato
PlaceMarketQuoteOrder Side, Symbol, QuoteOrderQty Inserisce un nuovo Market Quote Order
PlaceLimitOrder Side, Symbol, Quantity, LimitPrice Inserisce un nuovo ordine limite
PlaceStopOrder Side, Symbol, Quantity, StopPrice, LimitPrice Inserisce un nuovo ordine Stop
PlaceStopTrailingOrder Side, Symbol, Quantity, TrailingDelta, LimitPrice Inserisce un Nuovo Ordine Stop Trailing
PlaceTakeProfitOrder Side, Symbol, Quantity, StopPrice, LimitPrice Inserisce un nuovo ordine Take Profit
PlaceTakeProfitTrailingOrder Side, Symbol, Quantity, TrailingDelta, LimitPrice Inserisce un nuovo ordine Take Profit Trailing
PlaceLimitMakerOrder Side, Symbol, Quantity Inserisce un nuovo ordine limite di mercato
TestNewOrder Symbol, Side, Type Testa la creazione di un nuovo ordine e la firma/recvWindow lungo. Crea e valida un nuovo ordine ma non lo invia al motore di corrispondenza.
QueryOrder Symbol Verifica lo stato di un ordine.
CancelOrder Symbol Annulla un ordine attivo. Annulla un ordine attivo. Deve essere inviato OrderId oppure OrigClientOrderId.
CancelAllOpenOrders Symbol (opzionale)  
GetOpenOrders   Recupera tutti gli ordini aperti su un simbolo. Prestare attenzione quando si accede senza specificare un simbolo.
GetAllOrders Symbol Ottieni tutti gli ordini dell'account: attivi, annullati o eseguiti.
NewOCO Symbol, Side, Quantity, Price, StopPrice Invia un nuovo OCO
CancelOCO Symbol Annulla un intero Elenco Ordini
QueryOCO Symbol Recupera un OCO specifico in base ai parametri opzionali forniti
GetAllOCO   Recupera tutti gli OCO in base ai parametri opzionali forniti
GetOpenOCO   Recupera tutti gli OCO aperti.
GetAccountInformation   Ottieni le informazioni sull'account corrente.
GetAccountTradeList Symbol Ottieni le operazioni per un account e un simbolo specifici.
CancelReplaceOrder Symbol, Side, Type, CancelReplaceMode Annulla un ordine esistente e inserisce un nuovo ordine sullo stesso simbolo.
NewOrderListOCO Symbol, Side, Quantity, AboveType, BelowType Inserire un nuovo ordine OCO.
NewOrderListOTO Symbol, WorkingType, WorkingSide, WorkingQuantity, WorkingPrice, PendingType, PendingSide, PendingQuantity Inserisce un nuovo elenco di ordini OTO (One-Triggers-the-Other).
NewOrderListOTOCO Symbol, WorkingType, WorkingSide, WorkingQuantity, WorkingPrice, PendingSide, PendingAboveType, PendingBelowType, PendingQuantity Inserire un nuovo ordine lista OTOCO (One-Triggers-a-One-Cancels-the-Other).
NewSOROrder Symbol, Side, Type, Quantity Inserisce un ordine tramite Smart Order Routing (SOR).
TestSOROrder Symbol, Side, Type, Quantity Testa un nuovo ordine utilizzando lo Smart Order Routing (SOR). Crea e convalida un nuovo ordine ma non lo invia al matching engine.
GetOrderRateLimitUsage Visualizza il conteggio corrente degli ordini dell'utente per tutti gli intervalli.
GetPreventedMatches Symbol Visualizza l'elenco degli ordini scaduti a causa di STP (Self Trade Prevention).
GetAllocations Symbol Recupera le allocazioni risultanti dal posizionamento degli ordini SOR.
GetAccountCommission Symbol Ottiene gli attuali tassi di commissione dell'account.

 

 

 

Converti EndPoints

 

Metodo Parametri Descrizione
GetAllConvertPairs FromAsset, ToAsset Interroga tutte le coppie di token convertibili e i rispettivi limiti superiori/inferiori dei token
GetConvertAssetInfo   Interrogazione per informazioni sulla precisione degli asset supportati
SendConvertQuoteRequest FromAsset, ToAsset Richiedi una quotazione per le coppie di token richieste
AcceptConvertQuote QuoteId Accetta la quotazione offerta tramite l'ID della quotazione.
GetConvertOrderStatus OrderId o QuoteId Interroga lo stato dell'ordine tramite l'ID ordine.
PlaceConvertLimitOrder BaseAsset, QuoteAsset, Side, LimitPrice

Consentire agli utenti di inserire un ordine limite.

baseAsset o quoteAsset possono essere determinati tramite l'endpoint exchangeInfo.
Il prezzo limite è definito da baseAsset a quoteAsset.
Viene utilizzato baseAmount o quoteAmount.

CancelConvertLimitOrder OrderId Consente agli utenti di annullare un ordine limite
GetConvertLimitOpenOrders   Consentire agli utenti di consultare tutti gli ordini limite esistenti
GetConvertTradeHistory StartTime, EndTime L'intervallo massimo tra startTime e endTime è di 30 giorni.

 

 

 

Endpoint Wallet

(*gli endpoint wallet funzionano solo con il server di produzione, non con quello demo)

 

Metodo Descrizione
GetWalletSystemStatus Recuperare lo stato del sistema.
GetWalletAllCoinsInformation Ottieni informazioni sulle monete (disponibili per deposito e prelievo) per l'utente.
GetWalletDailyAccountSnapshot Tipo: "SPOT", "MARGIN", "FUTURES"
  • Il periodo di query deve essere inferiore a 30 giorni
  • Supporta query solo nell'ultimo mese
  • Se startTime e endTime non vengono inviati, vengono restituiti per impostazione predefinita i record degli ultimi 7 giorni
SetWalletDisableFastWithdrawSwitch Questa richiesta disabiliterà l'opzione fastwithdraw nel Suo account.
È necessario abilitare l'opzione "trade" per la chiave API che richiede questo endpoint.
SetWalletEnableFastWithdrawSwitch Questa richiesta abiliterà il prelievo rapido nel proprio account.
È necessario abilitare l'opzione "trade" per la chiave API che richiede questo endpoint.
Quando il prelievo rapido è attivato, il trasferimento di fondi verso un account Binance avviene istantaneamente. Non vi è alcuna transazione on-chain, nessun ID transazione e nessun costo di prelievo.
WalletWithdraw

Invia una richiesta di prelievo.

 

GetWalletDepositHistory Recupera la cronologia dei depositi.
GetWalletWithdrawHistory Recupera la cronologia dei prelievi.
GetWalletDepositAddress Recupera l'indirizzo di deposito con la rete.
GetWalletAccountStatus Recupera i dettagli dello stato dell'account.
GetWalletAccountAPITradingStatus Recupera i dettagli sullo stato di trading dell'API dell'account.
GetWalletDustLog Restituisce solo gli ultimi 100 record
Restituisce solo i record successivi al 01/12/2020
GetWalletAssetsConvertedBNB  
WalletDustTransfer

Converti asset dust in BNB.

È necessario abilitare l'autorizzazione Spot & Margin Trading per la chiave API che effettua richieste a questo endpoint.

GetWalletAssetDividendRecord Interroga il registro dei dividendi degli asset.
GetWalletAssetDetail Recupera i dettagli degli asset supportati su Binance.
GetWalletTradeFee Recupera la commissione di trading
WalletUserUniversalTransfer

È necessario abilitare l'opzione Permits Universal Transfer per la chiave API che richiede questo endpoint. MAIN_UMFUTURE Trasferimento dal conto Spot al conto Futures USDⓈ-M

ENUM del Tipo:

  • MAIN_CMFUTURE Trasferimento dal conto Spot al conto COIN-M Futures
  • MAIN_MARGIN Trasferimento dal conto Spot al conto Margin(cross)
  • UMFUTURE_MAIN Trasferimento dal conto USDⓈ-M Futures al conto Spot
  • UMFUTURE_MARGIN Trasferimento dal conto USDⓈ-M Futures al conto Margin(cross)
  • CMFUTURE_MAIN Trasferimento dal conto COIN-M Futures al conto Spot
  • CMFUTURE_MARGIN Trasferimento dal conto COIN-M Futures al conto Margin(cross)
  • MARGIN_MAIN Trasferimento dal conto Margin(cross)al conto Spot
  • MARGIN_UMFUTURE Trasferimento dal conto Margin(cross)a USDⓈ-M Futures
  • MARGIN_CMFUTURE Trasferimento dal conto Margin(cross)a COIN-M Futures
  • ISOLATEDMARGIN_MARGIN Trasferimento dal conto Isolated margin al conto Margin(cross)
  • MARGIN_ISOLATEDMARGIN Trasferimento dal conto Margin(cross) al conto Isolated margin
  • ISOLATEDMARGIN_ISOLATEDMARGIN Trasferimento dal conto Isolated margin al conto Isolated margin
  • MAIN_FUNDING Trasferimento dal conto Spot al conto Funding
  • FUNDING_MAIN Trasferimento dal conto Funding al conto Spot
  • FUNDING_UMFUTURE Trasferimento dal conto Funding al conto UMFUTURE
  • UMFUTURE_FUNDING Trasferimento dal conto UMFUTURE al conto Funding
  • MARGIN_FUNDING Trasferimento dal conto MARGIN al conto Funding
  • FUNDING_MARGIN Trasferimento dal conto Funding al conto Margin
  • FUNDING_CMFUTURE Trasferimento dal conto Funding al conto CMFUTURE
  • CMFUTURE_FUNDING Trasferimento dal conto CMFUTURE al conto Funding
GetWalletQueryUserUniversalTransferHistory
  • fromSymbol deve essere inviato quando il tipo è ISOLATEDMARGIN_MARGIN e ISOLATEDMARGIN_ISOLATEDMARGIN
  • toSymbol deve essere inviato quando il tipo è MARGIN_ISOLATEDMARGIN e ISOLATEDMARGIN_ISOLATEDMARGIN
  • Supporta solo le query degli ultimi 6 mesi
  • Se startTime e endTime non vengono inviati, vengono restituiti per impostazione predefinita i record degli ultimi 7 giorni
GetWalletFundingWallet Attualmente supporta la query dei seguenti asset aziendali:Binance Pay, Binance Card, Binance Gift Card, Stock Token
GetWalletUserAsset Recupera gli asset dell'utente, solo per i dati positivi.
GetWalletApiKeyPermission  

 

 

Eventi

I messaggi Binance vengono ricevuti nel componente TsgcWebSocketClient; è possibile utilizzare i seguenti eventi:

 

OnConnect

Dopo una connessione riuscita al server Binance.

OnDisconnect

Dopo una disconnessione dal server Binance

OnMessage

I messaggi inviati dal server al client vengono gestiti in questo evento.

OnError

In caso di qualsiasi errore nel protocollo, verrà chiamato questo evento.

OnException

Se si verifica un'eccezione non gestita, verrà chiamato questo evento.

 

Inoltre, esiste un evento specifico nel componente API Binance, chiamato OnBinanceHTTPException, che viene generato ogni volta che si verifica un errore nella chiamata di una richiesta HTTP (API REST o WebSocket User Stream).

 

(*) A causa di modifiche ai server Binance, le versioni Indy precedenti a Rad Studio 10.1 non saranno in grado di connettersi ai server di test. Questo problema non riguarda l'edizione Enterprise né i casi in cui la versione Indy è stata aggiornata all'ultima versione.