Binance è un exchange di criptovalute internazionale e multilingue. Offre alcune API per accedere ai dati di Binance. Questo componente consente di ottenere i Binance Futures WebSocket Market Streams.
https://binance-docs.github.io/apidocs/futures/en
https://binance-docs.github.io/apidocs/delivery/en
L'API Binance ha 2 tipi di metodi: pubblici e privati. I metodi pubblici sono accessibili senza autenticazione, ad esempio: ottenere i prezzi del ticker. Alcuni sono privati e relativi ai dati dell'utente; questi metodi richiedono l'uso delle chiavi API Binance.
Il client può connettersi a USDT o COIN Binance Futures; imposti il contratto che desidera negoziare utilizzando la proprietà FuturesContracts:
Il client può connettersi agli account Binance di Produzione o Demo. Se la proprietà TestNet è abilitata, si collegherà all'account Demo, altrimenti si collegherà ai server Binance di produzione.
Il client può sottoscriversi o annullare la sottoscrizione agli eventi dopo una connessione riuscita.
Sono supportati i seguenti metodi di sottoscrizione/cancellazione della sottoscrizione.
| Metodo | Parametri | Descrizione |
| AggregateTrades | Symbol | Gli Aggregate Trade Streams inviano informazioni sulle operazioni aggregate per un singolo ordine taker ogni 100 millisecondi. |
| MarkPrice | Symbol, UpdateSpeed | Prezzo mark e tasso di finanziamento per un singolo simbolo trasmessi ogni 3 secondi o ogni secondo. |
| AllMarkPrice | UpdateSpeed | Mark price e funding rate per tutti i simboli inviati ogni 3 secondi o ogni secondo. |
| KLine | Symbol, Interval | Il flusso Kline/Candlestick invia aggiornamenti alle kline/candlestick correnti ogni 250 millisecondi (se esistenti). |
| MiniTicker | Symbol | Statistiche mini-ticker su finestra mobile di 24 ore per un singolo simbolo. NON sono le statistiche del giorno UTC, ma una finestra mobile di 24 ore da requestTime alle 24 ore precedenti. |
| AllMiniTicker | Statistiche mini-ticker della finestra mobile di 24 ore per tutti i simboli. Queste NON sono le statistiche del giorno UTC, ma una finestra mobile di 24 ore da requestTime a 24 ore prima. Si noti che nell'array saranno presenti solo i ticker che sono cambiati. | |
| Ticker | Symbol | Statistiche del ticker su una finestra mobile di 24 ore per un singolo simbolo. NON sono le statistiche del giorno UTC, bensì una finestra mobile di 24 ore dal momento della richiesta alle 24 ore precedenti. |
| AllMarketTickers | Statistiche ticker su finestra mobile di 24 ore per tutti i simboli. NON si tratta delle statistiche del giorno UTC, ma di una finestra mobile di 24 ore dal momento della richiesta alle 24 ore precedenti. Si noti che nell'array saranno presenti solo i ticker che hanno subito variazioni. | |
| 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. | |
| LiquidationOrders | Symbol | Gli stream degli ordini di liquidazione forzata trasmettono le informazioni sugli ordini di liquidazione forzata per un simbolo specifico |
| AllLiquidationOrders | Gli stream All Liquidation Order inviano informazioni sugli ordini di liquidazione forzata per tutti i simboli nel mercato. | |
| PartialBookDepth | Symbol, Depth | Migliori offerte e richieste, valori validi: 5, 10 o 20. |
| DiffDepth | Symbol | Offerte e richieste, inviate ogni 250 millisecondi, 500 millisecondi, 100 millisecondi o in tempo reale (se disponibili) |
Dopo una sottoscrizione/annullamento sottoscrizione riuscito, il client riceve un messaggio a riguardo, dove l'id è il risultato del metodo Subscribed/Unsubscribed.
{
"result": null,
"id": 1
}
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 |
| Margin Call | Quando il rapporto di rischio della posizione dell'utente è troppo elevato, questo stream verrà inviato. Questo messaggio è utilizzato solo come informazione di orientamento sul rischio e non è raccomandato per le strategie di investimento. In caso di mercato altamente volatile, può esistere la possibilità che la posizione dell'utente sia stata liquidata nello stesso momento in cui questo stream viene inviato. |
| Aggiornamento saldo e posizione |
L'aggiornamento del saldo si verifica nelle seguenti situazioni:
|
| Aggiornamento ordine | Quando viene creato un nuovo ordine, verrà inviato un evento di cambio di stato dell'ordine. |
Tutti gli endpoint restituiscono un oggetto o un array JSON. I dati vengono restituiti in ordine crescente. Prima i più vecchi, poi i più recenti.
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. |
| 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 o più simboli. |
| GetBookTicker | Symbol | Miglior prezzo/quantità sull'order book per un simbolo o più simboli. |
| GetMarkPrice | Symbol | Prezzo mark e tasso di finanziamento |
| GetFundingRateHistory | Symbol | |
| GetOpenInterest | Symbol | Ottiene l'open interest attuale di un simbolo specifico. |
| GetOpenInterestStatistics | Symbol, Period | |
| GetTopTraderAccountRatio | Symbol, Period | |
| GetTopTraderPositionRatio | Symbol, Period | |
| GetGlobalAccountRatio | Symbol, Period | |
| GetTakerVolume | Symbol, Period | |
| GetContinuousKLines | Pair, ContractType, Interval | Barre kline/candlestick per un tipo di contratto specifico. |
| GetIndexPriceKLines | Pair, Interval | Candele/barre Kline per il prezzo indice di una coppia. |
| GetMarkPriceKLines | Symbol, Interval | Barre Kline/candlestick per il prezzo mark di un simbolo. |
| GetPremiumIndexKLines | Symbol, Interval | Barre kline dell'indice premium di un simbolo. |
| GetFundingInfo | Ottiene le informazioni sul funding rate per tutti i simboli. | |
| GetPriceTickerV2 | Symbol | Prezzo più recente per un simbolo o simboli (V2). |
| GetIndexInfo | Symbol | Ottenere le informazioni sull'indice. |
| GetAssetIndex | Symbol | Ottenere l'indice degli asset per la modalità multi-asset. |
| GetConstituents | Symbol | Ottiene i componenti di un indice. |
| GetDeliveryPrice | Coppia | Ottieni il prezzo di consegna. |
| GetBasis | Pair, ContractType, Period | Ottenere i dati di base. |
EndPoint API Privati
Richiede un APIKey e un APISecret per essere autorizzato dal server.
Endpoint account e transazioni
| Metodo | Parametri | Descrizione |
| ChangePositionMode | DualPosition | Modifica la modalità di posizione dell'utente (Hedge Mode o One-way Mode) su OGNI simbolo |
| GetCurrentPositionMode | Ottiene la modalità di posizione dell'utente (Hedge Mode o One-way Mode) su OGNI simbolo | |
| NewOrder | Symbol, Side, PositionSide, Type | Invia un nuovo ordine. |
| PlaceMarketOrder | Side, Symbol, Quantity | |
| PlaceLimitOrder | Side, Symbol, Quantity, LimitPrice | |
| PlaceStopOrder | Side, Symbol, Quantity, StopPrice, LimitPrice | |
| PlaceTrailingStopOrder | Side, Symbol, Quantity, aActivationPrice, aCallbackRate | |
| QueryOrder | Symbol | Verifica lo stato di un ordine. |
| CancelOrder | Symbol | Annulla un ordine attivo. È necessario inviare OrderId o OrigClientOrderId. |
| CancelAllOpenOrders | Symbol | |
| AutoCancelAllOpenOrders | Symbol, CountDownTimer | Annulla tutti gli ordini aperti del simbolo specificato alla fine del conto alla rovescia indicato. |
| QueryCurrentOpenOrder | Symbol | |
| GetOpenOrders | Symbol | 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. |
| GetAccountBalance | ||
| GetAccountInformation | Ottieni le informazioni sull'account corrente. | |
| ChangeInitialLeverage | Symbol, Leverage | Modifica la leva iniziale dell'utente per uno specifico mercato di simboli. |
| ChangeMarginType | Symbol, MarginType | |
| ModifyIsolatedPositionMargin | Simbolo, Quantità, Tipo | |
| GetPositionMarginChangeHistory | Symbol | |
| GetPositionInformation | Symbol | |
| GetAccountTradeList | Symbol | |
| GetIncomeHistory | Symbol | |
| GetNotionalLeverageBracket | Symbol | |
| TestNewOrder | Symbol, Side, PositionSide, 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. |
| ModifyOrder | Symbol | Modifica un ordine esistente. |
| NewBatchOrders | BatchOrders | Inserisce più ordini. |
| ModifyBatchOrders | BatchOrders | Modifica più ordini. |
| CancelBatchOrders | Symbol | Annulla più ordini. |
| GetOrderAmendment | Symbol | Ottieni la cronologia delle modifiche all'ordine. |
| CountdownCancelAll | Symbol, CountdownTime | Annulla tutti gli ordini aperti del simbolo specificato alla fine del conto alla rovescia indicato. |
| GetForceOrders | Symbol | Ottieni gli ordini di liquidazione forzata dell'utente. |
| GetADLQuantile | Symbol | Ottieni la stima del quantile ADL per le posizioni. |
| GetAccountBalanceV3 | Ottieni il saldo dell'account futures (V3). | |
| GetAccountInformationV3 | Recupera le informazioni sull'account corrente (V3). | |
| GetPositionInformationV3 | Symbol | Recupera le informazioni sulla posizione corrente (V3). |
| GetCommissionRate | Symbol | Ottieni il tasso di commissione dell'utente. |
| GetAccountConfig | Ottieni la configurazione dell'account corrente. | |
| GetSymbolConfig | Symbol | Ottieni la configurazione del simbolo. |
| GetOrderRateLimit | Ottieni il limite di frequenza degli ordini dell'utente. | |
| GetApiTradingStatus | Symbol | Ottieni indicatori delle regole quantitative di trading API. |
| ChangeMultiAssetsMode | MultiAssetsMargin | Modifica la modalità multi-asset dell'utente. Modalità Multi-Asset: true; Modalità Single-Asset: false. |
| GetMultiAssetsMode | Recupera la modalità multi-asset corrente dell'utente. | |
| SetFeeBurn | FeeBurn | Modifica lo stato di burn della commissione BNB dell'utente. |
| GetFeeBurn | Ottieni lo stato di riduzione delle commissioni BNB dell'utente. | |
| CreateListenKey | Avvia un nuovo stream di dati utente. Lo stream verrà chiuso dopo 60 minuti a meno che non venga inviato un keepalive. | |
| KeepAliveListenKey | Mantieni attivo un flusso di dati utente per evitare un timeout. | |
| CloseListenKey | Chiude un user data stream. |
I messaggi Binance Futures 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 nei server Binance, le versioni di Indy precedenti a Rad Studio 10.1 non saranno in grado di connettersi ai Test Server. Questo problema non interessa la Enterprise Edition o se la versione di Indy è stata aggiornata all'ultima disponibile.