coinbase-api - plus - gdax coinbase pro
Cómo obtener una oferta/pregunta/precio en tiempo real de la fuente websocket de GDAX (1)
Si uso estos parámetros en el mensaje de suscripción :
params = {
"type": "subscribe",
"channels": [{"name": "ticker", "product_ids": ["BTC-EUR"]}]
}
Cada vez que se ejecuta un nuevo intercambio (y se puede ver en http://www.gdax.com ), recibo este tipo de mensaje desde el socket web:
{
u''best_ask'': u''3040.01'',
u''best_bid'': u''3040'',
u''last_size'': u''0.10000000'',
u''price'': u''3040.00000000'',
u''product_id'': u''BTC-EUR'',
u''sequence'': 2520531767,
u''side'': u''sell'',
u''time'': u''2017-09-16T16:16:30.089000Z'',
u''trade_id'': 4138962,
u''type'': u''ticker''
}
Justo después de este mensaje en particular, obtuve un mensaje en https://api.gdax.com/products/BTC-EUR/ticker , y obtuve esto:
{
"trade_id": 4138962,
"price": "3040.00000000",
"size": "0.10000000",
"bid": "3040",
"ask": "3040.01",
"volume": "4121.15959844",
"time": "2017-09-16T16:16:30.089000Z"
}
Los datos actuales son los mismos de socket web en comparación con la solicitud de obtención .
A continuación encontrará un script de prueba completo que implementa un socket web con este ticker.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Test for websockets."""
from websocket import WebSocketApp
from json import dumps, loads
from pprint import pprint
URL = "wss://ws-feed.gdax.com"
def on_message(_, message):
"""Callback executed when a message comes.
Positional argument:
message -- The message itself (string)
"""
pprint(loads(message))
print
def on_open(socket):
"""Callback executed at socket opening.
Keyword argument:
socket -- The websocket itself
"""
params = {
"type": "subscribe",
"channels": [{"name": "ticker", "product_ids": ["BTC-EUR"]}]
}
socket.send(dumps(params))
def main():
"""Main function."""
ws = WebSocketApp(URL, on_open=on_open, on_message=on_message)
ws.run_forever()
if __name__ == ''__main__'':
main()
El documento de la API no recomienda el sondeo en /ticker
punto final /ticker
, y recomienda usar el flujo websocket para escuchar el mensaje de coincidencia
Pero la respuesta de coincidencia solo proporciona un price
y un side
(venta / compra)
¿Cómo puedo recrear los datos del ticker (precio, consulta y oferta) del feed websocket?
{
“price”: “333.99”,
“size”: “0.193”,
“bid”: “333.98”,
“ask”: “333.99”,
“volume”: “5957.11914015”,
“time”: “2015-11-14T20:46:03.511254Z”
}
El punto final del ticker
y la fuente websocket devuelven un ''precio'', pero supongo que no es lo mismo. ¿El price
del punto final del ticker
un tipo de promedio en el tiempo?
¿Cómo puedo calcular el valor de la Bid
, Ask
valor?