binance订单管理

htzpubme  于 2021-09-08  发布在  Java
关注(0)|答案(1)|浏览(464)

我从binance api获得了btcusdt的订单历史数据。根据binance api关于“如何管理本地订单”,首先使用websocket获取和缓冲数据,然后使用api获取订单数据,并使用lastorderid清除我缓冲的过时数据。然而,我得到的数据是2个csv文件。深度捕捉和深度更新。所以我试着按照api的要求去做。第一部分已经完成了,因为它说使用存储在depth\u update中的websocket获取缓冲区数据。通过使用depth_snap中的lastorderid,我试图完成第二部分,删除过时的数据,结果发现lastorderid无法使用。
我检查了lastorderid,发现lastorderid在深度捕捉和深度更新中没有重叠。所以我想我应该使用深度捕捉数据而不是深度更新。然而,数据之间的时间间隔约为40分钟,这太长了。
我确实检查了时间戳以确保数据在同一日期
如何使用此深度捕捉和深度更新创建订单簿数据?我检查了时间戳和csv文件(不同日期的depth_snap.csv)之间的lastorderid和pu(以前数据的lastorderid),发现它们是有序的。因为数据是连续的,所以只使用深度捕捉并生成订单数据可以吗?

whlutmcx

whlutmcx1#

您应该添加代码以明确您所做的工作。
根据我自己的经验,以下是您应该如何使用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延迟,您会在某些时候观察到巨大的延迟峰值,特别是当您在市场上有重大变动时。

相关问题