gpt4 book ai didi

python - 如何使用 Python 使用币安 API 获取加密货币的所有价格历史记录?

转载 作者:行者123 更新时间:2023-12-04 12:34:07 30 4
gpt4 key购买 nike

我一直在使用这个脚本通过 Binance API 和这个脚本从一些加密货币中获取价格:
https://steemit.com/python/@marketstack/how-to-download-historical-price-data-from-binance-with-python
问题是,使用此脚本我无法控制日期范围:例如,我想选择 2015 年 12 月和 2020 年 12 月之间的期间范围,或者我想要任何加密货币的第一天交易的每日价格......等等。
所以我和你分享我正在使用的代码(从steemit代码复制并稍微修改)
我该怎么做?

# https://steemit.com/python/@marketstack/how-to-download-historical-price-data-from-binance-with-python###

import requests
import json
import pandas as pd
import numpy as np
import datetime as dt

frequency = input("Please enter the frequency (1m/5m/30m/.../1h/6h/1d/ : ")

def get_bars(symbol, interval=frequency):
root_url = 'https://api.binance.com/api/v1/klines'
url = root_url + '?symbol=' + symbol + '&interval=' + interval
data = json.loads(requests.get(url).text)
df = pd.DataFrame(data)
df.columns = ['open_time',
'o', 'h', 'l', 'c', 'v',
'close_time', 'qav', 'num_trades',
'taker_base_vol', 'taker_quote_vol', 'ignore']
df.index = [dt.datetime.fromtimestamp(x / 1000.0) for x in df.close_time]
return df

btcusdt = get_bars('BTCUSDT')
ethusdt = get_bars('ETHUSDT')


df0=pd.DataFrame(btcusdt)
df0.to_csv('_btcusdt.csv')

df1=pd.DataFrame(ethusdt)
df1.to_csv('_ethusdt.csv')
谁能帮我优化一下?

最佳答案

我在币安文档中使用它:https://python-binance.readthedocs.io/en/latest/binance.html?highlight=get_historical_klines#binance.client.Client.get_historical_klines

import os
from binance.client import Client
import pandas as pd
import datetime, time

def GetHistoricalData(self, howLong):
self.howLong = howLong
# Calculate the timestamps for the binance api function
self.untilThisDate = datetime.datetime.now()
self.sinceThisDate = self.untilThisDate - datetime.timedelta(days = self.howLong)
# Execute the query from binance - timestamps must be converted to strings !
self.candle = self.client.get_historical_klines("BNBBTC", Client.KLINE_INTERVAL_1MINUTE, str(self.sinceThisDate), str(self.untilThisDate))

# Create a dataframe to label all the columns returned by binance so we work with them later.
self.df = pd.DataFrame(self.candle, columns=['dateTime', 'open', 'high', 'low', 'close', 'volume', 'closeTime', 'quoteAssetVolume', 'numberOfTrades', 'takerBuyBaseVol', 'takerBuyQuoteVol', 'ignore'])
# as timestamp is returned in ms, let us convert this back to proper timestamps.
self.df.dateTime = pd.to_datetime(self.df.dateTime, unit='ms').dt.strftime(Constants.DateTimeFormat)
self.df.set_index('dateTime', inplace=True)

# Get rid of columns we do not need
self.df = self.df.drop(['closeTime', 'quoteAssetVolume', 'numberOfTrades', 'takerBuyBaseVol','takerBuyQuoteVol', 'ignore'], axis=1)

print(self.df)
我确实希望这对某人有所帮助。
(请注意这个方法是从我的一个类中剪下来的,所以你可以摆脱所有的自我),并且你需要在你的客户端之前通过 client = Client(api_key, api_secret)当然欢迎任何改进!

关于python - 如何使用 Python 使用币安 API 获取加密货币的所有价格历史记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66295187/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com