CEX API 更新 sgcWebSockets

· 功能

CEX.IO 是知名的加密货币交易所,通过 WebSocket API 提供实时行情和交易功能。TsgcWSAPI_Cex 组件为连接 CEX.IO 提供原生 Delphi 接口,支持订阅实时 Ticker、管理订单簿、下单和撤单,以及处理账户持仓——所有操作均通过持久 WebSocket 连接完成。

目录

概述

CEX.IO WebSocket API 提供两类功能:无需认证即可推送行情数据的公有频道,以及需要 API 密钥认证的用于交易和账户管理的私有方法TsgcWSAPI_Cex 组件封装了这两类功能,使您只需一个 Delphi 组件即可处理从实时报价到订单执行的所有操作。

快速入门

要连接到 CEX.IO,可在窗体上放置 TsgcWebSocketClientTsgcWSAPI_Cex 组件,或在代码中创建它们。将客户端赋给 API 组件,配置凭证,然后激活连接。

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;
注意:Ticker 订阅等公有方法无需 API 凭证。仅当您需要使用下单或查询余额等私有(认证)方法时,才需设置 ApiKeyApiSecret

公有 WebSocket 方法

公有方法无需认证即可接收实时行情数据,非常适合构建仪表盘、图表工具或价格提醒系统。

方法 说明
SubscribeTickers 订阅货币对(如 BTC/USD)的实时 Ticker 更新。
SubscribeChart 订阅指定交易对的图表/K 线数据。
SubscribePair 订阅指定交易对的更新。
UnSubscribePair 取消订阅之前已订阅的交易对。
SubscribeOrderBook 订阅交易对的订单簿快照和增量更新。
UnSubscribeOrderBook 取消订阅订单簿更新。

订阅 Ticker

SubscribeTickers 方法为货币对开启实时价格数据流。第一个参数为基础货币,第二个参数为计价货币。

// Subscribe to BTC/USD ticker updates
oCex.SubscribeTickers('BTC', 'USD');

使用订单簿

订单簿订阅同时提供初始快照和后续增量更新。使用 SubscribeOrderBook 开始接收数据,不再需要时调用 UnSubscribeOrderBook

// Subscribe to the BTC/USD order book
oCex.SubscribeOrderBook('BTC', 'USD');
// Later, unsubscribe when no longer needed
oCex.UnSubscribeOrderBook('BTC', 'USD');

私有 WebSocket 方法(需认证)

私有方法需通过 CEX.IO API 密钥和私钥进行认证。组件自动处理认证握手,但必须在调用任何私有方法之前先调用 Authenticate

方法 说明
Authenticate 使用 API 密钥和私钥对 WebSocket 会话进行认证。
GetTicker 获取指定货币对的当前 Ticker。
GetBalance 获取所有币种的账户余额。
Ping 发送保活 ping 以维持 WebSocket 连接。
GetOpenOrders 获取账户当前所有挂单。
PlaceOrder 以指定数量和价格下新的买入或卖出订单。
CancelReplaceOrder 原子性地撤销现有订单并以新订单替代。
GetOrderRequest 按标识符获取指定订单的详情。
CancelOrderRequest 按标识符撤销指定订单。
GetArchivedOrders 获取历史(已完成/已撤销)订单。
OpenPosition 开立新的保证金交易仓位。
GetPosition 获取指定开仓持仓的详情。
GetOpenPositions 获取当前所有开仓的保证金持仓。
ClosePosition 平掉现有保证金交易仓位。

代码示例

以下示例演示完整流程:连接到 CEX.IO,订阅 Ticker,下买入订单,并获取账户余额。

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;
// Subscribe to ticker
oCex.SubscribeTickers('BTC', 'USD');
// Place an order
oCex.PlaceOrder('BTC', 'USD', 0.01, 30000, ctBuy);
// Get balance
oCex.GetBalance;

下单

PlaceOrder 方法接受基础货币、计价货币、数量、价格和订单类型。订单类型参数使用 ctBuyctSell 枚举值。

// Place a buy order: 0.01 BTC at $30,000
oCex.PlaceOrder('BTC', 'USD', 0.01, 30000, ctBuy);
// Place a sell order: 0.05 ETH at $2,000
oCex.PlaceOrder('ETH', 'USD', 0.05, 2000, ctSell);

管理持仓

CEX.IO 通过持仓管理方法支持保证金交易。您可以直接通过 WebSocket 连接开仓、查询和平仓。

// Retrieve all open positions
oCex.GetOpenPositions;
// Close a specific position by ID
oCex.ClosePosition(positionId);

事件与回调

当从交易所接收到数据时,TsgcWSAPI_Cex 组件会触发事件。为处理程序分配 Ticker 更新、订单确认和余额信息等传入消息的处理逻辑。

事件 触发时机
OnCexMessage 从 CEX.IO WebSocket 服务器接收到任何消息时。
OnCexConnect 与 CEX.IO 的 WebSocket 连接建立时。
OnCexDisconnect WebSocket 连接关闭时。
OnCexError 从交易所收到错误响应时。

配置与注意事项

API 凭证

从 CEX.IO 账户设置中获取 API 密钥和私钥。安全存储凭证,切勿在生产代码中硬编码。建议从加密配置文件或环境变量中加载。

连接管理

WebSocket 连接由 TsgcWebSocketClient 组件管理。设置 Active := True 进行连接,Active := False 断开连接。若通过客户端的重连属性进行配置,组件支持自动重连。

认证流程

调用任何私有方法之前必须完成认证。在连接建立后调用 Authenticate,或在 OnCexConnect 事件中处理。组件会自动根据 API 密钥和私钥生成所需的 HMAC 签名。

保活

定期调用 Ping 方法以保持认证会话活跃。CEX.IO 可能在超时后断开空闲会话。

提示:订阅多个交易对时,每个订阅相互独立。您可以在同一连接上同时订阅 BTC/USD、ETH/USD 等多个交易对。