python cbpro API附加数据问题



这个脚本应该在两分钟的时间内每秒钟打印每个订单,但是csv文件只重复了同一行。csv的示例数据如下:

import cbpro
import time
import pandas as pd
import os
import json
public_client = cbpro.PublicClient()
res = json.dumps(public_client.get_product_ticker(product_id='BTC-USD'))
csv_file = "cbpro-test-1.csv"
df = pd.DataFrame()  
timeout = time.time() + 60*2 
while True:
converted = json.loads(res)
df = df.append(pd.DataFrame.from_dict(pd.json_normalize(converted), orient='columns'))
if time.time() > timeout:
break

df.to_csv(csv_file, index=False, encoding='utf-8')

下面是csv的一些示例输出:

trade_id,price,size,time,bid,ask,volume
127344793,32750.24,0.00113286,2021-01-29T06:18:58.637859Z,32750.24,32755.06,41795.68551358
127344793,32750.24,0.00113286,2021-01-29T06:18:58.637859Z,32750.24,32755.06,41795.68551358
127344793,32750.24,0.00113286,2021-01-29T06:18:58.637859Z,32750.24,32755.06,41795.68551358
127344793,32750.24,0.00113286,2021-01-29T06:18:58.637859Z,32750.24,32755.06,41795.68551358

编辑:我移动了公共客户端和res变量到循环内部,它有点工作,它跳过了第二数据现在看起来像这样:

127347670,32620.2,0.00307689,2021-01-29T06:33:50.16111Z,32610,32620.12,41966.5764529
127347670,32620.2,0.00307689,2021-01-29T06:33:50.16111Z,32610,32620.12,41966.5764529
127347671,32614.11,0.00146359,2021-01-29T06:33:52.491186Z,32610,32610.01,41966.5764529
127347671,32614.11,0.00146359,2021-01-29T06:33:52.491186Z,32610,32610.01,41966.5764529

从06:33:50到06:33:52,文件的其余部分遵循相同的格式

try with this while loop:

while True:
public_client = cbpro.PublicClient()
res = json.dumps(public_client.get_product_ticker(product_id='BTC-USD'))
converted = json.loads(res)
df = df.append(pd.DataFrame.from_dict(pd.json_normalize(converted), orient='columns'))
if time.time() > timeout:
break

在进入循环之前只获取一个引号。然后重复处理相同的数据。你永远不会改变res,你只是不断地向DF添加相同的值,一次又一次的迭代。您需要使用get_product_ticker重复获取。

OP更新后:是的,这样才能快速拿到报价。如果将第一行移到循环上方,您可以做得更好:您不需要在每次迭代中重新创建客户端对象。

有几行是相同的,因为您正在获取实时报价。如果没有人改变当前的最佳买入价或卖出价,那么报价保持不变。如果您只想要更改,那么使用PANDAS的unique方法删除重复项。

相关内容

  • 没有找到相关文章