CEX.IO è un exchange di criptovalute ben consolidato che offre dati di mercato in tempo reale e capacità di trading attraverso la sua API WebSocket. Il componente TsgcWSAPI_Cex fornisce un'interfaccia Delphi nativa per connettersi a CEX.IO, permettendo agli sviluppatori di sottoscriversi agli aggiornamenti live dei ticker, gestire libri degli ordini, piazzare e annullare ordini, e gestire posizioni dell'account, tutto su una connessione WebSocket persistente.
Indice
- Panoramica
- Per iniziare
- Metodi WebSocket pubblici
- Metodi WebSocket privati (autenticati)
- Esempio di codice
- Eventi e callback
- Configurazione e note
Panoramica
L'API WebSocket di CEX.IO fornisce due categorie di funzionalità: canali pubblici che trasmettono dati di mercato senza autenticazione e metodi privati che richiedono l'autenticazione con api key per il trading e la gestione dell'account. Il componente TsgcWSAPI_Cex avvolge entrambe le categorie, dandoti un singolo componente Delphi per gestire tutto, dai feed di prezzi live all'esecuzione degli ordini.
Per iniziare
Per connetterti a CEX.IO, trascina un TsgcWebSocketClient e un componente TsgcWSAPI_Cex sulla tua form o creali nel codice. Assegna il client al componente API, configura le tue credenziali e attiva la connessione.
oClient := TsgcWebSocketClient.Create(nil);
oCex := TsgcWSAPI_Cex.Create(nil);
oCex.Client := oClient;
oCex.Cex.ApiKey := 'your_api_key';
oCex.Cex.ApiSecret := 'your_api_secret';
oClient.Active := True;
Nota: i metodi pubblici come le sottoscrizioni ai ticker non richiedono credenziali API. Devi impostare ApiKey e ApiSecret solo se intendi usare metodi privati (autenticati) come piazzare ordini o controllare i saldi.
Metodi WebSocket pubblici
I metodi pubblici ti permettono di ricevere dati di mercato in tempo reale senza autenticazione. Sono ideali per costruire dashboard, strumenti di charting o sistemi di allerta sui prezzi.
| Metodo | Descrizione |
|---|---|
SubscribeTickers |
Sottoscrive agli aggiornamenti dei ticker in tempo reale per una coppia di valute (es. BTC/USD). |
SubscribeChart |
Sottoscrive ai dati chart/candle per una data coppia di trading. |
SubscribePair |
Sottoscrive agli aggiornamenti per una specifica coppia di trading. |
UnSubscribePair |
Annulla la sottoscrizione da una coppia di trading precedentemente sottoscritta. |
SubscribeOrderBook |
Sottoscrive agli snapshot del libro degli ordini e agli aggiornamenti incrementali per una coppia. |
UnSubscribeOrderBook |
Annulla la sottoscrizione dagli aggiornamenti del libro degli ordini. |
Sottoscrivere ai ticker
Il metodo SubscribeTickers apre uno stream live di dati di prezzo per una coppia di valute. Il primo parametro è la valuta base e il secondo è la valuta quote.
// Sottoscrive agli aggiornamenti del ticker BTC/USD
oCex.SubscribeTickers('BTC', 'USD');
Lavorare con il libro degli ordini
Le sottoscrizioni al libro degli ordini consegnano sia lo snapshot iniziale sia gli aggiornamenti incrementali successivi. Usa SubscribeOrderBook per iniziare a ricevere dati e UnSubscribeOrderBook quando non ne hai più bisogno.
// Sottoscrive al libro degli ordini BTC/USD
oCex.SubscribeOrderBook('BTC', 'USD');
// Più tardi, annulla la sottoscrizione quando non serve più
oCex.UnSubscribeOrderBook('BTC', 'USD');
Metodi WebSocket privati (autenticati)
I metodi privati richiedono l'autenticazione tramite la tua api key e il secret di CEX.IO. Il componente gestisce l'handshake di autenticazione automaticamente, ma devi chiamare Authenticate prima di invocare qualsiasi metodo privato.
| Metodo | Descrizione |
|---|---|
Authenticate |
Autentica la sessione WebSocket usando la tua api key e il secret. |
GetTicker |
Recupera il ticker corrente per una specifica coppia di valute. |
GetBalance |
Recupera il saldo dell'account per tutte le valute. |
Ping |
Invia un ping keepalive per mantenere la connessione WebSocket. |
GetOpenOrders |
Recupera tutti gli ordini attualmente aperti sull'account. |
PlaceOrder |
Piazza un nuovo ordine buy o sell con importo e prezzo specificati. |
CancelReplaceOrder |
Annulla un ordine esistente e lo sostituisce con uno nuovo in modo atomico. |
GetOrderRequest |
Recupera i dettagli di un ordine specifico tramite il suo identificatore. |
CancelOrderRequest |
Annulla un ordine specifico tramite il suo identificatore. |
GetArchivedOrders |
Recupera gli ordini storici (completati/annullati). |
OpenPosition |
Apre una nuova posizione di margin trading. |
GetPosition |
Recupera i dettagli di una specifica posizione aperta. |
GetOpenPositions |
Recupera tutte le posizioni margin attualmente aperte. |
ClosePosition |
Chiude una posizione esistente di margin trading. |
Esempio di codice
L'esempio seguente dimostra un workflow completo: connessione a CEX.IO, sottoscrizione a un ticker, piazzamento di un ordine di acquisto e recupero del saldo dell'account.
oClient := TsgcWebSocketClient.Create(nil);
oCex := TsgcWSAPI_Cex.Create(nil);
oCex.Client := oClient;
oCex.Cex.ApiKey := 'your_api_key';
oCex.Cex.ApiSecret := 'your_api_secret';
oClient.Active := True;
// Sottoscrive al ticker
oCex.SubscribeTickers('BTC', 'USD');
// Piazza un ordine
oCex.PlaceOrder('BTC', 'USD', 0.01, 30000, ctBuy);
// Ottieni il saldo
oCex.GetBalance;
Piazzamento ordini
Il metodo PlaceOrder accetta la valuta base, la valuta quote, l'importo, il prezzo e il tipo di ordine. Il parametro del tipo di ordine usa i valori di enumerazione ctBuy o ctSell.
// Piazza un ordine di acquisto: 0.01 BTC a $30.000
oCex.PlaceOrder('BTC', 'USD', 0.01, 30000, ctBuy);
// Piazza un ordine di vendita: 0.05 ETH a $2.000
oCex.PlaceOrder('ETH', 'USD', 0.05, 2000, ctSell);
Gestione delle posizioni
CEX.IO supporta il margin trading tramite metodi di gestione delle posizioni. Puoi aprire, interrogare e chiudere posizioni direttamente via connessione WebSocket.
// Recupera tutte le posizioni aperte
oCex.GetOpenPositions;
// Chiude una specifica posizione tramite ID
oCex.ClosePosition(positionId);
Eventi e callback
Il componente TsgcWSAPI_Cex genera eventi quando i dati vengono ricevuti dall'exchange. Assegna handler per elaborare i messaggi in arrivo come aggiornamenti dei ticker, conferme di ordini e informazioni sui saldi.
| Evento | Si attiva quando |
|---|---|
OnCexMessage |
Viene ricevuto un qualsiasi messaggio dal server WebSocket di CEX.IO. |
OnCexConnect |
La connessione WebSocket a CEX.IO viene stabilita. |
OnCexDisconnect |
La connessione WebSocket viene chiusa. |
OnCexError |
Viene ricevuta una risposta di errore dall'exchange. |
Configurazione e note
Credenziali API
Ottieni la tua api key e il secret dalle impostazioni del tuo account CEX.IO. Memorizza le credenziali in modo sicuro e non scriverle mai a codice nel codice di produzione. Considera di caricarle da un file di configurazione cifrato o da variabili d'ambiente.
Gestione della connessione
La connessione WebSocket è gestita dal componente TsgcWebSocketClient. Imposta Active := True per connettere e Active := False per disconnettere. Il componente supporta la riconnessione automatica se configurata tramite le proprietà di riconnessione del client.
Flusso di autenticazione
L'autenticazione deve essere completata prima di chiamare qualsiasi metodo privato. Chiama Authenticate dopo che la connessione è stabilita, oppure gestiscila all'interno dell'evento OnCexConnect. Il componente genera automaticamente la firma HMAC richiesta dalla tua api key e dal secret.
Keepalive
Usa periodicamente il metodo Ping per mantenere viva la sessione autenticata. CEX.IO può disconnettere le sessioni inattive dopo un periodo di timeout.
