获取有关市场的订单簿

时间:2018-01-20 06:50:48

标签: python api

如何使用binance API获取所有BTC和ETH订单书籍?现在我使用python

pairs = ["TRXETH", "TRXBTC"]
for pair in pairs:
    # get market depth
    depth = client.get_order_book(symbol=pair)

但是如果我需要从binance获取所有200个符号订单书,这种方式不起作用,因为它需要大约5分钟才能得到它,我认为服务器可以阻止我的API以获取垃圾邮件请求。有可能更快地完成吗?

1 个答案:

答案 0 :(得分:0)

好吧,我在使用Rest API设置您正在使用的get_order_book调用中的深度限制时遇到了麻烦。但是我可以使用Binance的Websockets从订单簿中检索实时信息,您可以为每个符号定义一个websocket,然后启动套接字并让回调函数找出如何处理返回的信息

这样的事情:

    # Callback function
    def depth_message(msg):
        print ("Symbol: ", msg['s'])
        if msg['b']:
            print ("Buy: ", msg['b'])
        if msg['a']:
            print ("Sell: ", msg['a'])`


    # Creating the websocket and starting it.
    bm = websockets.BinanceSocketManager(client)
    time.sleep(3)
    bm.start_depth_socket('BTCUSDT', depth_message)
    bm.start_depth_socket('ETHUSDT', depth_message)
    .
    .
    .
    bm.start_depth_socket('TRXBTC', depth_message)
    bm.start()

输出,我举例说明的回调函数应该如下所示: `

Symbol:  BTCUSDT
Buy:  [['7480.00000000', '0.37765500', []]]
Sell:  [['7480.63000000', '0.01329200', []]]
Symbol:  ETHUSDT
Buy:  [['591.53000000', '0.27000000', []], ['591.50000000', '0.06706000', []], ['589.90000000', '7.81833000', []], ['587.86000000', '0.39787000', []]]
Sell:  [['593.80000000', '0.66726000', []]

一旦你执行了这个例子,你应该看到一个恒定的输出,如上面的那个显示在你的控制台中,直到你停止程序,你不需要一个循环,因为套接字不断为你定义的每个符号更新一个插座。您可以使用循环为每个符号设置所需的所有websocket调用。

您可以在我的示例中阅读有关Binance Websockets here的更多信息以及我使用this Binance Python API。

希望这有帮助!