Cómo mantener un libro de órdenes válido

El feed del libro de órdenes de WebSocket proporciona todos los datos de mercado necesarios para mantener una copia local de un libro de órdenesde Kraken.

Por ejemplo, el feed del libro de órdenes para XBT / USD podría usarse para obtener y mantener el libro de órdenes para nuestro par de divisas Bitcoin/Dólar estadounidense, exactamente como se muestra el libro de órdenes en nuestraplataforma de trading.

El feed del libro de órdenes proporciona una captura instantánea inicial del libro de órdenes actual y luego transmite actualizaciones al libro de órdenes en tiempo real, por lo que un libro de órdenes actualizado a través del feed del libro de órdenes estará actualizado en todo momento.

Los detalles completos del formato JSON para el feed del libro de órdenes están disponibles en nuestra documentación de la API WebSocket.

Captura instantánea inicial del libro de órdenes

Después de suscribirse al feed del libro de ordenes, el primer mensaje de datos del mercado será una captura instantánea del libro de órdenes actual.

La captura instantánea del libro de órdenes incluye el libro de órdenes completo hasta la profundidad solicitada (suscrita), como el siguiente ejemplo del libro de órdenes XBT/USD a una profundidad de 10:

[0,{"as":[["5290.80000","1.00000000","1556724667.748660"],["5290.90000","4.49956524","1556724664.331028"],["5291.70000","1.00000000","1556724653.480504"],["5292.00000","0.95388940","1556724619.682690"],["5292.20000","1.51300000","1556724494.497326"],["5293.10000","0.69800000","1556724667.635414"],["5293.20000","2.00000000","1556724656.022756"],["5293.90000","2.83200000","1556724668.057687"],["5294.10000","0.99600000","1556724666.340462"],["5294.50000","5.00000000","1556724661.980996"]],"bs":[["5290.10000","1.43195600","1556724666.594179"],["5289.80000","2.00000000","1556724663.082526"],["5289.40000","0.49400000","1556724665.274827"],["5289.20000","0.89533312","1556724640.520134"],["5287.40000","3.23600000","1556724660.997516"],["5287.30000","3.33000000","1556724659.999108"],["5287.00000","10.20000000","1556724635.850932"],["5286.00000","3.86378703","1556724662.757360"],["5285.70000","6.40000000","1556724488.785281"],["5283.90000","0.50000000","1556723616.006805"]]}]

La captura instantánea incluye los mejores precios de oferta/demanda actuales, con sus volúmenes disponibles, y la fecha/hora en que el nivel de precios se actualizó más recientemente (como una marca de tiempo de UNIX en segundos a 6 lugares decimales).

Cambios de nivel de precio

Después de la captura instantánea inicial, los niveles de precios del libro de órdenes se modifican en tiempo real a través de los mensajes de actualización, inserción y eliminación.

Mensaje de actualización

Un mensaje de actualización actualiza el nivel de precio que ya existe en el libro de órdenes al proporcionar un nuevo volumen y marca de tiempo, como la siguiente actualización para el nivel de precio 5293.1 en el lado de las demandas del libro de órdenes:

[0,{"a":[["5293.10000","0.39800000","1556724673.104421"]]}]

Mientras que el precio sigue siendo el mismo (5293.1), el volumen disponible a ese precio cambia de 0.69800000 (según lo proporcionado por la captura instantánea inicial) a 0.39800000, y la nueva marca de tiempo para el nivel de precio refleja la fecha/hora en que se produjo el cambio.

Los mensaje de actualización solo modifican los niveles de precios que ya existen en el libro de órdenes; no agregan ni eliminan niveles de precios a/del libro de órdenes.

Mensaje de inserción

Un mensaje de inserción agrega un nuevo nivel de precio al libro de órdenes, tal como la siguiente inserción para el nivel de precio 5294.4 en el lado de demanda del libro de órdenes:

[0,{"a":[["5294.40000","0.99600000","1556724672.663220"]]}]

Cada mensaje de inserción incluye el nuevo nivel de precio (5294.4), el volumen disponible a ese precio (0.99600000) y la marca de tiempo en la que se actualizó más recientemente el nivel de precio.

Los mensaje de inserción cambian los niveles de precios dentro del libro de órdenes creando un nuevo nivel de precios, moviendo todos los niveles de precios subsiguientes (precios de oferta más bajos o precios de demanda más altos) hacia afuera, y eliminando el nivel de precios más externo del alcance del libro de órdenes.

Por ejemplo, de la captura instantánea inicial anterior, el mensaje de inserción:

[0,{"a":[["5294.40000","0.99600000","1556724672.663220"]]}]

agregaría el nivel de precio 5294.4 en el libro de órdenes de nivel 10 (el precio más alto de demanda), y movería el nivel de precios 5294.5 fuera del alcance del libro de órdenes (al mover 5294.5 al nivel 11).

Mensajes de eliminación

Un mensaje de eliminación elimina un nivel de precio del libro de órdenes, tal y como la siguiente eliminación para el nivel de precio 5294.1 en el lado de la demanda del libro de órdenes:

[0,{"a":[["5294.10000","0.00000000","1556724670.010241"]]}]

Los mensajes de eliminación incluyen el nivel de precio que ya no existe, siempre especifica un volumen disponible de 0.0 e incluye una marca de tiempo que indica la fecha/hora en que se eliminó el nivel de precios del libro de órdenes.

Los mensajes de eliminación cambian los niveles de precios dentro del libro de órdenes eliminando el nivel de precios afectados (del libro de órdenes por completo, no solo de la profundidad suscrita), moviendo todos los niveles de precios subsiguientes (precios de oferta más bajos o precios de demanda más altos) hacia adentro, y presionando el nuevo nivel de precios al alcance del libro de órdenes.

Tenga en cuenta que siempre se sigue inmediatamente una eliminación a una inserción que trae un nuevo nivel de precio al alcance en el nivel más externo (como el nivel 10 para una profundidad suscrita de 10).

Por ejemplo, desde la captura instantánea inicial anterior, el mensaje de eliminación/inserción:

[0,{"a":[["5294.10000","0.00000000","1556724670.010241"],["5294.70000","3.34000000","1556724653.951982"]]}]

eliminaría el nivel de precio 5294.1 del nivel 9 del libro de órdenes, movería el nivel de precio 5294.5 del nivel 10 al nivel 9, e inmediatamente agregaría el nuevo nivel de precio 5294.7 al nivel 10 del libro de órdenes (el nivel más lejano y el precio de demanda más alto para una profundidad de 10).

Recursos Adicionales

Más detalles sobre la lógica del libro de ordenes están disponibles a través de un ejemplo de transcripción del libro de órdenes y un código ejemplo de libro de órdenes.