更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。
1 CoinGecko API
CoinGecko是一个数字货币市场数据服务提供商,提供历史和实时的数字货币数据。它的API可以通过HTTP请求方式获取数字货币的历史行情数据。例如,以下代码可以获取比特币在2022年1月的价格数据:
import requests url = 'https://api.coingecko.com/api/v3/coins/bitcoin/history' params = {'date': '01-01-2022', 'localization': 'false'} response = requests.get(url, params=params) data = response.json() print(data)
在这个示例中,我们使用requests库发送HTTP请求并获取CoinGecko API的响应。我们在API请求URL中设置了正确的参数,即货币对和时间间隔。我们使用params参数将API请求URL和参数传递给get()方法,并使用response.json()将响应转换为Python对象。我们使用Python中的for循环遍历数据,并使用列表索引访问价格数据和时间戳。然后,我们将时间戳转换为datetime对象,并打印时间戳和价格数据。
import requests import datetime url = "https://api.coingecko.com/api/v3/coins/bitcoin/market_chart/range" params = { "vs_currency": "usd", "from": "1392577232", "to": "1617288232" } response = requests.get(url, params=params) data = response.json() prices = data["prices"] for price in prices: timestamp = datetime.datetime.fromtimestamp(price[0]/1000.0) price = price[1] print(timestamp, price)
2 CryptoCompare API
CryptoCompare是另一个数字货币市场数据服务提供商,也提供历史和实时的数字货币数据。它的API可以通过HTTP请求方式获取数字货币的历史行情数据。例如,以下代码可以获取比特币在2022年1月的价格数据:
import requests url = 'https://min-api.cryptocompare.com/data/v2/histoday' params = {'fsym': 'BTC', 'tsym': 'USD', 'limit': '31', 'toTs': '1641024000'} response = requests.get(url, params=params) data = response.json() print(data)
3 Alpha Vantage
import requests url = 'https://www.alphavantage.co/query' params = {'function': 'DIGITAL_CURRENCY_DAILY', 'symbol': 'BTC', 'market': 'USD', 'apikey': 'your_api_key'} response = requests.get(url, params=params) data = response.json() print(data)
注意:以上示例中的API和服务可能需要注册并获取API Key或者令牌,具体使用方式需要查看对应的API文档。此外,获取历史行情数据的请求需要提供对应的数字货币代码、市场类型、日期范围等参数,具体参数需要根据API文档来设置。
4 CoinCap API
CoinCap API提供了免费和付费两种访问方式。免费访问方式有一些限制,例如每分钟最多只能发出10个请求,每个请求最多返回2000个数据点等。如果需要更多数据和更高的访问速度,可以考虑使用付费访问方式。
导入必要的库和模块。
设置API请求参数,包括URL和请求参数。API的文档应该包含有关可用参数和其值的信息。在这个例子中,我们使用CoinCap API和CoinGecko API来获取比特币历史价格数据。我们在API请求URL中设置了正确的参数,即时间间隔、开始时间和结束时间。
发送API请求。使用Python中的requests库可以轻松发送HTTP请求并获取响应。发送请求的方式通常是调用requests库中的get()方法并将API请求URL和参数作为参数传递。对于一些需要认证的API,还需要将API密钥作为参数传递。
解析JSON响应。 API响应通常以JSON格式返回,因此需要使用json模块将响应转换为Python对象。使用Python中的json.loads()函数可以将JSON字符串转换为Python字典。
提取所需的数据。解析JSON响应后,我们可以从Python字典中提取所需的数据。提取数据的方法因API而异,通常需要检查API文档以查看可用的数据字段和其格式。
处理和可视化数据。一旦提取了所需的数据,我们可以使用Python中的其他库和模块进行进一步处理和可视化,例如使用Matplotlib库绘制图表或使用Pandas库进行数据分析。
在这个示例中,我们使用requests库发送HTTP请求并获取CoinCap API的响应。我们使用params参数将API请求URL和参数传递给get()方法,并使用response.json()将响应转换为Python对象。我们使用Python中的for循环遍历数据,并使用字典键访问价格数据和时间戳。然后,我们将时间戳转换为datetime对象,并打印时间戳和价格数据。
import requests # 设置API请求参数 url = "https://api.coincap.io/v2/assets/bitcoin/history" params = { "interval": "d1", "start": "1483228800000", # 2017-01-01 的时间戳 "end": "1649193600000" # 2022-04-05 的时间戳 } # 发送API请求 response = requests.get(url, params=params) # 解析JSON响应 data = response.json() # 提取价格数据 prices = data["data"] for price in prices: time = price["time"] # 时间戳 price_usd = price["priceUsd"] # 价格(美元) print(f"{time}: {price_usd}")
5 直接调用交易所API
import requests import pandas as pd import mplfinance as mpf # 获取比特币K线数据 url = 'https://api.binance.com/api/v3/klines' params = { 'symbol': 'BTCUSDT', 'interval': '1d', 'limit': 1000 } res = requests.get(url, params=params) data = res.json() df = pd.DataFrame(data, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume', 'close_time', 'quote_asset_volume', 'number_of_trades', 'taker_buy_base_asset_volume', 'taker_buy_quote_asset_volume', 'ignore']) df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms') df.set_index('timestamp', inplace=True) df = df.apply(pd.to_numeric, errors='ignore') # 画K线图 mpf.plot(df, type='candle', volume=True, style='binance')
程序运行后的K线图可视化结果
以上是用5种不同方式调用API获取数字货币公开数据的方法及详细源码,你Get到了吗?