Integrazione dell'API WebSocket di trading OKX in Delphi
Il componente TsgcWSAPI_OKX fornisce un accesso Delphi completo all'exchange OKX tramite un'interfaccia WebSocket unificata. Supporta stream pubblici di dati di mercato, canali privati di account e operazioni di trading dirette inclusi ordini market e limit, tutto tramite un singolo componente. Questa guida descrive ogni metodo disponibile, le proprietà di configurazione e include esempi di codice funzionanti per iniziare a fare trading su OKX da Delphi.
Indice
Canali pubblici WebSocket
I canali pubblici inviano in stream i dati di mercato a tutti i client connessi senza richiedere autenticazione. Questi canali coprono strumenti, ticker, order book, trade, candlestick, funding rate e altro. Ogni metodo subscribe ha un corrispondente metodo unsubscribe.
Canali dati di mercato
| Metodo |
Descrizione |
SubscribeInstruments |
Sottoscrive gli aggiornamenti degli strumenti (nuovi listing, delisting, cambi di stato). |
SubscribeTicker |
Sottoscrive i dati ticker in tempo reale per uno strumento specifico. |
SubscribeOpenInterest |
Sottoscrive gli aggiornamenti di open interest per contratti futures e perpetual. |
SubscribeCandlestick |
Sottoscrive i dati candle/kline all'intervallo specificato. |
SubscribeTrades |
Sottoscrive i dati di esecuzione operazioni in tempo reale per uno strumento specifico. |
SubscribeOrderBook |
Sottoscrive gli aggiornamenti del libro degli ordini con profondita' configurabile. |
Canali di prezzo e indici
| Metodo |
Descrizione |
SubscribeEstimatedPrices |
Sottoscrive il prezzo di consegna/esercizio stimato per opzioni e futures. |
SubscribeMarkPrice |
Sottoscrive gli aggiornamenti del mark price utilizzati per calcoli di margine e PnL. |
SubscribeMarkPriceCandlestick |
Sottoscrive i dati candle basati sul mark price. |
SubscribePriceLimit |
Sottoscrive gli aggiornamenti dei limiti di prezzo (price band) per uno strumento. |
SubscribeIndexCandlestick |
Sottoscrive i dati candle basati sul prezzo dell'indice. |
SubscribeIndexTicker |
Sottoscrive gli aggiornamenti del ticker dell'indice per un indice specifico. |
SubscribeFundingRate |
Sottoscrive gli aggiornamenti del funding rate per contratti perpetual. |
Canali opzioni e sistema
| Metodo |
Descrizione |
SubscribeOptionSummary |
Sottoscrive i dati riepilogativi delle opzioni (greche, volatilita', open interest). |
SubscribeStatus |
Sottoscrive gli aggiornamenti dello stato del sistema (manutenzione, interruzioni). |
SubscribePublicStructureBlockTrades |
Sottoscrive i dati pubblici delle operazioni a blocchi strutturati. |
SubscribeBlockTickers |
Sottoscrive gli aggiornamenti del ticker delle operazioni a blocchi. |
Nota: Ogni metodo Subscribe elencato sopra ha un corrispettivo
UnSubscribe (ad esempio
UnSubscribeTicker) per smettere di ricevere aggiornamenti per quel canale.
Canali privati WebSocket
I canali privati richiedono autenticazione e forniscono aggiornamenti in tempo reale sullo stato del tuo account, posizioni, ordini e attivita' di trading algoritmico. Imposta OKX.IsPrivate := True e fornisci credenziali API valide prima di sottoscrivere questi canali.
Canali account e posizioni
| Metodo |
Descrizione |
SubscribeAccount |
Sottoscrive gli aggiornamenti di saldo e equity dell'account in tempo reale. |
SubscribePositions |
Sottoscrive gli aggiornamenti delle posizioni (apertura, chiusura, variazioni di size). |
SubscribeBalanceAndPosition |
Sottoscrive gli aggiornamenti combinati di saldo e posizione in un unico flusso. |
SubscribePositionRisk |
Sottoscrive gli avvisi di rischio sulle posizioni (vicinanza alla liquidazione). |
SubscribeAccountGreeks |
Sottoscrive gli aggiornamenti delle greche a livello di account per le posizioni in opzioni. |
Canali ordini e algo
| Metodo |
Descrizione |
SubscribeOrdini |
Sottoscrive gli aggiornamenti di stato degli ordini (piazzato, eseguito, annullato, parzialmente eseguito). |
SubscribeOrdiniAlgo |
Sottoscrive gli aggiornamenti degli ordini algoritmici (trigger, TP/SL, trailing stop). |
SubscribeAdvanceAlgo |
Sottoscrive gli aggiornamenti degli ordini algoritmici avanzati (iceberg, TWAP). |
Canali RFQ e block trade
| Metodo |
Descrizione |
SubscribeRfqs |
Sottoscrive gli aggiornamenti delle richieste di quotazione (RFQ) per il block trading. |
SubscribeQuotes |
Sottoscrive gli aggiornamenti delle quotazioni in risposta alle RFQ. |
SubscribePrivateStructureBlockTrades |
Sottoscrive gli aggiornamenti privati delle operazioni a blocchi strutturati. |
Canali grid trading
| Metodo |
Descrizione |
SubscribeSpotGridAlgoOrdini |
Sottoscrive gli aggiornamenti degli ordini algoritmici grid spot. |
SubscribeContactGridAlgoOrdini |
Sottoscrive gli aggiornamenti degli ordini algoritmici grid su contratti. |
SubscribeGridPositions |
Sottoscrive gli aggiornamenti delle posizioni di grid trading. |
SubscribeGridSubOrdini |
Sottoscrive gli aggiornamenti dei singoli sub-ordini all'interno di una strategia grid. |
Operazioni di trading WebSocket
OKX supporta il piazzamento e la gestione degli ordini direttamente sulla connessione WebSocket, offrendo una latenza inferiore rispetto alle chiamate REST API. Questi metodi richiedono autenticazione.
| Metodo |
Descrizione |
PlaceOrder |
Piazza un nuovo ordine con pieno controllo su tutti i parametri. |
PlaceMarketOrder |
Piazza un ordine market che viene eseguito immediatamente al miglior prezzo disponibile. |
PlaceLimitOrder |
Piazza un ordine limit a un prezzo specificato, eseguito solo quando il mercato raggiunge quel prezzo. |
CancelOrder |
Annulla un ordine esistente tramite il suo order ID. |
AmendOrder |
Modifica un ordine esistente (cambia prezzo o size senza annullare e ripiazzare). |
Nota: Il trading via WebSocket offre una latenza molto inferiore rispetto al piazzamento di ordini via REST. OKX elabora gli ordini WebSocket con priorita' maggiore, rendendolo il metodo preferito per strategie sensibili alla latenza.
Esempio di codice
L'esempio seguente mostra come creare e configurare il componente TsgcWSAPI_OKX, autenticarsi con l'API, sottoscrivere i dati ticker, monitorare gli ordini e piazzare ordini market e limit direttamente sulla connessione WebSocket.
var
oClient: TsgcWebSocketClient;
oOKX: TsgcWSAPI_OKX;
begin
// Create the WebSocket client
oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
// Configure API credentials
oOKX.OKX.ApiKey := 'your_api_key';
oOKX.OKX.ApiSecret := 'your_api_secret';
oOKX.OKX.Passphrase := 'your_passphrase';
oOKX.OKX.IsPrivate := True;
// Connect to OKX
oClient.Active := True;
// Subscribe to BTC-USDT ticker
oOKX.SubscribeTicker('BTC-USDT');
// Subscribe to order updates for spot trading
oOKX.SubscribeOrdini(okxitSpot);
// Place a market buy order
oOKX.PlaceMarketOrder(okxosBuy, 'BTC-USDT', 0.001);
// Place a limit buy order
oOKX.PlaceLimitOrder(okxosBuy, 'BTC-USDT', 0.001, 30000);
end;
Gestione degli eventi WebSocket
Assegna un gestore di evento per elaborare i messaggi WebSocket in arrivo. L'evento fornisce il nome del canale e il payload JSON per ogni aggiornamento.
procedure TForm1.OnOKXEvent(Sender: TObject;
const aChannel, aData: string);
begin
// aChannel identifies the subscription (e.g., 'tickers', 'orders')
// aData contains the JSON payload
Memo1.Lines.Add(aChannel + ': ' + aData);
end;
Uso della modalita' demo trading
OKX fornisce un ambiente demo di trading per i test. Abilitalo impostando OKX.IsDemo := True prima di connetterti. La modalita' demo si connette a un endpoint separato con saldi simulati, permettendoti di testare la tua logica di trading senza rischiare fondi reali.
// Enable demo trading mode
oOKX.OKX.IsDemo := True;
oOKX.OKX.IsPrivate := True;
oClient.Active := True;
Configurazione e note
Proprieta' di configurazione
Tutta la configurazione e' accessibile tramite la proprieta' OKX del componente.
| Proprietà |
Tipo |
Descrizione |
OKX.ApiKey |
Stringa |
La tua API key OKX. Generala dalla pagina API Management di OKX. |
OKX.ApiSecret |
Stringa |
Il tuo API secret OKX. Mantieni questo valore al sicuro e non esporlo mai in codice lato client. |
OKX.Passphrase |
Stringa |
La passphrase impostata quando hai creato l'API key. Richiesta per tutte le richieste autenticate. |
OKX.IsDemo |
Booleano |
Quando impostata su True, si connette all'ambiente demo di trading OKX con fondi simulati. Default False. |
OKX.IsPrivate |
Booleano |
Quando impostata su True, abilita l'autenticazione sulla connessione WebSocket. Richiesta per i canali privati e le operazioni di trading. Default False. |
Note importanti
Security: Non inserire mai hard-coded la tua API key, secret o passphrase nel codice di produzione. Usa un file di configurazione sicuro o variabili d'ambiente per memorizzare le credenziali.
- Imposta
OKX.IsPrivate := True prima di connetterti se hai bisogno di canali privati o di operazioni di trading. I canali pubblici funzionano senza autenticazione.
- Usa
OKX.IsDemo := True per fare test contro l'ambiente demo OKX prima di andare in produzione. La modalita' demo utilizza credenziali API separate generate appositamente per la piattaforma demo.
- Il metodo
SubscribeOrdini accetta un parametro instrument type (ad esempio okxitSpot, okxitFutures, okxitSwap, okxitOption) per filtrare gli aggiornamenti per tipo di trading.
- I metodi di comodo
PlaceMarketOrder e PlaceLimitOrder accettano un parametro order side (ad esempio okxosBuy, okxosSell), instrument ID, size e (per gli ordini limit) il prezzo.
- Il metodo
AmendOrder ti permette di modificare prezzo o size di un ordine attivo senza annullarlo e ripiazzarlo, riducendo la latenza ed evitando la perdita della posizione in coda.
- OKX applica limiti di rate sui messaggi WebSocket. Consulta la documentazione ufficiale OKX per i limiti correnti sulle subscription e sulle richieste di trading al secondo.
- Le subscription WebSocket sono persistenti per tutta la durata della connessione. Se la connessione cade, dovrai sottoscrivere di nuovo dopo aver riconnesso.