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

加密数字货币市场历史数据获取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 pddef 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()# 创建 DataFramecolumns = ['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 pddef 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 pddef 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.rhkb.cn/news/395042.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关闭Windows安全中心

打开Windows安全中心的病毒和威胁防护。 打开该选项的管理设置。 关闭实时保护。

【Scene Transformer】scene transformer论文阅读笔记

文章目录 序言(Abstract)(Introduction)(Related Work)(Methods)(Scene-centric Representation for Agents and Road Graphs)(Encoding Transformer)(Predicting Probabilities for Each Futures)(Joint and Marginal Loss Formulation) (Results)(Discussion)(Questions) sce…

【网络基础一】几乎不讲任何网络协议细节,搭建网络基本结构

文章目录 问题认识“协议”计算机通信问题技术问题应用问题 协议分层那么网络分层应该怎么分层呢? 统编程帮助我们处理数据,网络编程帮助我们获取数据,网络配上我们写的线程池模块很快就搭建起来了。 问题 网卡是文件吗? 是的&am…

24暑假算法刷题 | Day30 | 贪心算法 IV | 452. 用最少数量的箭引爆气球,435. 无重叠区间,763. 划分字母区间

目录 452. 用最少数量的箭引爆气球题目描述题解 435. 无重叠区间题目描述题解 763. 划分字母区间题目描述题解 452. 用最少数量的箭引爆气球 点此跳转题目链接 题目描述 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中…

《系统架构设计师教程(第2版)》第13章-层次式架构设计理论与实践-04-数据访问层设计

文章目录 1. 五种数据访问模式1.1 在线访问1.2 DAO1.3 DTO1.4 离线数据模式1.5 对象/关系映射 (O/R Mapping) 2. 工厂方法模式在数据访问层应用3 ORM、Hibernate与CMP2.0设计思想3.1 ORM3.2 Hibernate1)概述2) Hibernate的架构(2023年的考题&…

【Web开发手礼】探索Web开发的秘密(十八)-Vue2(4)部门管理页面、路由、打包部署

主要介绍了部门管理页面、路由、打包部署&#xff01;&#xff01;&#xff01; 文章目录 前言 部门管理页面 Vue路由 打包部署 打包 部署 总结 前言 主要介绍了部门管理页面、路由、打包部署&#xff01;&#xff01;&#xff01; 部门管理页面 <template><div>&…

云手机在海外社交媒体运营中的作用

随着社交媒体的全球普及&#xff0c;海外社交媒体运营成为众多企业与个人提升品牌影响力和扩大市场份额的重要策略。在这一进程中&#xff0c;海外云手机以其独特的功能&#xff0c;为海外社交媒体运营提供了强大的支持。 那么&#xff0c;海外云手机在海外社交媒体运营中究竟扮…

展馆室内导航系统:增强现实技术与数据可视化分析在展馆中的应用

随着科技的飞速发展&#xff0c;展览行业正经历着前所未有的变革。作为信息交流与文化传播的重要场所&#xff0c;展馆在吸引访客、展示展品方面扮演着至关重要的角色。然而&#xff0c;在信息爆炸、时间宝贵以及访客需求日益多样化的今天&#xff0c;传统展馆在导览、管理和服…

【学习方法】高效学习因素 ① ( 开始学习 | 高效学习因素五大因素 | 高效学习公式 - 学习效果 = 时间 x 注意力 x 精力 x 目标 x 策略 )

文章目录 一、高效学习因素1、开始学习2、高效学习因素五大因素3、高效学习公式 - 学习效果 时间 x 注意力 x 精力 x 目标 x 策略 一、高效学习因素 1、开始学习 对于 学习差 , 调皮捣蛋 的学生 , 不要把 学习成绩差 的 原因 归因为 不爱学习 / 没有学习方法 , 可能是 还没有 …

从通用到定制:营销Agent如何跨越数据鸿沟,实现对话SOP的个性化飞跃

从通用到定制:营销Agent如何跨越数据鸿沟,实现对话SOP的个性化飞跃 1.背景 营销 Agent 指的是在营销过程中洞察客户并作出决策以及行动的 AI 智能体,包括感知、理解、决策、交互、反馈多个模块。对话 SOP 是交互模块中非常重要的部分,如何在缺少数据的情况下快速实现千人…

Java数组的类名是什么以及数组相关操作的指令有什么?

写在前面 不知道你想过没有&#xff0c;我们常说数组也是对象&#xff0c;既然是对象&#xff0c;肯定要有一个类名称了&#xff0c;那么&#xff0c;数组的类名称是什么呢&#xff1f;数组相关的操作对应的指令又是什么呢&#xff1f;本文就一起来看下。 1&#xff1a;叨叨叨…

大数据面试SQL(六):共同使用ip用户检测问题

文章目录 共同使用ip用户检测问题 一、题目 二、分析 三、SQL实战 四、样例数据参考 共同使用ip用户检测问题 一、题目 现有用户登录日志表&#xff0c;记录了每个用户登录的IP地址&#xff0c;请查询共同使用过3个及以上IP的用户对。 样例数据&#xff1a; 结果数据&…

软件功能测试步骤介绍,软件测试服务公司推荐

在当今软件开发日益复杂的环境中&#xff0c;软件功能测试显得尤为重要。功能测试是确保软件产品满足用户需求和规范要求的关键环节。它通过验证软件功能是否按预期运行&#xff0c;帮助发现潜在的问题&#xff0c;防止软件在上线后导致用户的不满及业务损失。随着市场竞争的加…

yaml语法+yaml配置文件

yaml语法 k:(空格)v > 表示一对键值对空格必须有 yaml拥有严格的空格缩进格式控制&#xff0c;以空格的缩进来控制层级关系&#xff1b;只要是左对齐的一列数据&#xff0c;都是同一个层级的 spring:thymeleaf:cache: true# 检查模板是否存在&#xff0c;然后再呈现check…

【初阶数据结构题目】18.设计循环队列

设计循环队列 点击链接答题 思路&#xff1a; 循环队列&#xff0c;空间固定。 这里我们可以用数组来实现循环队列。 如何判断队列是否为满&#xff1f; 多申请一块空间 (rear1)%(k1) front 如何判断队列是否为空&#xff1f; rear front 代码&#xff1a; //定义循环队列的…

【开端】通过Java 过滤器灵活配置URL访问权限,并返回403

一、绪论 在JAVA项目系统中&#xff0c;后端给前端提供接口。但是在某些场景我们需要临时控制接口是否能被访问。或关闭某一接口的访问权限。 比如某一接口被攻击了或者某一接口存在漏洞&#xff0c;在系统不关闭的情况下&#xff0c;如何控制系统的访问权限。 二、控制接口访…

俄组织Fighting Ursa利用虚假汽车销售广告传播HeadLace后门

最近&#xff0c;Palo Alto Networks的科研人员揭露了有一个与俄罗斯有关联的威胁行动者——Fighting Ursa&#xff08;亦称APT28、Fancy Bear或Sofacy&#xff09;。该组织通过散布虚假的汽车销售广告&#xff0c;特别是针对外交官群体&#xff0c;散播名为HeadLace的后门恶意…

概率论原理精解【9】

文章目录 集类拓扑空间基 参考文献 集类 C是一个集类&#xff08;以G的某些子集为元素的集合称为G的集类&#xff09;。 A i ∈ C , ∩ i 1 n A i ∈ C , 此为有限交封闭 C 所得集类 C ∩ f A_i \in C,\cap_{i1}^nA_i \in C,此为有限交封闭C所得集类C_{\cap f} Ai​∈C,∩i1n…

windows和office微软官方免费激活教程

微软提供了windows系统和office的官方免费激活&#xff0c;其实不用去买什么激活码&#xff0c;官方提供了激活方式&#xff0c;完全免费。目前测试没发现什么问题&#xff0c;windows还支持永久激活&#xff0c;比一些乱七八糟的kms激活工具还省心。 github地址&#xff1a;Gi…

Xshell8最新版体验(业界最强大的SSH连接工具)

Xshell 是一款强大的 SSH 客户端&#xff0c;广泛用于远程管理和连接服务器。 一、主要特性 多标签界面&#xff1a; 支持在一个窗口中打开多个会话&#xff0c;每个会话以标签形式显示&#xff0c;方便用户在不同会话之间快速切换。 会话管理&#xff1a; 提供强大的会话管理…