API Kraken | WebSockets 公共 API

连接

URL: wss://ws.kraken.com (v1) 或 wss://ws.kraken.com/v2 (v2,推荐)

该组件现在通过 Version 属性支持 WebSocket API v2(默认值为 2)。将 Kraken.Version := 1 设置为使用旧版 v1 端点。

 

套接字打开后,您可以通过发送订阅请求消息来订阅公共频道。

 

一般注意事项

 

支持的交易对

ADA/CAD, ADA/ETH, ADA/EUR, ADA/USD, ADA/XBT, ATOM/CAD, ATOM/ETH, ATOM/EUR, ATOM/USD, ATOM/XBT, BCH/EUR, BCH/USD, BCH/XBT, DASH/EUR, DASH/USD, DASH/XBT, EOS/ETH, EOS/EUR, EOS/USD, EOS/XBT, GNO/ETH, GNO/EUR, GNO/USD, GNO/XBT, QTUM/CAD, QTUM/ETH, QTUM/EUR, QTUM/USD, QTUM/XBT, USDT/USD, ETC/ETH, ETC/XBT, ETC/EUR, ETC/USD, ETH/XBT, ETH/CAD, ETH/EUR, ETH/GBP, ETH/JPY, ETH/USD, LTC/XBT, LTC/EUR, LTC/USD, MLN/ETH, MLN/XBT, REP/ETH, REP/XBT, REP/EUR, REP/USD, STR/EUR, STR/USD, XBT/CAD, XBT/EUR, XBT/GBP, XBT/JPY, XBT/USD, BTC/CAD, BTC/EUR, BTC/GBP, BTC/JPY, BTC/USD, XDG/XBT, XLM/XBT, DOGE/XBT, STR/XBT, XLM/EUR, XLM/USD, XMR/XBT, XMR/EUR, XMR/USD, XRP/XBT, XRP/CAD, XRP/EUR, XRP/JPY, XRP/USD, ZEC/XBT, ZEC/EUR, ZEC/JPY, ZEC/USD, XTZ/CAD, XTZ/ETH, XTZ/EUR, XTZ/USD, XTZ/XBT

 

方法

Ping

客户端可向服务器发送 ping 以确认连接是否存活,服务器以 pong 响应。

这是应用层 ping,与 WebSocket 标准中由服务器发起的默认 ping 不同。

行情

Ticker 信息包含给定货币对的最优买价和卖价、24 小时成交量、最新成交价、成交量加权平均价等。每次有成交或一批成交发生时,都会发布一条 Ticker 消息。

调用 SubscribeTicker 方法订阅行情数据:


SubscribeTicker(['XBT/USD']);

如果订阅成功,将调用 OnKrakenSubscribed 事件:


procedure OnKrakenSubscribed(Sender: TObject;ChannelId: Integer; Pair, Subscription, ChannelName: string; 
  ReqID:Integer);
begin
  DoLog('#subscribed: ' + Subscription + ' ' + Pair + ' ' + ChannelName);
end;

调用 UnSubscribeTicker 方法取消订阅:


UnSubscribeTicker(['XBT/USD']);

若取消订阅成功,将调用 OnKrakenUnSubscribed 事件:


procedure OnKrakenUnSubscribed(Sender: TObject; ChannelId: Integer; Pair, Subscription: string; 
  ReqID: Integer);
begin
  DoLog('#unsubscribed: ' + Subscription + ' ' + Pair);
end;

如果订阅/取消订阅时发生错误,将调用 OnKrakenSubscriptionError 事件。


procedure OnKrakenSubscriptionError(Sender: TObject; ErrorMessage, Pair, Subscription: string; 
  ReqID: Integer);
begin
  DoLog('#subscription error: ' + ErrorMessage);
end;

行情更新将通过 OnKrakenData 事件通知。

 
[
  0,
  {
    "a": [
      "5525.40000",
      1,
      "1.000"
    ],
    "b": [
      "5525.10000",
      1,
      "1.000"
    ],
    "c": [
      "5525.10000",
      "0.00398963"
    ],
    "v": [
      "2634.11501494",
      "3591.17907851"
    ],
    "p": [
      "5631.44067",
      "5653.78939"
    ],
    "t": [
      11493,
      16267
    ],
    "l": [
      "5505.00000",
      "5505.00000"
    ],
    "h": [
      "5783.00000",
      "5783.00000"
    ],
    "o": [
      "5760.70000",
      "5763.40000"
    ]
  },
  "ticker",
  "XBT/USD"
]

OHLC

订阅 OHLC 后,将首先发送最后一根有效蜡烛的快照(不考虑结束时间),然后推送当前正在运行的蜡烛的更新。例如,如果订阅了 1 分钟蜡烛,而 5 分钟内没有成交,则会发布 5 分钟前最后一根 1 分钟蜡烛的快照。可以使用结束时间来判断该蜡烛是否为旧蜡烛。

调用 SubscribeOHLC 方法订阅 OHLC,需传入交易对和时间间隔。


SubscribeOHLC(['XBT/USD'], kin1min);

如果订阅成功,将调用 OnKrakenSubscribed 事件:


procedure OnKrakenSubscribed(Sender: TObject;ChannelId: Integer; Pair, Subscription, ChannelName: string; 
  ReqID:Integer);
begin
  DoLog('#subscribed: ' + Subscription + ' ' + Pair + ' ' + ChannelName);
end;

调用 UnSubscribeOHLC 方法取消订阅:

 
UnSubscribeOHLC(['XBT/USD'], kin1min);

若取消订阅成功,将调用 OnKrakenUnSubscribed 事件:

 
procedure OnKrakenUnSubscribed(Sender: TObject; ChannelId: Integer; Pair, Subscription: string; 
  ReqID: Integer);
begin
  DoLog('#unsubscribed: ' + Subscription + ' ' + Pair);
end;

如果订阅/取消订阅时发生错误,将调用 OnKrakenSubscriptionError 事件。

 
procedure OnKrakenSubscriptionError(Sender: TObject; ErrorMessage, Pair, Subscription: string; 
  ReqID: Integer);
begin
  DoLog('#subscription error: ' + ErrorMessage);
end;

OHLC 更新将在 OnKrakenData 事件中通知。


[
  42,
  [
    "1542057314.748456",
    "1542057360.435743",
    "3586.70000",
    "3586.70000",
    "3586.60000",
    "3586.60000",
    "3586.68894",
    "0.03373000",
    2
  ],
  "ohlc-5",
  "XBT/USD"
]

交易

货币对的交易数据流。

调用 SubscribeTrade 方法订阅交易数据源。

 
SubscribeTrade(['XBT/USD']);

如果订阅成功,将调用 OnKrakenSubscribed 事件:

 
procedure OnKrakenSubscribed(Sender: TObject;ChannelId: Integer; Pair, Subscription, ChannelName: 
  string; ReqID:Integer);
begin
  DoLog('#subscribed: ' + Subscription + ' ' + Pair + ' ' + ChannelName);
end;

调用 UnSubscribeTrade 方法取消订阅:

 
UnSubscribeTrade(['XBT/USD']);

若取消订阅成功,将调用 OnKrakenUnSubscribed 事件:

  
procedure OnrakenUnSubscribed(Sender: TObject; ChannelId: Integer; Pair, Subscription: string; 
  ReqID: Integer);
begin
  DoLog('#unsubscribed: ' + Subscription + ' ' + Pair);
end;

如果订阅/取消订阅时发生错误,将调用 OnKrakenSubscriptionError 事件。

   
procedure OnKrakenSubscriptionError(Sender: TObject; ErrorMessage, Pair, Subscription: string; 
  ReqID: Integer);
begin
  DoLog('#subscription error: ' + ErrorMessage);
end;

成交更新将在 OnKrakenData 事件中通知。


[
  0,
  [
    [
      "5541.20000",
      "0.15850568",
      "1534614057.321597",
      "s",
      "l",
      ""
    ],
    [
      "6060.00000",
      "0.02455000",
      "1534614057.324998",
      "b",
      "l",
      ""
    ]
  ],
  "trade",
  "XBT/USD"
]

订单簿

订单簿层级。订阅时,将在指定深度发布一个快照,快照之后将发布层级更新。

调用 SubscribeBook 方法订阅 Book,需传入货币对和深度。

  
SubscribeBook(['XBT/USD'], kde10);

如果订阅成功,将调用 OnKrakenSubscribed 事件:

   
procedure OnKrakenSubscribed(Sender: TObject;ChannelId: Integer; Pair, Subscription, ChannelName: string; 
  ReqID:Integer);
begin
  DoLog('#subscribed: ' + Subscription + ' ' + Pair + ' ' + ChannelName);
end;

调用 UnSubscribeBook 方法取消订阅:

    
UnSubscribeBook(['XBT/USD'], kde10);

若取消订阅成功,将调用 OnKrakenUnSubscribed 事件:

  
procedure OnKrakenUnSubscribed(Sender: TObject; ChannelId: Integer; Pair, Subscription: string; 
  ReqID: Integer);
begin
  DoLog('#unsubscribed: ' + Subscription + ' ' + Pair);
end;

如果订阅/取消订阅时发生错误,将调用 OnKrakenSubscriptionError 事件。

   
procedure OnKrakenSubscriptionError(Sender: TObject; ErrorMessage, Pair, Subscription: string; ReqID: Integer);
begin
  DoLog('#subscription error: ' + ErrorMessage);
end;

书单更新将通过 OnKrakenData 事件通知。

 
[
  0,
  {
    "as": [
      [
          "5541.30000",
          "2.50700000",
          "1534614248.123678"
      ],
      [
          "5541.80000",
          "0.33000000",
          "1534614098.345543"
      ],
      [
          "5542.70000",
          "0.64700000",
          "1534614244.654432"
      ]
    ],
    "bs": [
      [
          "5541.20000",
          "1.52900000",
          "1534614248.765567"
      ],
      [
          "5539.90000",
          "0.30000000",
          "1534614241.769870"
      ],
      [
          "5539.50000",
          "5.00000000",
          "1534613831.243486"
      ]
    ]
  },
  "book-100",
  "XBT/USD"
]

价差

展价数据流,显示已订阅资产对的最佳买卖价。买量和卖量也是消息的一部分。

调用 SubscribeSpread 方法订阅展价数据流。

   
SubscribeSpread(['XBT/USD']);

如果订阅成功,将调用 OnKrakenSubscribed 事件:

   
procedure OnKrakenSubscribed(Sender: TObject;ChannelId: Integer; Pair, Subscription, ChannelName: string; 
  ReqID:Integer);
begin
  DoLog('#subscribed: ' + Subscription + ' ' + Pair + ' ' + ChannelName);
end;

调用 UnSubscribeSpread 方法取消订阅:

    
UnSubscribeSpread(['XBT/USD']);

若取消订阅成功,将调用 OnKrakenUnSubscribed 事件:

   
procedure OnrakenUnSubscribed(Sender: TObject; ChannelId: Integer; Pair, Subscription: string; 
  ReqID: Integer);
begin
  DoLog('#unsubscribed: ' + Subscription + ' ' + Pair);
end;

如果订阅/取消订阅时发生错误,将调用 OnKrakenSubscriptionError 事件。

  
procedure OnKrakenSubscriptionError(Sender: TObject; ErrorMessage, Pair, Subscription: string; 
  ReqID: Integer);
begin
  DoLog('#subscription error: ' + ErrorMessage);
end;

价差更新将通过 OnKrakenData 事件通知。

 
[
  0,
  [
    "5698.40000",
    "5700.00000",
    "1542057299.545897",
    "1.01234567",
    "0.98765432"
  ],
  "spread",
  "XBT/USD"
]

其他方法

您可以通过一个方法订阅/取消订阅所有频道:

  
SubscribeAll(['XBT/USD']);
 
UnSubscribeAll(['XBT/USD']);

如果所有已订阅频道均已订阅,OHLC 间隔值为 1。

 

 

 

事件

OnConnect:当 WebSocket 客户端连接到服务器时。

OnKrakenConnect:在 WebSocket 成功连接且服务器发送系统状态后调用。

OnKrakenSystemStatus:当系统状态变化时调用。

OnKrakenSubscribed:成功订阅频道后调用。

OnKrakenUnSubscribed: 在成功取消订阅某个频道后调用。

OnKrakenSubscriptionError: 在订阅/取消订阅出错时调用。

OnKrakenData:每次频道订阅有更新时调用。