专栏首页区块链技术指北Python 统计个人加密货币资产

Python 统计个人加密货币资产

这是「区块链技术指北」的第 7 篇文章。

如果对我感兴趣,想和我交流,我的微信号:Wentasy,加我时简单介绍下自己,并注明来自「区块链技术指北」。同时我会把你拉入微信群「区块链技术指北」。

背景


对个人每一笔投资进行复盘是非常有必要的。投资过后,复盘看到的那些贪婪、恐惧、紧张、心动、烦躁、欢喜、得瑟、满意……无数种情绪一览无遗。只有通过复盘,才能知道哪笔投资有问题,哪笔投资还有改善的空间。秉承这种原则,笔者有一份区块链资产表格,里面详细记录了各种币种的分布,包含币种、全称、存储位置、数量、购买渠道、购买时间、操作记录、备注等等。另外,同一份表格其他 Sheet 记录了不同交易平台的订单记录,交易时间、类型、交易对、单价、数量、总价、手续费等等。一份表格,就可以窥探所有的投资逻辑。笔者建议进行区块链投资的读者也进行这样的梳理,绝对有价值。

摆在笔者面前的一大难题,区块链资产比较分散,各类钱包、各大交易所,同一币种在不同交易所价格还不一样。怎么样精准快速统计个人资产,这还是个问题。

调研


笔者进行了一番调研,可以通过 MyToken App 进行汇总统计。但一看 MyToken 的设计,需要注册账户,也就是说你添加的所有资产,从他们的后台都可以看到,对于隐私比较看重的笔者自然是无法忍受。况且 MyToken 还存在价格更新频率不及时的问题,总之使用一段时间,体验不是特别友好。另外有一个网站叫做 COUNT MY CRYPTO 也可以统计,不过需要逐个添加,效率太慢。对于一个 Geek 来说,有没有更快更好的方法呢?答案是有,自己造轮子呗。

去 GitHub 找了一遍,有一个叫做 coinmarketcap 的 Python 库可以实现以 CNY 形式查询币种的现值。不过试用了下,还是决定自己调用 CoinMarketCap 的原生 API 实现。

我们来看下 CoinMarketCap 是什么网站。

CoinMarketCap 是一个网站,它追踪大多数已经触及市场的山寨币,以及比特币,并向用户展示每枚币的美元和比特币的现值。

大多数查看行情的网站都是对标 CoinMarketCap 的数据,所以 CoinMarketCap 提供的数据极具参考价值。查看了 CoinMarketCap 的 API,简洁明了,实现思路也已经形成,于是撸起袖子就是干。

解决


查看 CoinMarketCap API,我们可以看到提供的 API 是 Public API,也即是不需要私钥认证即可请求。主要提供三类方法:Ticker、Ticker (Specific Currency)、Global Data。我们需要调用的是 Ticker 和 Ticker (Specific Currency)。

Ticker (Specific Currency) 的调用方法如下:

https://api.coinmarketcap.com/v1/ticker/bitcoin/?convert=CNY

我们尝试浏览器访问,得到如下 JSON 格式的数据:

如果读者对以上 JSON 格式数据感兴趣,可以自行琢磨下。

也就是说,bitcoin 表示 IDconvert=CNY 表示转换为人民币。问题是这个 ID 怎么获取呢。

笔者查看 Ticker 方法,发现如下的调用可以获取所有的 Ticker(limit=0 表示没有限制)。

curl -G https://api.coinmarketcap.com/v1/ticker/?limit=0 > ~/Downloads/ticker

通过 Terminal 终端请求之后,得到了一个叫做 ticker 的文件,使用 sed + vim 进行文本处理后,可以得到 1355 个 Ticker 的 ID 的 ticker_id.txt 文本文件,也即是说目前 CoinMarketCap 收录了 1355 种 Token。笔者对 ticker 文件进行二次处理,得到了一个叫做 ticker_id_full.txt 的文件,除了 Ticker ID 之外,还有 name 和 symbol。

笔者注:1355 种 Ticker 是当前的数据,Ticker 数量每天都在增加。后续笔者也会去维护 GitHub repo 总的 ticker_id.txt 和 ticker_id_full.txt 文本文件。

好了,至此就是使用 Python 实现统计区块链资产了。

笔者建立了一个叫做 cryptocurrency.txt 的文本,第一列是 Token 的 ID,第二列是 Token 的数量,列之间以空格进行分隔,文件示例如下:

bitcoin 10000 ethereum 10000 eos 10000 zcash 10000

接下来就是循环读取,requests 请求获取 JSON 中的 price_cny 属性,然后累加,核心代码如下:

脚本编写完成后,执行 python cryptocurrency.py,就会得到如下输出:

看到这么多现值,是不是很酷啊,有时产生下错觉也挺好的。

资源


相关代码已提交到 GitHub,读者可以自行 clone 玩下,链接:

  • mycrypto, https://github.com/dbarobin/mycrypto

小结


通过本文提供的方法得到区块链资产现值,然后和投入资产进行对比,就能计算出盈利率,每个人都应该对自己的投资行为负责。

解决问题需要执行力的,如果觉得有价值,思考成熟之后就去做。在解决问题的过程中,就会发现自己的能力就这样慢慢提升了,希望本文对读者有所帮助。

本文分享自微信公众号 - 区块链技术指北(BlockchainAge)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 中国互联网协会发布:《2018中国互联网发展报告》

    在2018中国互联网大会闭幕论坛上,中国互联网协会正式发布《中国互联网发展报告2018》(以下简称《报告》)。《中国互联网发展报告》是由中国互联网协会与中国互联...

    钱塘数据
  • 考研英语-1-导学

    英二图表作文要重视。总体而言,英语一会比英语二难点。不过就写作而言,英语二会比英语一有难度,毕竟图表作文并不好写。

    用户1335799
  • 不只是软件,在线也可以免费下载百度文库了。

    不管是学生,还是职场员工,下载各种文档几乎是不可避免的,各种XXX.docx,XXX.pptx更是家常便饭,人们最常用的就是百度文库,豆丁文库,道客巴巴这些下载...

    课代表
  • SQL中GROUP BY用法示例

    GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类...

    Awesome_Tang
  • 复杂业务下向Mysql导入30万条数据代码优化的踩坑记录

    从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负...

    haifeiWu
  • 【倒计时7天】2018教育部-腾讯公司产学合作协同育人项目申请即将截止!

    腾讯高校合作
  • 【系统设置】CentOS 修改机器名

    ken.io
  • 知识体系解决迷茫的你

    最近在星球里群里都有小伙伴说道自己对未来的路比较迷茫,一旦闲下来就不知道自己改干啥,今天我这篇文章就是让你觉得一天给你 25 个小时你都不够用,觉得睡觉都是浪费...

    桃翁
  • ISUX Xcube智能一键生成H5

    腾讯ISUX
  • 理工男图解零维到十维空间,烧脑已过度,受不了啦!

    让我们从一个点开始,和我们几何意义上的点一样,它没有大小、没有维度。它只是被想象出来的、作为标志一个位置的点。它什么也没有,空间、时间通通不存在,这就是零维度。

    钱塘数据

扫码关注云+社区

领取腾讯云代金券