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é.
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';
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"
]
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"
]
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 un ordre
CancelOrder('Order Id');
Exemple de réponse du serveur
{
"event": "cancelOrderStatus",
"status": "ok"
}