【问题标题】:binance orderbook management币安订单簿管理
【发布时间】:2021-07-10 08:28:00
【问题描述】:

我从币安 api 获得了 BTCUSDT 的订单历史数据。根据有关“如何管理本地订单簿”的 binance api,首先使用 websocket 获取和缓冲数据,然后使用 api 获取订单簿数据,并使用 lastOrderId 删除我缓冲的过时数据。但是我得到的数据是 2 个 csv 文件。 depth_snap 和 depth_update。所以我试着做api告诉我要做的事情。第一部分已经完成,因为它说使用存储在 depth_update 中的 websocket 获取缓冲区数据。并通过使用 depth_snap 中的 lastOrderId 我尝试做第二部分,删除过时的数据,才意识到 lastOrderId 不能使用。

我检查了lastOrderId,发现lastOrderId在depth_snap和depth_update中没有重叠。所以我想我应该使用 depth_snap 数据而不是 depth_update。但是数据之间的时间间隔大约是 40 分钟,这太长了。

我确实检查了时间戳以确保数据在同一日期

如何使用 depth_snap 和 depth_update 创建订单数据? 我检查了时间戳和csv文件(不同日期的depth_snap.csv)之间的lastOrderId和pu(上一个数据的lastOrderId),发现它们是有序的。因为数据是连续的,所以只使用 depth_snap 并制作订单簿数据可以吗?

【问题讨论】:

    标签: python binance orderbook


    【解决方案1】:

    你应该添加代码来明确你做了什么。

    根据我自己的经验,以下是您应该如何使用 binance websocket:

    client = Client('PUBLICKEY')
    
    data = {}
    
    def spread(msg):
        latence = msg['data']['T']-time.time()*1000
        msg['lat'] = latence
    
        if np.abs(latence) < 500:
            msg['latence'] = False
        else:
            msg['latence'] = True
    
        with open('data/w'+msg['data']['s']+".dat", 'wb') as out:
            pickle.dump(msg, out)
    
        os.rename('data/w'+msg['data']['s']+".dat",'data/'+msg['data']['s']+".dat")
        print ("WEBSOCKET %s" % (round(latence)))
    
    bm = BinanceSocketManager(client)
    conn_key = bm.start_all_ticker_futures_socket(spread)
    bm.start()
    

    换句话说,你不应该在你的回调函数中做任何处理

    你应该在任何你喜欢的地方写入数据,并从它的其他地方处理。

    我知道这些指导方针可能看起来违反直觉,但如果不遵循这一点,我个人会遇到长达数十秒的延迟,并且会一直停留在过去而无法恢复。

    您还应该计算延迟以标记何时暂停操作。

    如果您随着时间的推移监控 Binance API 延迟,您有时会观察到巨大的延迟峰值,尤其是当您在市场上有大动作时。

    【讨论】:

    • 但我没有使用 binance websocket。我使用 binance api 下载了 depth_snap 和 depth_update。我要问的是如何将我下载的数据转换为订单数据
    • 您正在使用 websocket。 depthUpdate = 部分图书深度流。这是 websocket。
    • 不,我不是。我正在使用“POST /sapi/v1/futuresHistDataId”来获取与 websockets 不同的历史订单数据,因为它来自压缩数据。它只对那些请求币安许可的人开放
    • 确实,这是一个最近的功能,所以你是对的。在这种情况下,我只是建议切换并使用 websocket。根据币安文档,该 API 端点旨在“对策略、研究和分析进行回测和优化”。我不确定这是否适用于实时交易。
    • 是的,用于研究目的。我真的需要历史数据。可以忽略管理数据的第二部分并继续吗?
    猜你喜欢
    • 1970-01-01
    • 2021-07-11
    • 2019-09-10
    • 2021-05-23
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多