从 sgcWebSockets 2022.10.0 起,支持 Bybit 加密货币交易所。支持以下 API:
- WebSocket API:连接到 WebSocket 服务器,提供实时行情更新、账户变动等。
- REST API:发送 HTTP 请求获取市场数据、下单、账户信息……
已实现以下产品 API:
- Spot(V3)
- USDT Perpetual(Futures V2)
- Inverse Perpetual(Futures V2)
- Inverse Futures(Futures V2)
属性
您可以在 Bybit 属性中配置以下选项。
- ApiKey:在您的 Bybit 账户中申请新的 API 密钥,将其复制到此属性。若设置了 APIKey,客户端将连接到 WebSocket 私有服务器;若为空,则连接到公有服务器。
- ApiSecret:API 的私钥值。
- SignatureExpires:签名过期的秒数(默认 10 秒)。
- TestNet:启用后将连接到 Bybit TestNet 演示账户(默认禁用)。
连接
当客户端成功连接到 Bybit 服务器时,将触发 OnConnect 事件。触发后即可开始向 Bybit 服务器发送和接收消息。若连接到私有 WebSocket 频道,必须等待 OnBybitAuthentication 事件触发并确认 success 参数为 true,方可订阅任何频道。
客户端支持多种 API,使用 BybitClient 属性设置所需的 API:
- bybSpot
- bybInversePerpetual
- bybUSDTPerpetual
- bybInverseFutures
以下是连接到 WebSocket Spot 私有 API 的示例。
oClient := TsgcWebSocketClient.Create(nil);
oBybit := TsgcWSAPI_Bybit.Create(nil);
oBybit.Client := oClient;
oBybit.Bybit.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oBybit.Bybit.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oBybit.BybitClient := bybSpot;
oClient.Active := True;
procedure OnConnect(Connection: TsgcWSConnection);
begin
DoLog('#Bybit Connected');
end;
成功连接到 Spot WebSocket 服务器后,即可订阅 WebSocket 频道——访问 SPOT 属性,然后调用可用的订阅/取消订阅方法。
Bybit API 对象列表如下:
- SPOT
- INVERSE_PERPETUAL
- USDT_PERPETUAL
- INVERSE_FUTURES
订阅 WebSocket 频道
以下是成功认证后订阅 Spot 私有 WebSocket 频道的示例。
oClient := TsgcWebSocketClient.Create(nil);
oBybit := TsgcWSAPI_Bybit.Create(nil);
oBybit.Client := oClient;
oBybit.Bybit.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oBybit.Bybit.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oBybit.BybitClient := bybSpot;
oClient.Active := True;
procedure OnBybitAuthentication(Sender: TObject; aSuccess: Boolean; const aError, aRawMessage: string)
begin
if aSuccess then
begin
oClient.SubscribeOrder;
oClient.SubscribeStopOrder;
end;
end;
下单
以下是 USDT 永续合约市价单的示例。
oClient := TsgcWebSocketClient.Create(nil);
oBybit := TsgcWSAPI_Bybit.Create(nil);
oBybit.Client := oClient;
oBybit.Bybit.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oBybit.Bybit.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oBybit.BybitClient := bybUSDTPerpetual;
oBybit.USDT_PERPETUAL.REST_API.PlaceMarketOrder('BTCUSDT', bbosBuy, 1);
