coinbase-api - 如何从GDAX Websocket订阅源获取实时出价/要价/价格

标签 coinbase-api gdax-api

API文档不鼓励在/ticker端点上进行轮询,并建议使用websocket流来侦听匹配消息

但是匹配响应仅提供priceside(出售/购买)

如何从websocket提要中重新创建报价数据(价格,要价和出价)?

{
  “price”: “333.99”,
  “size”: “0.193”,
  “bid”: “333.98”,
  “ask”: “333.99”,
  “volume”: “5957.11914015”,
  “time”: “2015-11-14T20:46:03.511254Z”
}


ticker终结点和websocket提要均返回“价格”,但我想这是不一样的。来自price端点的ticker是一段时间内的某种平均值吗?

如何计算Bid值,Ask值?

最佳答案

如果我在订阅消息中使用以下参数:

params = {
    "type": "subscribe",
    "channels": [{"name": "ticker", "product_ids": ["BTC-EUR"]}]
}


每次执行新交易(并在http://www.gdax.com上可见)时,我都会从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'
}


收到此特定消息后,我在https://api.gdax.com/products/BTC-EUR/ticker上进行了操作,得到了:

{
  "trade_id": 4138962,
  "price": "3040.00000000",
  "size": "0.10000000",
  "bid": "3040",
  "ask": "3040.01",
  "volume": "4121.15959844",
  "time": "2017-09-16T16:16:30.089000Z"
}


与get请求相比,Web套接字中的当前数据相同。

请在下面找到使用此代码实现Web套接字的完整测试脚本。

#!/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()

关于coinbase-api - 如何从GDAX Websocket订阅源获取实时出价/要价/价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45543334/

相关文章:

node.js - 如何查看coinbase交易事件

coinbase-api - 如何在 coinbase api 中导入转换?

Python coinbase API 价格 float

php - Coinbase Pro API {"message":"invalid signature"}

ssl - 为什么 OpenSSL 中的 BIO_do_connect() 不能与 GDAX(又名 cloudflare)沙箱一起正常工作?

openssl - 如何将二进制 key 传递给 openssl

coinbase-api - GDAX API : getting status 'rejected' (reject_reason: post only) when buying

python - Websocket 到 Python 中的可用数据 - 从 GDAX websocket feed 获取价格

r - GDAX API 与 R : invalid signature