CCXT提取存款仅显示过去1个月的数据



我使用CCXT从FTX获取存款。我的目标是找到这个特定FTX地址的所有比特币存款的总和。当我试图获得所有历史存款(超过1个月)时,问题就发生了。FTX只返回过去1个月的数据。

  • 存款起始日期= 2022年4月1日= 1648771200
  • 虚拟存款截止日期= 2022年4月30日= 1651363199
  • 预定存款结束日期=现在= 1655033415

我试过了:

  1. fetchDeposits from the past一个月=success。正确的数据33返回事务。

  2. fetchDeposits from Apr 1 - Apr 30 =fail。数据返回与(1).正确的数据应该返回3事务。

  3. fetchDeposits from 1 Apr - now =fail。数据返回与(1)相同。正确的数据应该返回44事务。

我知道分页限制了返回的数据。然而,无论我如何尝试,我总是只能得到过去一个月的数据。旧数据丢失

参考:

  • https://docs.ccxt.com/en/latest/manual.html?highlight=fetchdeposit存款
  • https://github.com/ccxt/ccxt/wiki/Manual分页

代码

def get_deposits(asset_name):
deposits_total = 0
deposits_count = 0
since = 1648771200
param = {"endTime": 1655033415}
deposits = exchange.fetch_deposits(asset_name, since, limit=None, params=param)
#This sum up all deposits if such deposit is made to specified deposit address
for item in deposits:
if item['addressTo'] == deposit_address[asset_name]:
deposits_total = deposits_total + item['amount']
deposits_count = deposits_count +1
print(item['datetime'])
return(deposits_total, deposits_count)

感谢Alex和Kroitor(在Github上)。

下面的代码应该归功于Kroitor(在Github上)https://github.com/ccxt/ccxt/issues/13806

import ccxt
# make sure your version is 1.51+
print('CCXT Version:', ccxt.__version__)
exchange = ccxt.ftx({
'apiKey': 'YOUR_API_KEY',
'secret': 'YOUR_SECRET',
# "headers": {
#     "FTX-SUBACCOUNT": "YOUR_SUBACCOUNT"
# }
})

markets = exchange.load_markets ()
# exchange.verbose = True  # uncomment for debugging
all_results = {}
symbol = None
since = None
limit = 200
end_time = exchange.milliseconds()
while True:
print('------------------------------------------------------------------')
params = {
'end_time': int(end_time / 1000),
}
results = exchange.fetch_deposits(symbol, since, limit, params)
if len(results):
first = results[0]
last = results[len(results) - 1]
end_time = first['timestamp']
print('Fetched', len(results), 'deposits from', first['datetime'], 'till', last['datetime'])
fetched_new_results = False
for result in results:
if result['id'] not in all_results:
fetched_new_results = True
all_results[result['id']] = result
if not fetched_new_results:
print('Done')
break
else:
print('Done')
break

all_results = list(all_results.values())
all_results = exchange.sort_by(all_results, 'timestamp')
print('Fetched', len(all_results), 'deposits')
for i in range(0, len(all_results)):
result = all_results[i]
print(i, result['id'], result['currency'], result['datetime'], result['amount'])

检查正确性最简单的方法是使用

https://chain.so/api/v2/get_address_received/coin_name/your_address

https://chain.so/api/v2/get_address_received/DOGE/DM7Yo7YqPtgMsGgphX9RAZFXFhu6Kd6JTT

比较confirmed_received_value与FTX的返回值

最新更新