I canali WebSocket sono divisi in due categorie: canali pubblici e canali privati.
È possibile configurare le seguenti proprietà nella proprietà OKX.
Quando il client si connette con successo ai server OKX, viene attivato l'evento OnOKXConnect . Se si verifica un errore durante il tentativo di connessione, l'evento OnOKXError verrà attivato con i dettagli dell'errore.
Dopo che l'evento OnOKXConnect viene attivato, è possibile iniziare a inviare e ricevere messaggi dai server OKX.
oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
oOKX.OKX.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oOKX.OKX.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oOKX.OKX.Passphrase := 'secret_passphrase';
oClient.Active := True;
procedure OnOKXConnect(Sender: TObject; aMessage, aCode, aRawMessage: string);
begin
DoLog('#OKX Connected');
end;
procedure OnOKXError(Sender: TObject; aCode, aMessage, aRawMessage: string);
begin
DoLog('#error: ' + aMessage);
end;
Il feed websocket fornisce aggiornamenti in tempo reale dei dati di mercato per ordini e trade. Il feed websocket ha alcuni canali pubblici come ticker, trade...
È possibile sottoscriversi ai seguenti canali pubblici:
| Method | Description |
| SubscribeInstruments | L'elenco completo degli strumenti verrà inviato per la prima volta dopo la sottoscrizione. Successivamente, gli strumenti verranno inviati in caso di modifiche allo stato dello strumento (come la consegna di FUTURES, l'esercizio di OPTION, la quotazione di nuovi contratti/coppie di trading, la sospensione delle negoziazioni, ecc.). |
| SubscribeTicker | Recupera l'ultimo prezzo negoziato, il prezzo bid, il prezzo ask e il volume di scambi delle ultime 24 ore degli strumenti. I dati vengono aggiornati ogni 100 ms. |
| SubscribeOpenInterest | Recupera l'open interest. I dati verranno inviati ogni 3 secondi. |
| SubscribeCandlestick | Recupera i dati delle candele di uno strumento. La frequenza di push è l'intervallo più veloce, con push dei dati ogni 500ms. |
| SubscribeTrades | Recupera i dati dei trade recenti. I dati vengono inviati ogni volta che avviene un trade. |
| SubscribeEstimatedPrices |
Recupera il prezzo di consegna/esercizio stimato dei contratti FUTURES e delle OPTION. Solo il prezzo stimato di consegna/esercizio verrà inviato tramite push un'ora prima della consegna/esercizio, e verrà inviato tramite push in caso di qualsiasi variazione di prezzo. |
| SubscribeMarkPrice | Recupera il prezzo mark. I dati vengono inviati ogni 200 ms quando il prezzo mark cambia, e ogni 10 secondi quando il prezzo mark non cambia. |
| SubscribeMarkPriceCandlestick | Recupera i dati candlestick del prezzo mark. I dati verranno inviati ogni 500 ms. |
| SubscribePriceLimit | Recuperare il prezzo massimo di acquisto e il prezzo minimo di vendita dello strumento. I dati vengono inviati ogni 5 secondi quando ci sono variazioni nei limiti, e non vengono inviati in assenza di variazioni. |
| SubscribeOrderBook |
Recupera i dati del book degli ordini. Utilizzare books per 400 livelli di profondità, book5 per 5 livelli di profondità, bbo-tbt tick-by-tick con 1 livello di profondità, books50-l2-tbt tick-by-tick con 50 livelli di profondità, e books-l2-tbt per tick-by-tick con 400 livelli di profondità.
|
| SubscribeOptionSummary | Recupera informazioni dettagliate sui prezzi di tutti i contratti OPTION. I dati verranno inviati tutti in una volta. |
| SubscribeFundingRate | Recupera il tasso di finanziamento. I dati verranno inviati ogni 30-90 secondi. |
| SubscribeIndexCandlestick | Recupera i dati candlestick dell'indice. I dati verranno inviati ogni 500 ms. |
| SubscribeIndexTicker | Recupera i dati dei ticker dell'indice |
| SubscribeStatus | Ottieni lo stato della manutenzione del sistema e ricevi notifiche push quando lo stato cambia. Prima sottoscrizione: "Invia gli ultimi dati modificati"; ogni volta che si verifica un cambiamento di stato, invia il contenuto modificato |
| SubscribePublicStructureBlockTrades | I dati vengono inviati ogni volta che si verifica un block trade. |
| SubscribeBlockTickers | Recupera l'ultimo volume di block trading nelle ultime 24 ore. I dati verranno inviati quando attivati da un evento di esecuzione di transazioni. Inoltre, verranno inviati anche con un intervallo di 5 minuti in base alla granularità della sottoscrizione. |
| SubscribeAllTrades | Recupera tutti i dati delle operazioni. I dati verranno inviati ogni volta che si verifica un'operazione. |
| SubscribeLiquidationOrders | Recupera gli ordini di liquidazione. I dati verranno trasmessi quando è presente un ordine di liquidazione. |
| SubscribeADLWarning | Recupera i dati di avviso ADL. I dati verranno inviati quando il rischio di auto-deleveraging aumenta. |
| SubscribeEconomicCalendar | Recupera gli eventi del calendario economico. I dati verranno inviati quando vi sono aggiornamenti agli eventi economici. |
| SubscribePublicBlockTrades | Recuperare le negoziazioni a blocchi pubbliche. I dati verranno inviati ogni volta che si verifica una negoziazione a blocchi. |
| SubscribeOptionTrades | Recupera i dati delle negoziazioni su opzioni. I dati verranno inviati ogni volta che si verifica una negoziazione su opzioni. |
| SubscribeCallAuctionDetails | Recupera i dettagli dell'asta a chiamata. I dati verranno inviati quando ci sono aggiornamenti alle informazioni sull'asta a chiamata. |
oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
oOKX.OKX.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oOKX.OKX.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oOKX.OKX.Passphrase := 'secret_passphrase';
oClient.Active := True;
procedure OnOKXConnect(Sender: TObject; aMessage, aCode, aRawMessage: string);
begin
oOKX.SubscribeInstruments(okxitFutures);
end;
Inclusi il canale account, il canale ordini e il canale posizioni, ecc. -- richiedono l'accesso.
È possibile iscriversi ai seguenti canali Privati:
| Method | Description |
| SubscribeAccount | Recupera le informazioni dell'account. I dati verranno inviati quando attivati da eventi come l'inserimento di un ordine, l'annullamento di un ordine, l'esecuzione di una transazione, ecc. Verranno inoltre inviati a intervalli regolari in base alla granularità della sottoscrizione. |
| SubscribePositions | Recupera le informazioni sulla posizione. Lo snapshot iniziale verrà inviato in base alla granularità della sottoscrizione. I dati verranno inviati quando attivati da eventi quali l'inserimento/annullamento di ordini, e verranno inviati anche a intervalli regolari in base alla granularità della sottoscrizione. |
| SubscribeBalanceAndPosition | Recupera le informazioni sul saldo e sulla posizione dell'account. I dati vengono inviati quando attivati da eventi quali ordini eseguiti, trasferimenti di fondi. |
| SubscribeOrders | Recupera le informazioni sull'ordine. I dati non verranno inviati alla prima sottoscrizione. I dati verranno inviati solo quando attivati da eventi come il piazzamento/annullamento di un ordine. |
| SubscribeOrdersAlgo | Recupera gli ordini algo (include ordini trigger, ordini oco, ordini condizionali). I dati non vengono inviati al primo abbonamento. I dati vengono inviati solo quando attivati da eventi come il piazzamento/cancellazione di ordini. |
| SubscribeAdvanceAlgo |
Recupera gli ordini algo avanzati (inclusi ordine Iceberg, ordine TWAP, ordine Trailing). I dati verranno inviati al primo abbonamento. I dati verranno inviati quando attivati da eventi quali l'inserimento/annullamento di un ordine. |
| SubscribePositionRisk | Questo canale push viene utilizzato solo come avviso di rischio e non è raccomandato come giudizio di rischio per il trading strategico Nel caso in cui il mercato non si muova violentemente, potrebbe esserci la possibilità che la posizione sia stata liquidata nello stesso momento in cui viene inviato questo messaggio. |
| SubscribeAccountGreeks | Recupera le informazioni greche dell'account. I dati verranno inviati quando attivati da eventi quali aumento/diminuzione delle posizioni o saldo in contanti nell'account, e verranno inviati anche a intervalli regolari in base alla granularità della sottoscrizione. |
| SubscribeRfqs | Recupera gli Rfq. |
| SubscribeQuotes |
Recuperare le quotazioni. |
| SubscribePrivateStructureBlockTrades | Recupero delle operazioni di struttura a blocchi. |
| SubscribeSpotGridAlgoOrders | Recupera gli ordini di algoritmi spot grid. I dati vengono inviati alla prima sottoscrizione. I dati vengono inviati quando attivati da eventi come il piazzamento/annullamento di un ordine. |
| SubscribeContactGridAlgoOrders | Recupera gli ordini algo a griglia per contratti. I dati verranno inviati alla prima iscrizione. I dati verranno inviati quando attivati da eventi come il piazzamento o l'annullamento di un ordine. |
| SubscribeGridPositions | Recupera le posizioni della griglia. I dati vengono inviati al primo abbonamento. I dati vengono inviati quando attivati da eventi come il piazzamento/cancellazione di ordini. |
| SubscribeGridSubOrders | Recupera gli ordini secondari della griglia. I dati vengono inviati al primo abbonamento. I dati vengono inviati quando attivati da eventi come il piazzamento di ordini. |
| SubscribeFills | Recupera i dati degli ordini eseguiti. I dati verranno inviati quando un ordine viene eseguito. |
| SubscribeDepositInfo | Recupera le informazioni sui depositi. I dati verranno inviati quando si verifica un aggiornamento dello stato di un deposito. |
| SubscribeWithdrawalInfo | Recupera le informazioni sui prelievi. I dati verranno inviati quando vi è un aggiornamento dello stato di un prelievo. |
oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
oOKX.OKX.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oOKX.OKX.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oOKX.OKX.Passphrase := 'secret_passphrase';
oClient.Active := True;
procedure OnOKXConnect(Sender: TObject; aMessage, aCode, aRawMessage: string);
begin
oOKX.SubscribeOrders(okxitFutures, 'BTC-USD', 'BTC-USD-200329');
end;
Il WebSocket Trade richiede l'autenticazione.
È possibile inserire un ordine solo se si dispone di fondi sufficienti. Di seguito una tabella con i parametri della richiesta:
| Parametro | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| id | String | Sì | Identificatore univoco del messaggio Fornito dal client. Verrà restituito nel messaggio di risposta per identificare la richiesta corrispondente. Una combinazione di caratteri alfanumerici con distinzione tra maiuscole e minuscole, tutti numeri o tutte lettere, fino a 32 caratteri. |
| > instId | String | Sì | ID strumento, ad es. BTC-USD-190927-5000-C |
| > tdMode | String | Sì | Modalità di trading Modalità margine isolated crossModalità senza margine cash |
| > ccy | String | No | Valuta del margine Applicabile solo agli ordini cross MARGIN in Single-currency margin. |
| > clOrdId | String | No | ID dell'ordine fornito dal client Una combinazione di caratteri alfanumerici con distinzione tra maiuscole e minuscole, tutti numeri o tutte lettere, fino a 32 caratteri. |
| > tag | String | No | Tag dell'ordine Una combinazione di caratteri alfanumerici sensibili alle maiuscole, tutti numeri o tutte lettere fino a 16 caratteri. |
| > lato | String | Sì | Lato dell'ordine, buy sell |
| > posSide | String | Opzionale | Lato della posizione Il valore predefinito è net nella modalità net È richiesto nella modalità long/short e può essere solo long o short.Applicabile solo a FUTURES/SWAP. |
| > ordType | String | Sì | Tipo di ordinemarket: ordine di mercatolimit: ordine limitepost_only: ordine Post-onlyfok: ordine Fill-or-killioc: ordine Immediate-or-canceloptimal_limit_ioc :Ordine di mercato con ordine immediate-or-cancel
|
| > sz | String | Sì | Quantità da acquistare o vendere. |
| > px | String | Opzionale | Price Applicabile solo agli ordini limit,post_only,fok,ioc . |
| > reduceOnly | Boolean | No | Se ridurre solo la posizione o meno, true false, il valore predefinito è falseApplicabile solo agli ordini MARGIN , e agli ordini FUTURES/SWAP in modalità net Applicabile solo al margine Single-currency margin e Multi-currency margin |
| > tgtCcy | String | No | Tipo di quantitàbase_ccy: Valuta base ,quote_ccy: Valuta di quotazioneApplicabile solo a SPOT negoziato con ordine MarketL'impostazione predefinita è quote_ccy per l'acquisto, base_ccy per la vendita
|
| > banAmend | Boolean | No | Se impedire la modifica degli ordini spot o meno, true o false, il valore predefinito è false. Il piazzamento degli ordini non riuscirà se il saldo non è sufficiente quando banAmend è true. Applicabile solo agli ordini di mercato SPOT |
Esempio di inserimento ordine
È possibile inserire un ordine solo se si dispone di fondi sufficienti.
// Place Martket Order
TsgcWSAPI_OKX1.PlaceMarketOrder(okxosBuy, 'ETH-BTC', 1);
// Place Limit Order
TsgcWSAPI_OKX1.PlaceLimitOrder(okxosBuy, 'ETH-BTC', 1, 0.25);
Esempio di cancellazione ordine
Annulla un ordine incompleto
TsgcWSAPI_OKX1.CancelOrder('ETH-BTC', '457589362405027840');
Modifica ordine
Modifica un ordine incompleto.
TsgcWSAPI_OKX1.AmendOrder('ETH-BTC', '457589362405027840', '', 2);
L'API WebSocket Trade supporta anche operazioni batch per il piazzamento, la cancellazione e la modifica di più ordini contemporaneamente. Queste operazioni richiedono l'Autenticazione.
| Method | Description |
| BatchPlaceOrders | Invia più ordini in una singola richiesta. È possibile inviare un massimo di 20 ordini alla volta. |
| BatchCancelOrders | Annulla più ordini in una singola richiesta. È possibile annullare al massimo 20 ordini alla volta. |
| BatchAmendOrders | Modifica più ordini incompleti in una singola richiesta. È possibile modificare un massimo di 20 ordini alla volta. |
| MassCancelOrders | Annulla in massa tutti gli ordini in sospeso per un tipo di strumento specifico. |