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.
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';
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"
]
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"
]
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
CancelOrder('Order Id');
Ejemplo de respuesta del servidor
{
"event": "cancelOrderStatus",
"status": "ok"
}