Python websocket没有得到所有的d

2024-05-29 11:34:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个Python机器人程序,通过WebSocket收集Bitfinex开放式图书订单,但是我不是一次获取所有数据,而是一个一个地获取。以下是我的代码:

import json

from websocket import create_connection
ws = create_connection("wss://api.bitfinex.com/ws/1")
#ws.connect("wss://api2.bitfinex.com:3000/ws")
ws.send(json.dumps({
"event": "subscribe",
"channel": "book",
"symbol": "tBTCUSD",
"prec": "P1",
"freq": "F1",
"len": "25"
 }))


while True:
result = ws.recv()
result = json.loads(result)
print (result)
ws.close()

首先,我得到以下数据:

^{pr2}$

然后一个接一个,像这样:

[9479, 9245, 2, 2.01234792]

如何通过websocket而不是API一次获得完整的订单,如下所示:

[9479, [[9242, 3, 2.48234792], [9241, 4, 2.14994206], [9240, 7, 18.84], [9239, 4, 0.18569934], [9236, 4, 2.40599999], [9235, 2, 0.84793866], [9234, 3, 0.7], [9232, 1, 0.1], [9230, 5, 17.46637416], [9229, 1, 0.5], [9228, 2, 0.50405148], [9227, 1, 0.05410933], [9226, 3, 6.833112], [9225, 1, 1.2], [9224, 5, 2.44538683], [9222, 6, 8.21999999], [9221, 3, 1.12], [9220, 3, 2.022], [9219, 1, 7.04], [9218, 2, 0.40431586], [9217, 4, 5.68698009], [9216, 4, 2.86999999], [9215, 1, 0.09335208], [9214, 1, 6.1], [9213, 2, 2.02], [9246, 2, -0.042], [9247, 1, -1.079], [9249, 2, -1.20650001], [9250, 8, -42.96401676], [9251, 4, -8.99723363], [9253, 3, -0.02800001], [9254, 2, -0.48926159], [9255, 2, -2.5], [9256, 4, -10.30405436], [9258, 2, -6.75], [9259, 2, -0.04], [9260, 1, -0.6], [9262, 1, -0.25], [9263, 3, -7.8391], [9264, 1, -1.6], [9265, 2, -0.1606286], [9266, 2, -6.93685322], [9267, 6, -1.87947602], [9268, 4, -17.67527073], [9270, 6, -8.65613095], [9271, 2, -1.75519738], [9272, 6, -2.09804066], [9273, 1, -0.5], [9275, 3, -11.95653655], [9276, 1, -0.75519738]]]

Tags: 数据订单import程序comjsonwscreate
2条回答

从官方网站site

The pair list is continuously growing, to get the an up to date list you can query the symbols this endpoint: https://api.bitfinex.com/v1/symbols

因此,您可以使用接收到的每个新数据附加和更新列表,或者使用上面的api。。。在

它似乎工作正常。您收到的初始数据是“完整”的当前订单;下一个“逐个”消息是更新。在

无法告诉订阅每次都发送完整的订单;这将浪费Bitfinex的带宽。您必须自己在Python代码中应用更新。在

顺便说一句,我发现this client可能很有用;但是,您仍然需要自己应用更新。在

相关问题 更多 >

    热门问题