首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从GDAX websocket提要获取实时出价/要价/价格

如何从GDAX websocket提要获取实时出价/要价/价格
EN

Stack Overflow用户
提问于 2017-08-07 17:14:31
回答 1查看 9.2K关注 0票数 21

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

但是match响应只提供了一个price和一个side (卖/买)

如何从websocket提要重新创建自动收报机数据(价格、要价和出价)?

代码语言:javascript
复制
{
  “price”: “333.99”,
  “size”: “0.193”,
  “bid”: “333.98”,
  “ask”: “333.99”,
  “volume”: “5957.11914015”,
  “time”: “2015-11-14T20:46:03.511254Z”
}

ticker端点和websocket提要都返回一个“价格”,但我猜它是不同的。来自ticker端点的price是随时间推移的某种平均值吗?

如何计算Bid值,Ask值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-17 00:35:34

如果我在订阅消息中使用这些参数:

代码语言:javascript
复制
params = {
    "type": "subscribe",
    "channels": [{"name": "ticker", "product_ids": ["BTC-EUR"]}]
}

每次执行新的交易(在http://www.gdax.com上可见)时,我都会从web套接字收到这样的消息:

代码语言:javascript
复制
{
 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上做了一次get,我得到了这个:

代码语言:javascript
复制
{
  "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 socket。

代码语言:javascript
复制
#!/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()
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45543334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档