美文网首页
如何画出BTC微笑曲线

如何画出BTC微笑曲线

作者: 焕涛 | 来源:发表于2020-12-11 16:46 被阅读0次
image-20201211150802224

上面的图片是《定投改变命运》里面笑来老师提供的BTC曲线图,但是前段时间BTC价格在上涨,价格曲线图应该有很大变化。所以我就想找下原始数据,自己绘制然后对比一下,应该会出现微笑曲线。(虽然笑来老师在讲课过程中也提供过类似的照片,但是自己绘制一下会印象更加深刻)

获取数据

前几天在我的一篇文章里面,提到了Coinmarketcap这个网站,是笑来老师每天获取BTC价格的来源。

既然如此,我就想顺便找一下能不能获取所有历史价格

果然,这是一个数据齐全的网站,所有历史价格在下方的地址:

https://coinmarketcap.com/currencies/bitcoin/historical-data/?start=20130429&end=20201211

在网站的右上角可以把语言改成简体中文,就可以有中文的网页了。

上面中的start=end=之后的日期修改之后就可以获取这个时间段内的所有数据了。

最近的数据:

image-20201211113516261

最早的数据:

image-20201211113549180

把数据复制下来:

image-20201211113631949

用Exce打开,把数据复制进去

image-20201211114054602

把日期设置成我们常用的显示方式:

image-20201211114142938

再把标题上面的*号删掉,现在是这样显示的:

image-20201211114245772

然后另存为BTC_price_history.txt文件,确保文件以uft-8编码保存。

用记事本打开是这样的:

image-20201211115341010

整理数据

以下的过程参考的是笑来老师的源码

https://github.com/xiaolai/regular-investing-in-box/blob/master/data/visualization.py

我在前几天的文章里面把我的理解过程记录下来:

https://zuopin.xin/posts/9ad4188fa70df653d800fb805f14e79cb7388238a90be6aba4ce53a3f98fe17b

Jupyter notebook里面运行:

image-20201211115604112

日期是逆序的,我们把日期顺序对调一下:

image-20201211121944850

序号也是反过来的,我们增加一列序号:

image-20201211123730115

用下面的代码计算历史最高价格,然后增加列“Closing Price"和”Base",把里面的数据从文本转换成数字格式,以便画图使用。

#增加收盘价用来计算

closing_price=[]
base = []
for i in range(number_of_rows):
#     print(series2.at[i,"收盘价"])#series.at[] not series.at()
    closing_price.append(float(sub(r'[,]','',series2.at[i,"收盘价"])))#series.at[] not series.at(),转换为可运算数字格式
    base.append(0)
historic_high=max(closing_price)
print("历史最高价格: ",historic_high)
series2["Closing Price"]=closing_price
series2["Base"] = base
image-20201211142759499

historic_high为历史最高价格

当前数据是这样的:

image-20201211142950564

series2['Closing Price'].idxmax()可获得历史最高价格的索引,赋予date_numseries2.loc[series2['Closing Price'].idxmax()]可以显示那一行的内容。series2.loc[series2['Closing Price'].idxmax()]["日期"]获取历史最高价格的日期,然后把日期值赋予historic_high_datedate_numhistoric_high_date会在后面参与画图。

运行如下:

image-20201211144921527

绘制图片

使用matplotlib

画图代码如下:

from matplotlib.ticker import FuncFormatter
import matplotlib.ticker as ticker
tick_spacing = 250
#通过修改tick_spacing的值可以修改x轴的密度
from datetime import datetime
import matplotlib.dates as mdates
# draw the figure

ax = plt.gca()
ax.yaxis.set_major_formatter(FuncFormatter(lambda y, _: '{:.0f}'.format(y))) 
ax.xaxis.set_major_locator(ticker.MultipleLocator(tick_spacing))
series2.plot(kind='line', x='日期', y='Closing Price', ax=ax, figsize = (20,10), color="blue")
series2.plot(kind='line', linestyle='dotted', x='日期', y='Base', ax=ax, figsize = (20,10), color="gray")
plt.xlabel(f'\nBTC history price')
for num in range(0,20001,2500):
    plt.axhline(num, linestyle='dotted',color="gray")
    
for date in range(0,20001,500):
    plt.axvline(date, linestyle='dotted',color="gray")



plt.annotate(r'$%s,%s$' %(historic_high_date,historic_high),xy = (date_num,historic_high),xycoords = 'data',
             xytext=(+30,-30),textcoords = 'offset points',fontsize = 16
             ,arrowprops = dict(arrowstyle='->',
                                connectionstyle="arc3,rad=.2"))


plt.show()

图片如下:

image-20201211145352477

微笑曲线出现了,与下面原来的图片对比下:

image-20201211150802224

最近在学习numpymatplotlib,主要学习如何画数据图,以上的过程当作备忘。

虽然直接使用Excel就可以画出这样的图片了,这个过程并没有简单。但是以后如果直接设置好爬虫,自动获取数据,然后根据每天的数据自动更新,自动生成新的图片,把这个过程自动化,那还是更方便的。只是一开始麻烦点,然后以后就不用去修改数据了。

我只是刚刚入门Python 的一个小白,有什么错误欢迎批准指正,谢谢!

相关文章

  • 如何画出BTC微笑曲线

    上面的图片是《定投改变命运》[https://ri.firesbox.com/#/cn/]里面笑来老师提供的BTC...

  • 如何在PPT中画曲线箭头 2019-08-07

    如何在PPT中画曲线箭头 PPT中有一些曲线箭头工具,但都不美观,怎么调整都不舒服,这个教程告诉你如何画出一个任意...

  • 如何优雅地画出渐变曲线

    画贝塞尔曲线,通过四个点算出两个控制点,画出连接中间两个点的曲线 实现渐变的方法:

  • 房地产创富之创意园项目解密

    看点与思考: 什么是微笑曲线?如何挖掘微笑曲线两端的价值?创意产业园有哪些内涵?与地产开发的关系?创意地产还可以怎...

  • 微笑曲线

    1,你认为微笑曲线还有存在的必要嘛 有 在互联网时代的改变 在互联网时代,微笑曲线在产品的销售和售后服务的利润会增...

  • 微笑曲线

    微笑曲线说的是,在产业链的两端,附加值更高,中间的组装、装配环节附加值更低。 人生的幸福、一生的投资,都遵循微笑...

  • 微笑曲线

    对事情最感兴趣的时候,是第一次知道他和他要发生之前。而在中间时间,他不会被关注。 就像我后天去海南自驾,但现在完全...

  • 微笑曲线

    今天和政府领导在对接产业园相关事项,领导提到目前产业存在的一个现状,就是有些产业园虽然在做运营提升,但都停留在一个...

  • 微笑曲线

    秋天来了! 今年夏季的雨水特别多,正在远离的2022这个夏天,给人们留下了湿漉漉的印象。 甚至需要开空调睡觉的夜,...

  • W6L3-商业基础-产业链

    1、微笑曲线还有现实意义吗? 答:微笑曲线已经“死”了,因为微笑曲线 上层是 研发与设计还有营销与服务,下层是生产...

网友评论

      本文标题:如何画出BTC微笑曲线

      本文链接:https://www.haomeiwen.com/subject/hhojgktx.html