数字货币市场历史数据获取API(含源代码)

数字货币市场历史数据获取API(含源代码)

在之前的文章中,数字货币交易接口实现(含源代码),分享了交易接口以及实时行情数据接口的实现。

如果要进行量化回测分析, 就需要准备历史行情数据,今天分享3个API接口,用于访问加密货币的历史市场数据,1分钟级别的数据足够使用了。涵盖的API包括:

  • Binance币安
  • CoinGecko
  • CryptoCompare

1. Binance API

币安提供全面的交易数据API,包括历史K线数据。下面是一个使用Python检索1分钟级数据的示例代码:

import requests
import pandas as pd

def get_binance_klines(symbol='BTCUSDT', interval='1m', limit=1000):
    """
    获取 Binance 交易对的历史 K 线数据。
    
    参数:
    - symbol: 交易对(例如 BTCUSDT)
    - interval: 时间间隔(例如 '1m', '5m', '1h', '1d')
    - limit: 返回数据的数量限制(最多 1000)
    
    返回:
    - DataFrame 包含时间、开盘价、最高价、最低价、收盘价、交易量。
    """
    url = "https://api.binance.com/api/v3/klines"
    params = {
        'symbol': symbol,
        'interval': interval,
        'limit': limit
    }
    
    response = requests.get(url, params=params)
    data = response.json()

    # 创建 DataFrame
    columns = ['Open Time', 'Open', 'High', 'Low', 'Close', 'Volume', 'Close Time', 
               'Quote Asset Volume', 'Number of Trades', 'Taker Buy Base Volume', 
               'Taker Buy Quote Volume', 'Ignore']
    df = pd.DataFrame(data, columns=columns)

    # 转换时间戳
    df['Open Time'] = pd.to_datetime(df['Open Time'], unit='ms')
    df['Close Time'] = pd.to_datetime(df['Close Time'], unit='ms')
	
	return df
	# 精简字段返回
    # return df[['Open Time', 'Open', 'High', 'Low', 'Close', 'Volume']]

# 示例用法
df_binance = get_binance_klines(symbol='BTCUSDT', interval='1m', limit=1000)
# 保存到本地csv文件,方便后期回测使用
df_binance.to_csv('BTCUSDT.csv')
print(df_binance.head())
运行结果

BTCUSDT.csv 文件截图


后面两种方式拿到的数据,不进行截图展示了,和上面的结果相似。

2. CoinGecko API

CoinGecko提供各种市场数据,尽管它不直接提供1分钟的数据。但是,您可以获得历史市场价格。

import requests
import pandas as pd

def get_coingecko_market_data(coin_id='bitcoin', vs_currency='usd', days=1, interval='minutely'):
    """
    获取 CoinGecko 的市场历史数据。
    
    参数:
    - coin_id: 数字货币 ID(例如 'bitcoin')
    - vs_currency: 比较的法定货币(例如 'usd')
    - days: 时间范围(例如 1 表示一天)
    - interval: 时间间隔(例如 'minutely')

    返回:
    - DataFrame 包含时间、价格、交易量数据。
    """
    url = f"https://api.coingecko.com/api/v3/coins/{coin_id}/market_chart"
    params = {
        'vs_currency': vs_currency,
        'days': days,
        'interval': interval
    }
    
    response = requests.get(url, params=params)
    data = response.json()
    
    # 提取价格数据
    prices = pd.DataFrame(data['prices'], columns=['timestamp', 'price'])
    prices['timestamp'] = pd.to_datetime(prices['timestamp'], unit='ms')

    # 提取交易量数据
    volumes = pd.DataFrame(data['total_volumes'], columns=['timestamp', 'volume'])
    volumes['timestamp'] = pd.to_datetime(volumes['timestamp'], unit='ms')

    # 合并价格和交易量数据
    market_data = pd.merge(prices, volumes, on='timestamp')

    return market_data

# 示例用法
df_coingecko = get_coingecko_market_data()
print(df_coingecko.head())

3. CryptoCompare API

CryptoCompare提供了一套丰富的市场数据API,包括历史OHLCV数据。要使用他们的免费API,您需要注册并获得API密钥。

import requests
import pandas as pd

def get_cryptocompare_ohlcv(symbol='BTC', market='USD', aggregate=1, limit=10, api_key='YOUR_API_KEY'):
    """
    获取 CryptoCompare 的历史 OHLCV 数据。
    
    参数:
    - symbol: 数字货币符号(例如 'BTC')
    - market: 市场符号(例如 'USD')
    - aggregate: 聚合级别(1 表示每分钟)
    - limit: 返回数据的数量限制
    - api_key: 你的 CryptoCompare API 密钥
    
    返回:
    - DataFrame 包含时间、开盘价、最高价、最低价、收盘价、交易量。
    """
    url = f"https://min-api.cryptocompare.com/data/v2/histominute"
    params = {
        'fsym': symbol,
        'tsym': market,
        'limit': limit,
        'aggregate': aggregate,
        'api_key': api_key
    }
    
    response = requests.get(url, params=params)
    data = response.json()

    # 检查响应中的数据
    if data['Response'] == 'Error':
        raise Exception(f"Error fetching data: {data['Message']}")

    # 提取历史数据
    ohlcv_data = pd.DataFrame(data['Data']['Data'])

    # 转换时间戳
    ohlcv_data['time'] = pd.to_datetime(ohlcv_data['time'], unit='s')

    return ohlcv_data[['time', 'open', 'high', 'low', 'close', 'volumefrom']]

# 示例用法(请替换 'YOUR_API_KEY')
df_cryptocompare = get_cryptocompare_ohlcv(api_key='YOUR_API_KEY')
print(df_cryptocompare.head())

总结

  • Binance API 提供免费的高频数据,无需注册。
  • CoinGecko API 数据不包括精确的OHLC(开盘、高、低、收盘)数据,但提供价格和交易量。
  • CryptoCompare API 提供免费的API访问,需要注册和API密钥。

根据您的实际需求选择合适的API,并将your_API_KEY替换为您从 CryptoCompare 获得的API密钥。

相关文章:
数字货币MACD指标自动化交易策略实现(含源代码)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值