API Kraken | API WebSockets privée

Connexion

URL : wss://ws-auth.kraken.com (v1) ou wss://ws-auth.kraken.com/v2 (v2, recommandé)

Le composant prend désormais en charge l'API WebSocket v2 via la propriété Version (par défaut : 2).

 

Une fois le socket ouvert, vous pouvez vous abonner aux canaux de données privées en envoyant un message de requête d'abonnement authentifié.

 

Authentification

Le client API doit demander un « jeton » d'authentification via le point de terminaison REST API suivant « GetWebSocketsToken » pour se connecter aux points de terminaison privés WebSockets. Le jeton doit être utilisé dans les 15 minutes suivant sa création. Le jeton n'expire pas une fois qu'une connexion à un message privé de l'API WebSockets (openOrders ou ownTrades) est maintenue.

Pour obtenir un jeton WebSockets, une clé API et un secret API doivent être définis dans le composant Kraken Options, la clé API étant fournie par Kraken dans votre compte

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

Méthodes

OwnTrades

Obtenez une liste de vos propres trades ; lors du premier abonnement, vous obtenez une liste des 50 derniers trades

  
SubscribeOwnTrades();

Plus tard, vous pouvez vous désabonner de OwnTrades en appelant la méthode UnSubscribeOwnTrades

  
UnSubscribeOwnTrades();

Exemple de réponse du serveur


[
  [
    {
      "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"
]

Ordres ouverts

Flux affichant tous les ordres ouverts appartenant à l'utilisateur authentifié par la clé API. Le snapshot initial fournit la liste de tous les ordres ouverts, puis toute mise à jour de la liste des ordres ouverts est envoyée. Pour les mises à jour de changement de statut, telles que « closed », les champs orderid et status seront présents dans la charge utile

  
SubscribeOpenOrders();

Plus tard, vous pouvez vous désabonner des OpenOrders en appelant la méthode UnSubscribeOpenOrders

  
UnSubscribeOpenOrders();

Exemple de réponse du serveur


[
  [
    {
      "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"
]

Ajouter un ordre

Envoyer un nouvel ordre à Kraken

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

Liste des paramètres d'ordre


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

Exemple de réponse du serveur


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

Annuler l'ordre

Annuler un ordre

  
CancelOrder('Order Id');

Exemple de réponse du serveur


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