API Kraken | WebSockets Private API

Conexión

URL: wss://ws-auth.kraken.com (v1) o wss://ws-auth.kraken.com/v2 (v2, recomendado)

El componente ahora admite WebSocket API v2 mediante la propiedad Version (predeterminado: 2).

 

Una vez que el socket está abierto, puede suscribirse a canales de datos privados enviando un mensaje de solicitud de suscripción autenticada.

 

Autenticación

El cliente de la API debe solicitar un "token" de autenticación mediante el siguiente endpoint de la API REST "GetWebSocketsToken" para conectarse a los endpoints privados de WebSockets. El token debe usarse dentro de los 15 minutos siguientes a su creación. El token no caduca una vez que se mantiene una conexión a un mensaje privado de la API de WebSockets (openOrders o ownTrades).

Para obtener un Token de Websockets, se deben establecer una API Key y un API Secret en el componente de opciones de Kraken, la clave de API proporcionada por Kraken en su cuenta.

  
Kraken.ApiKey := 'api key';
Kraken.ApiSecret := 'api secret';

Métodos

OwnTrades

Obtenga una lista de sus propias operaciones; en la primera suscripción, recibe una lista de las últimas 50 operaciones

  
SubscribeOwnTrades();

Posteriormente, puede cancelar la suscripción de OwnTrades llamando al método UnSubscribeOwnTrades

  
UnSubscribeOwnTrades();

Ejemplo de respuesta del servidor


[
  [
    {
      "TDLH43-DVQXD-2KHVYY": {
        "cost": "1000000.00000",
        "fee": "600.00000",
        "margin": "0.00000",
        "ordertxid": "TDLH43-DVQXD-2KHVYY",
        "ordertype": "limit",
        "pair": "XBT/EUR",
        "postxid": "OGTT3Y-C6I3P-XRI6HX",
        "price": "100000.00000",
        "time": "1560520332.914664",
        "type": "buy",
        "vol": "1000000000.00000000"
      }
    }
  ],
  "ownTrades"
]

Órdenes Abiertas

Feed que muestra todas las órdenes abiertas pertenecientes al usuario autenticado mediante la clave API. El snapshot inicial proporcionará la lista de todas las órdenes abiertas y, a continuación, se enviarán las actualizaciones de la lista de órdenes abiertas. Para las actualizaciones de cambio de estado, como 'closed', los campos orderid y status estarán presentes en el payload

  
SubscribeOpenOrders();

Más adelante, puede cancelar la suscripción a OpenOrders llamando al método UnSubscribeOpenOrders

  
UnSubscribeOpenOrders();

Ejemplo de respuesta del servidor


[
  [
    {
      "OGTT3Y-C6I3P-XRI6HX": {
        "cost": "0.00000",
        "descr": {
          "close": "",
          "leverage": "0:1",
          "order": "sell 0.00001000 XBT/EUR @ limit 9.00000 with 0:1 leverage",
          "ordertype": "limit",
          "pair": "XBT/EUR",
          "price": "9.00000",
          "price2": "0.00000",
          "type": "sell"
        },
        "expiretm": "0.000000",
        "fee": "0.00000",
        "limitprice": "9.00000",
        "misc": "",
        "oflags": "fcib",
        "opentm": "0.000000",
        "price": "9.00000",
        "refid": "OKIVMP-5GVZN-Z2D2UA",
        "starttm": "0.000000",
        "status": "open",
        "stopprice": "0.000000",
        "userref": 0,
        "vol": "0.00001000",
        "vol_exec": "0.00000000"
      }
    }
  ],
  "openOrders"
]

Añadir orden

Enviar una nueva Orden a Kraken

  
oKrakenOrder := TsgcWSKrakenOrder.Create;
oKrakenOrder.Pair := 'XBT/USD';
oKrakenOrder._Type := kosBuy;
oKrakenOrder.OrderType := kotMarket;
oKrakenOrder.Volume := 1;
AddOrder(oKrakenOrder);

Lista de parámetros de orden


pair = asset pair
type = type of order (buy/sell)
ordertype = order type:
    market
    limit (price = limit price)
    stop-loss (price = stop loss price)
    take-profit (price = take profit price)
    stop-loss-profit (price = stop loss price, price2 = take profit price)
    stop-loss-profit-limit (price = stop loss price, price2 = take profit price)
    stop-loss-limit (price = stop loss trigger price, price2 = triggered limit price)
    take-profit-limit (price = take profit trigger price, price2 = triggered limit price)
    trailing-stop (price = trailing stop offset)
    trailing-stop-limit (price = trailing stop offset, price2 = triggered limit offset)
    stop-loss-and-limit (price = stop loss price, price2 = limit price)
    settle-position
price = price (optional.  dependent upon ordertype)
price2 = secondary price (optional.  dependent upon ordertype)
volume = order volume in lots
leverage = amount of leverage desired (optional.  default = none)
oflags = comma delimited list of order flags (optional):
    viqc = volume in quote currency (not available for leveraged orders)
    fcib = prefer fee in base currency
    fciq = prefer fee in quote currency
    nompp = no market price protection
    post = post only order (available when ordertype = limit)
starttm = scheduled start time (optional):
    0 = now (default)
    +<n> = schedule start time <n> seconds from now
    <n> = unix timestamp of start time
expiretm = expiration time (optional):
    0 = no expiration (default)
    +<n> = expire <n> seconds from now
    <n> = unix timestamp of expiration time
userref = user reference id.  32-bit signed number.  (optional)
validate = validate inputs only.  do not submit order (optional)
optional closing order to add to system when order gets filled:
    close[ordertype] = order type
    close[price] = price
    close[price2] = secondary price

Ejemplo de respuesta del servidor


{
  "descr": "buy 0.01770000 XBTUSD @ limit 4000",
  "event": "addOrderStatus",
  "status": "ok",
  "txid": "ONPNXH-KMKMU-F4MR5V"
}

Cancelar orden

Cancelar orden

  
CancelOrder('Order Id');

Ejemplo de respuesta del servidor


{
  "event": "cancelOrderStatus",
  "status": "ok"
}