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

news2024/9/22 5:27:28

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

  • 数字货币市场历史数据获取API(含源代码)
      • 1. Binance API
        • 运行结果
        • BTCUSDT.csv 文件截图
      • 2. CoinGecko API
      • 3. CryptoCompare 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指标自动化交易策略实现(含源代码)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1995117.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【机器学习算法基础】(基础机器学习课程)-11-k-means-笔记

示例案例 为了更好地理解 K-Means 算法,下面通过一个简单的案例进行说明。 假设我们有以下 10 个二维数据点,表示不同商店的销售额(单位:千元)和顾客数(单位:人): [(1…

zabbix的自动发现和注册、proxy代理和SNMP监控

一、zabbix自动发现和注册 1.概念 zabbix客户端主动的和服务端联系,将自己的地址和端口发送给服务端,实现自动添加监控主机。 客户端是主动的一方 缺点:自定义网段中主机数量太多,登记耗时会很久,而且这个自动发现…

多参数MRI靶向活检与系统性活检在筛查筛状和导管内癌前列腺癌中的比较| 文献速递-基于深度学习的乳房、前列腺疾病诊断系统

Title 题目 Comparison of Multiparametric MRI–targeted and Systematic Biopsies for Detection of Cribriform and Intraductal Carcinoma Prostate Cancer 多参数MRI靶向活检与系统性活检在筛查筛状和导管内癌前列腺癌中的比较 Background 背景 Intraductal carcin…

婴儿浴缸及沐浴辅助用品 亚马逊澳大利亚站认证

本政策涵盖的婴儿浴缸及沐浴辅助用品 婴儿沐浴辅助用品用于为婴儿提供支撑,以便成人可以腾出手来为婴儿沐浴。商品设计多种多样,可能随婴儿浴缸一起提供,也可能塑造成婴儿浴缸的形状,也可能设计为淋浴时使用的椅子。婴儿沐浴辅助…

制造知识普及(十)-- 常见的工业软件介绍

「 1. ERP」 企业资源计划(enterprise resource planning,ERP)是制造企业的核心管理软件。ERP系统的基本思想是以销定产,协同管控企业的产、供、销、人、财、物等资源,帮助企业按照销售订单,基于产品的制造…

十一、vector 类

Ⅰ . vector 的介绍和使用 01 vector 的介绍 vector 的文档介绍:vector ① vector 是表示可变大小数组的序列容器,既像数组,又不像数组 像体现在:同样采用连续存储空间存储元素,可以使用下标访问元素 不像体现在&…

ffmpeg -- 常用口令

文章目录 1.视频格式转换2.设置比特率3.设置帧率4.强制让输入视频帧率为1,输出视频帧率为245.长视频截短6.自动分割视频的bash脚本7.每一帧都保存成图片 1.视频格式转换 ffmpeg -i input.avi output.mp42.设置比特率 ffmpeg -i input.avi -b:v 64k -bufsize 64k o…

Kuboard v3安装手册

1、Kuboard v3安装 docker pull swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3 #启动kuboard容器 docker run -d \ --restartunless-stopped \ --namekuboard \ -p 8003:80/tcp \ -p 30081:10081/tcp \ -e KUBOARD_ENDPOINT"http://10.111.13.2:8003&q…

智能分析,安全无忧:AI视频分析技术在安全生产中的深度应用

在当今快速发展的科技时代,视频智能分析技术(Intelligent Video Analysis,简称IV)已经成为提升安全生产水平的重要手段。这一技术通过计算机图像视觉分析技术,实现了对场景中目标的自动识别和追踪,有效提升…

计算机毕业设计选题推荐-玩具租赁系统-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

网络规划设计师-(3)数据通信系统模型

数据通信系统模型是怎么组成的? 数据通信系统模型是由以下几个组成部分组成: 发送方(Sender):发送方是数据通信系统中起始数据源的设备或程序。它将原始数据转化为适合传输的格式,并将数据发送到通信信道中…

企业管理咨询公司谈Poka-Yoke的三种方法

这听起来像是你玩的游戏,但 poka-yoke 这个词实际上是一个日语术语,它的意思是“防错”。作为一种质量工具,其背后的理念是每个人都会犯错,因为我们都是人。Poka-yoke 要么消除,要么至少大大减少了我们犯错的机会。此操…

中国进出口贸易公司 | 地毯进口有哪些要求 | 箱讯科技

地毯进口有哪些注意事项?根据制作方法、材质等方面的差异,地毯产品在进口申报时,其申报税号各有不同;还应关注地毯产品的质量安全及卫生环保情况,确保其符合中国相关强制性标准的要求。具体介绍如下。 进口地毯产品申报…

记一次 .NET某智慧出行系统 CPU爆高分析

一:背景 1. 讲故事 前些天有位朋友找到我,说他们的系统出现了CPU 100%的情况,让你帮忙看一下怎么回事?dump也拿到了,本想着这种情况让他多抓几个,既然有了就拿现有的分析吧。 二:WinDbg 分析…

MySQL笔记-基础篇(二):多表查询

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 前言 MySQL的多表查询是一项非常实用的数据库操作技术,它能够通过关联不同表中的数据来提供更加丰富和准确的信息。在实际应用中,数据通常不是孤立存在的,而是分布在多个…

怎么用云手机进行TikTok矩阵运营

TikTok作为炙手可热的社交媒体巨头,已经吸引了亿万用户的目光。随着科技的飞速发展,云手机的出现为TikTok矩阵运营注入了新的活力。本文将深入探讨云手机在TikTok矩阵运营中的实际应用,并分享一系列高效策略与技巧。 (1&#xff0…

《暗黑破坏神 IV》是什么类型的游戏,苹果电脑能玩暗黑破坏神吗 crossover玩暗黑4

《暗黑破坏神 IV》(Diablo IV)是由暴雪娱乐开发的一款动作角色扮演游戏(Action RPG),是广受欢迎的《暗黑破坏神》系列的最新作品。暗黑破坏神4拥有出色的游戏画面、音效和丰富的游戏玩法,非常值得玩家们去尝…

Sqli-labs靶场详解(二)

一.sqli-labs靶场(15~17) 15.less15 第15关发现联合查询和报错注入无效,使用and探测时发现有两个页面,于是判断是盲注中的布尔盲注 猜解库名长度 or (length(database()))8-- gwe 利用ASCI码猜解当前数据库名称: or(ascii(substr(database(),1,1)))115-- gwe返回正常&#xf…

Linux内核机制开发 - DEFINE_PER_CPU和DECLARE_PER_CPU

By: fulinux E-mail: fulinuxsina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 1. DEFINE_PER_CPU和DECLARE_PER_CPU1. 1. DEFINE_PER_CPU1.2. DECLARE_PER_CPU 2. 区别2.1. 定义与声明:2.2. 使…

mac专业图表绘制软件:OmniGraffle Pro for mac 激活版

OmniGraffle Pro for Mac 是一款功能强大的图表、流程图、快速页面布局、网站线框和图形设计绘制软件。它具备保持线条与形状连接的功能、有效的样式工具,以及简单易用的组织图表能力,能够快速帮助用户制作出色的图形文稿。OmniGraffle Pro 适用于制作从…