在学习加密货币时,我迫切需要可以操纵自己的数据来进行自己的绘图和分析。 在这里,我将向您展示如何以最少的编程技能轻松地在您的 Web 浏览器中获取实时和历史加密数据。 包括源代码、链接和一些基本的绘图和分析。
免责声明:您不会找到任何财务建议c在这里,我不是加密货币、加密艺术、NFT 及其交易等方面的专家。我只提供免费的 HTML+JavaScript 代码,以便通过对 CryptoCompare.com 的 API 调用获取数据; 我用我自己的一些主观意见展示了从这些数据中得出的一些图。
我最近对加密货币、加密艺术、NFT 等产生了兴趣。当然,作为一名一直在处理数据的科学家,我想做的第一件事就是自己玩弄加密货币数据。 我在网站、新闻和应用程序中到处都看到了情节; 但是我怎么能得到实际数据来玩它并做我自己的情节和调查呢? 尤其是,我如何确保每次请求时它都是最新的?
具体来说,我想了解的第一件事是各种加密货币和法定货币之间的汇率。 我发现 CryptoCompare.com 网站提供了一个很好的 API,对于少量调用是免费的,它允许以编程方式访问来自其基础的数据。 我还在网上找到了各种 JavaScript 代码,我将它们放在两个非常简单的网络应用程序中:一个是每 10 秒更新一次 BTC-USD 汇率; 另一个是在整个比特币历史中每分钟、每小时或每天检索历史 BTC-USD 汇率。 随意复制我提供的代码并使其适应您自己的目标。
Web 应用程序 1:实时获取任何交换
当然,您可以打开任何加密货币网站或应用程序并从那里获取此数字,但假设您希望它始终在手边并自动刷新,或者您可能希望将其自动输入您正在开发的计算系统。
在 CryptoCompare 的 API 上简单访问此链接将在您拨打电话时返回以美元计价的比特币 (BTC) 汇率:
https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD
同样,另一个示例为您提供了通话时以太坊 (ETH) 以欧元计的汇率:
https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=EUR
很简单,不是吗? 好吧,在此基础上,以下代码每 10 秒在一个小网页中返回您要求的任何转换(在此示例中以美元为单位的 BTC),您可以将其设为私有以在您自己的网站上关注您喜欢的汇率:
实时获取加密数据
const getBtcData = async() => {
fetch('https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD')
.then(response => response.json())
.then(数据 => {
控制台日志(数据);
document.getElementById("info").innerHTML = ' 1 BTC = ' + data.USD + ' USD '
});
}获取比特币数据();tcount=0setInterval(函数(){
计数++
如果 (tcount==10) {getBtcData(); tcount=0}
document.getElementById("infotime").innerHTML = '下一次更新 + (10-tcount) + ' seconds'
},1000);
您可以将此代码复制粘贴到 .html 文件中,然后使用浏览器加载它,以查看它的运行情况。 或者如果你觉得懒惰,只需在我的网站上打开这个演示示例:
https://lucianoabriata.altervista.org/tests/cryptogames/getBTC-realtime.html
您可以轻松地将其进一步开发成一个 Web 应用程序,该应用程序不断跟踪任何汇率,甚至将其存储在图表中以便随时随地进行可视化或存储在变量中以供下载。
Web 应用程序 2:获取历史数据
但是如果你想在网页启动前获取数据呢? 嗯,你可以去专门的网站下载这些数据; 但是,我发现易于使用的网站仅提供部分数据。 例如,雅虎财经的 BTC 数据始于 17 年 2014 月 XNUMX 日,其记录是每月、每周或每天,但不是每小时或每分钟。 此外,如果您正在开发一个需要自动更新的系统,手动数据下载是不可能的……您需要编程访问。
幸运的是,CryptoCompare 的 API 包括检索以分钟、小时或天为单位的历史数据的方法。 不仅是汇率,还有其他指标,例如交易量。 要了解更多关于 API 查看其文档 并阅读以下内容。
像本例中的 API 调用将逐小时获取过去 20 小时的数据:
输出可解析为 JSON 格式。 它看起来像这样:
在 API 调用的 URL 中需要注意的点(我们接下来将在 fetch() javascript 函数中使用):
- 至Ts=-1 意味着您需要直到执行调用的那一刻的数据。
- 限制 是你想要的行数。
- 您需要提供 API 密钥。
使用免费的 API 密钥(在 文档页面; 是的,您可以购买具有更高级功能的密钥)您可以拨打的电话总数受到限制,并且每次通话最多只能给您 2000 个条目。 因此,例如,如果您要求 BTC 的每小时汇率(以美元计),您将得到的最大值是从提示时间向后 2000 分钟,这意味着大约 33 小时,即一天多一点。 或者,如果您要求每小时数据,您最多将获得连续 83.33 天(不到 3 个月)的数据。 但是,这并不是什么大问题,因为您可以根据需要向后重复 API 多次以弥补您感兴趣的时间间隔。例如,将每日 BTC 数据恢复到您需要的来源截至 4000 年 2021 月撰写此故事时,略高于 3 点(天)。 这意味着您只需要连续拨打 98400 次。 如果您想要同一时期的每小时数据,您需要大约 50 个点,这些点被 XNUMX 个连续调用所覆盖。
让我向您展示这个网络应用程序,您可以使用它来查询任何兑美元汇率的每日历史数据:
获取历史加密数据
Web 浏览器中的加密数据:
获取最新数据
从:
到:
获取上一期
重新开始:
(美元)
const getBtcData = async() => {
const response = await fetch('https://min-api.cryptocompare.com/data/v2/histohour?fsym=' + document.getElementById('cryptoCurr').value + '&tsym=USD&limit=2000&toTs=-1&api_key=你的APIKEY');
const json = 等待 response.json();
常量数据 = json.Data.Data
const 时间 = data.map(obj => obj.time)
const 价格 = data.map(obj => obj.high)
var txt=""
因为 (var i=0;i
{
txt = txt + times[i] + "t" + serialDateToNiceDate(times[i]/3600/24).toString().substr(0,24) + "t" +价格[i] + "n"
}
document.getElementById("txtout").value = txt
document.getElementById("fromTime").value = times[0]
document.getElementById("toTime").value = times[times.length-1]
document.getElementById("fromInfo").innerHTML = " "
document.getElementById("toInfo").innerHTML = " "}
const getBtcDataPrevious = 异步 () => {
const response = await fetch('https://min-api.cryptocompare.com/data/v2/histohour?fsym=' + document.getElementById('cryptoCurr').value + '&tsym=USD&limit=2000&toTs=' + document .getElementById('fromTime').value + '&api_key=YOURAPIKEY');
const json = 等待 response.json(); 常量数据 = json.Data.Data
const 时间 = data.map(obj => obj.time) const 价格 = data.map(obj => obj.high)
var txt="" for (var i=0;i
}
tmp=document.getElementById("txtout").value
document.getElementById("txtout").value = txt + tmp
document.getElementById("fromTime").value = times[0]
document.getElementById("toTime").value = times[times.length-1]
document.getElementById("fromInfo").innerHTML = " "
document.getElementById("toInfo").innerHTML = " "
}获取比特币数据()函数 serialDateToNiceDate(date) {
返回新日期(Math.round((date)*86400*1000));
}
代码可能看起来有点复杂,但它可以简单得多。 这里的事情是我创建了一个完整的界面,让用户选择在什么时间范围内获取数据,然后将后续调用的结果连接在一个文本框中,以便于复制:
请注意,您必须调用 API 两次:一次在调用直到执行时刻的数据条目列表的函数中(getBtcData,在用户单击“获取最新数据”时运行并在加载时自动执行),另一次为在给定时间之前返回数据的函数 (getBtcDataPrevious)。 还要注意,这些函数会自动更新 From 和 To 时间,它们以原始串行格式显示,并通过函数 serialDateToNiceDate 转换为人类可读的形式。
加载页面后,或单击“获取最新数据”后,右侧的文本框将填充最近 2000 小时的条目,并更新从和到时间。 然后,您可以通过单击“获取上一期”来请求来自前一期的 2000 行数据块。 传入的行将添加到文本框中,保持历史顺序。
看一些历史数据
正如我在介绍中所说,我非常渴望获得自比特币诞生以来 BTC:USD 交易所的时间演变数据。 通过对上面显示的 Web 应用程序进行小的编辑(只需将“histohour”更改为“histoday”),您将获得一个返回每日记录的应用程序。 然后点击三下“获取上一期”,您可以获得比特币的全部每日数据,从 2010 年 XNUMX 月开始到现在。
让我们对这些数据做一些绘图。 首先是随时间变化的汇率,这是您在大多数应用程序、网站和新闻中看到的图表:
该图显示了五个关键的正常运行时间:一个在 2013 年末左右,一个在 2017 年末前后更强 - 2018 年初,然后是 2019 年的另一个,然后是 2021 年上半年的更强,紧接着现在正在发生新的快速增长。
有趣的是,在该图中观察到的最大值如何与 Google Trends 测量的兴趣随时间大致匹配:
我们检索到的 BTC:USD 交易数据的另一幅图,比我们上面所做的更有趣,是价格以对数形式处理(此处以 10 为底)的形式:
这种对数变换更清楚地发现了上升阶段。 检查从底部到顶部的相对峰高是否有很大不同,并且似乎正在缓慢衰减:第一个主峰需要大约 1.5 个数量级的增益(大约 30 倍); 第二个、第三个和第四个大约是 1 个数量级(大约 10X),最后一个大约只有 0.5 个数量级(大约 3.2X)。 因此,尽管历史最高值变得非常高,但人们后期投资的巨额利润机会正在逐渐减少。 虽然现在用比特币致富为时已晚,但 BTC:USD 汇率的整体趋势似乎表明它可能还会增长一段时间(不是告诉你在这里购买,只是从情节中天真地推断):
这些日志图包含更多数据,其他人已在以下博客文章中对其进行了分析。 不是专家,我无法判断它们,但它们确实很有趣:
结论和选读进一步阅读
我希望您在使用这些和派生的脚本来获取和使用加密数据时会很开心。 整个领域非常有趣,在过去两年中我对加密货币的研究中,我阅读了大量论文、故事和帖子,其中我已经提炼出来供您继续阅读,主要来自 Medium 和其相关出版物:
- '
- "
- 2019
- ACCESS
- 所有类型
- API
- 应用
- 应用
- 围绕
- 刊文
- 八月
- 位
- 比特币
- 博客
- 盒子
- 浏览器
- BTC
- 建筑物
- 购买
- 呼叫
- 可能性
- 码
- 收藏
- 转化
- 加密
- 加密数据
- CryptoCompare
- cryptocurrencies
- cryptocurrency
- 货币
- data
- 天
- 开发
- DID
- DX
- 早
- ETH
- 复仇
- 以太坊(ETH)
- 进化
- 交换
- 换货
- 特征
- 美联储
- 法定货币
- 数字
- 经济能力
- 金融
- 姓氏:
- 适合
- 遵循
- 申请
- 格式
- Free
- 开玩笑
- 功能
- 差距
- 理想中
- 谷歌
- 谷歌趋势
- 增长
- 相关信息
- 高
- 历史
- 创新中心
- How To
- hr
- HTTPS
- 巨大
- 人类可读
- 增加
- info
- 兴趣
- 投资
- IP
- IT
- JavaScript的
- 七月
- 保持
- 键
- 键
- 最新
- 学习
- LG
- 有限
- Line
- 友情链接
- 清单
- 加载
- 匹配
- 数学
- 中等
- 指标
- 个月
- 消息
- NFT
- 数字
- 优惠精选
- 在线
- 打开
- 意见
- 秩序
- 订单
- 其他名称
- 员工
- 帖子
- 当下
- 车资
- 私立
- 代码编程
- 采购
- 范围
- 价格表
- 原
- 实时的
- 记录
- 研究
- 响应
- 成果
- 回报
- 运行
- 运行
- 搜索
- 选
- 简易
- 网站
- 技能
- 小
- So
- 开始
- 商店
- 故事
- 系统
- TD
- 次
- 音
- 最佳
- 跟踪时
- 交易
- 转型
- 趋势
- 更新
- 最新动态
- USD
- 折扣值
- 可视化
- 卷筒纸
- 网页浏览器
- 您的网站
- 网站
- 每周
- 雅虎
- 年