我是鱼叔,一个理性的投资者
量化交易学习(1)- 如何用python调用CoinGecko Api
hello,大家好,我是鱼叔,在今年的年度报告里,我提到想要在22年打造一个量化交易系统,因此会推出相关系列的偏技术文章「量化交易学习」 ,这类文章适合那些想要学习加密市场量化交易,同时对编程不抗拒的读者。试想一下,如果你能用计算机帮你去监控市场,那你是不是会有更多的时间去干一些更有意义的事。先说一下,我个人有一定的编程基础,但是也是刚开始学习python,因此我和大家的起点其实是差不多的,这条学习之路需要你有兴趣有探索欲,我们可以互相探讨共同进步。正文:1. 数据获取的重要性在设计交易系统之前,我们先要获取市场上的数据,比如当前的价格、交易量、市场总值等等,在获取这些数据后,你才能可以基于此实施分析。 市面上很多平台都已经开放数据库供查询,这里我推荐的是CoinGecko,因为它的数据免费而且访问次数够个人使用,当然你有余力的话可以去尝试其他的平台,比如CoinMarketCap等。(注意,访问这类数据时要有「魔法」)2. 如何获取数据这里主要是调用Coingecko提供的API,有两种方式,分别是requests库进行url访问来获取,和直接载入coingecko的库,这里我...
Immutable X — L2的盗版open sea
hello,大家好,我是鱼叔,最近有朋友想让我研究一下Immutable X这个项目怎么样,本文就是我最近研究的一个报告输出。Immutable X 是什么ImmutableX 是专注于做NFT的以太坊L2项目,主要基于Stakeware提供的L2技术进行开发。Immutable X 的优势和很多L2项目一样,其初衷都是为了减少交易费用,这一点可以让NFT的交易和流通成本大大降低。另外由于是L2,所以交易速度也会有所提高,并且和大多数L2项目一样,支持从以太坊主网将ETH转入。IMX 的代币模型immutable x 发行了自己的代币IMX,其主要作用有:治理投票、交易费用、以及质押收益。其中我觉得交易费用中要求用IMX来支付,这一点增加了IMX的使用范围,值得好评。如果immutable x交易量增加,那么对于IMX的持有者来说必然是件好事,但是如果缺少交易量,则IMX币价上升途径受限。因此,可以看出其是否值得投资,关键在于是否会吸引用户。Immutable X 的不足之处NFT流量是关键我们可以把Immutable X看作是Opensea最大的竞争对手,因为Immutable...
Web 3.0 的第一篇文章
hello,大家好,我是鱼叔,这是我在Mirror上的第一篇文章,之后我也会尽量在这里输出和同步我的文章。 在一个区块链项目里写文章,我觉得是一件很酷的事情,希望之后能持续输出。 BTW, 最近我的RNDR投资收益非常可观。 2021/11/18
量化交易学习(1)- 如何用python调用CoinGecko Api
hello,大家好,我是鱼叔,在今年的年度报告里,我提到想要在22年打造一个量化交易系统,因此会推出相关系列的偏技术文章「量化交易学习」 ,这类文章适合那些想要学习加密市场量化交易,同时对编程不抗拒的读者。试想一下,如果你能用计算机帮你去监控市场,那你是不是会有更多的时间去干一些更有意义的事。先说一下,我个人有一定的编程基础,但是也是刚开始学习python,因此我和大家的起点其实是差不多的,这条学习之路需要你有兴趣有探索欲,我们可以互相探讨共同进步。正文:1. 数据获取的重要性在设计交易系统之前,我们先要获取市场上的数据,比如当前的价格、交易量、市场总值等等,在获取这些数据后,你才能可以基于此实施分析。 市面上很多平台都已经开放数据库供查询,这里我推荐的是CoinGecko,因为它的数据免费而且访问次数够个人使用,当然你有余力的话可以去尝试其他的平台,比如CoinMarketCap等。(注意,访问这类数据时要有「魔法」)2. 如何获取数据这里主要是调用Coingecko提供的API,有两种方式,分别是requests库进行url访问来获取,和直接载入coingecko的库,这里我...
Immutable X — L2的盗版open sea
hello,大家好,我是鱼叔,最近有朋友想让我研究一下Immutable X这个项目怎么样,本文就是我最近研究的一个报告输出。Immutable X 是什么ImmutableX 是专注于做NFT的以太坊L2项目,主要基于Stakeware提供的L2技术进行开发。Immutable X 的优势和很多L2项目一样,其初衷都是为了减少交易费用,这一点可以让NFT的交易和流通成本大大降低。另外由于是L2,所以交易速度也会有所提高,并且和大多数L2项目一样,支持从以太坊主网将ETH转入。IMX 的代币模型immutable x 发行了自己的代币IMX,其主要作用有:治理投票、交易费用、以及质押收益。其中我觉得交易费用中要求用IMX来支付,这一点增加了IMX的使用范围,值得好评。如果immutable x交易量增加,那么对于IMX的持有者来说必然是件好事,但是如果缺少交易量,则IMX币价上升途径受限。因此,可以看出其是否值得投资,关键在于是否会吸引用户。Immutable X 的不足之处NFT流量是关键我们可以把Immutable X看作是Opensea最大的竞争对手,因为Immutable...
Web 3.0 的第一篇文章
hello,大家好,我是鱼叔,这是我在Mirror上的第一篇文章,之后我也会尽量在这里输出和同步我的文章。 在一个区块链项目里写文章,我觉得是一件很酷的事情,希望之后能持续输出。 BTW, 最近我的RNDR投资收益非常可观。 2021/11/18
我是鱼叔,一个理性的投资者

Subscribe to 鱼叔 UncleFish

Subscribe to 鱼叔 UncleFish
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
hello 大家好,我是鱼叔。今天是量化投资学习的第二课,如何用python抓取数据绘制k线,这节教程是基于上一节教程开发的,主要是通过调用CoinGecko提供的api接口实现数据的提取。虽然实现这个功能只要十五行的代码,但是我也花了不少时间思考和定位问题,总之希望能大家一丝启发。(ps,当我们能绘制出k线时,那下一步就可以进行量化分析了,代码在文章末尾)
能通过输入项目代号和时间范围抓取对应的价格
根据时间和价位进行图形绘制,形成k线图
通过get_coin_market_chart_by_id函数进行数据的挖掘,这个函数有三个入参:id、vs_cuurency、date_len。分别代表着项目名称、你想要的计价单位以及想要的数据时间周期(这边我统一用usd作为计价单位)。
将数据中的时间和价格分别分离出来,存到两个队列里。
将时间的表现形式从「时间戳」转换为「正常时间」。注意api返回的时间为毫秒级的时间戳,因此要除以1000进行转换。此外返回的时间为小时级别数据,也就是说你会得到24*天数个数据。
调用matplotlib提供的plot函数进行图表的绘制。
封装成函数,输入参数为id,时间长度两个变量。
pycoingecko(CoinGecko提供的api库,需要自行安装)
matplotlib(用于绘制图,需要自行安装)
time(python自带的时间转换库,不需要额外安装)
https://www.jianshu.com/p/2d93ec38ddcf
https://blog.csdn.net/wangzirui32/article/details/117390474
这是我抓出来90天btc价格走势图,第二张图是coingecko截图下来的90天k线走势图,其实两者走势基本一样,也就是说至少k线的绘制上没有太大的问题。


目前似乎只支持抓90天以内的数据,超出了长度好像就没法进行抓取,后期可以考虑自行整改官方API实现较长时间数据提取。
由于数据量偏大,在拖动图片的时候可能会存在卡顿,后期可以在保证k线形状的情况下减少绘图用的点。
在k线图上增加一些标记物,比如中值点、最大值、最小值等。
丰富k线内容,包括市值,交易量等。
可能很多朋友会说平台提供的k线已经很好用了,为什么要自己绘制呢?事实上,平台确实提供了不少的功能,很多功能也很强大,但是这个过程是被动的,你没法主动地把某两个参数结合起来分析,受限于平台提供的功能亦或是需要成为它们的vip等等。而自己搭建量化系统是一个主动学习探索的过程,你可以将你想到的参数都放进自己的模型里,来打造属于你的交易策略。
具体函数的代码(确实十五行):
def price_market_draw(id, time_len):
cg = CoinGeckoAPI()
coin_data = cg.get_coin_market_chart_by_id(id, 'usd', time_len) #获得对应代币的价格
coin_time = []
coin_price = []
for i in range(int(time_len)*24): # 由于返回的是小时制,所以总数据等于天数*24
time_stamp = coin_data['prices'][i][0]/1000 # 返回的是毫秒级时间戳所以除以1000转换成秒级进行处理
time_local = time.localtime(time_stamp) # 转换成本地时间
dt = time.strftime("%Y-%m-%d %H:%M:%S", time_local) # 进行数据的转换方便观察
coin_time.append(dt) # 存入时间队列
coin_price.append(coin_data['prices'][i][1]) # 存入价格队列
plt.plot(coin_time, coin_price, linewidth=2) # 图标绘制,第一个参数是x轴,第二个参数是y轴
plt.title(id + ' ' + time_len + 'days table', fontsize=14)
plt.xlabel("time", fontsize=14)
plt.ylabel("usd", fontsize=14)
plt.show()
调用参考
from pycoingecko import CoinGeckoAPI
import matplotlib.pyplot as plt
import time
if __name__ == '__main__':
#print(response)
price_market_draw('bitcoin', '90')
#调用btc90天的数据形成k线图,第一个参数是代币名字,第二个天数,天数要小于等于90天
我是鱼叔,一个理性的币圈投资和输出者。
【2021 鱼叔的投资报告 语雀版】 【2021 鱼叔的投资报告 公众号版】
有兴趣的朋友可以关注鱼叔的持仓 - 看看鱼叔都在买什么。
欢迎关注: 鱼叔的投资博客 / 鱼叔的投资笔记 / 鱼叔的Mirror / 公众号【鱼叔的币圈江湖】
知乎 鱼叔, 币乎 UncleFish, 巴比特海盗号 鱼叔。
如果觉得我不错,欢迎加入鱼叔的圈子
靠谱的梯子:天路云
钱包网址:TokenPocket | ImToken
hello 大家好,我是鱼叔。今天是量化投资学习的第二课,如何用python抓取数据绘制k线,这节教程是基于上一节教程开发的,主要是通过调用CoinGecko提供的api接口实现数据的提取。虽然实现这个功能只要十五行的代码,但是我也花了不少时间思考和定位问题,总之希望能大家一丝启发。(ps,当我们能绘制出k线时,那下一步就可以进行量化分析了,代码在文章末尾)
能通过输入项目代号和时间范围抓取对应的价格
根据时间和价位进行图形绘制,形成k线图
通过get_coin_market_chart_by_id函数进行数据的挖掘,这个函数有三个入参:id、vs_cuurency、date_len。分别代表着项目名称、你想要的计价单位以及想要的数据时间周期(这边我统一用usd作为计价单位)。
将数据中的时间和价格分别分离出来,存到两个队列里。
将时间的表现形式从「时间戳」转换为「正常时间」。注意api返回的时间为毫秒级的时间戳,因此要除以1000进行转换。此外返回的时间为小时级别数据,也就是说你会得到24*天数个数据。
调用matplotlib提供的plot函数进行图表的绘制。
封装成函数,输入参数为id,时间长度两个变量。
pycoingecko(CoinGecko提供的api库,需要自行安装)
matplotlib(用于绘制图,需要自行安装)
time(python自带的时间转换库,不需要额外安装)
https://www.jianshu.com/p/2d93ec38ddcf
https://blog.csdn.net/wangzirui32/article/details/117390474
这是我抓出来90天btc价格走势图,第二张图是coingecko截图下来的90天k线走势图,其实两者走势基本一样,也就是说至少k线的绘制上没有太大的问题。


目前似乎只支持抓90天以内的数据,超出了长度好像就没法进行抓取,后期可以考虑自行整改官方API实现较长时间数据提取。
由于数据量偏大,在拖动图片的时候可能会存在卡顿,后期可以在保证k线形状的情况下减少绘图用的点。
在k线图上增加一些标记物,比如中值点、最大值、最小值等。
丰富k线内容,包括市值,交易量等。
可能很多朋友会说平台提供的k线已经很好用了,为什么要自己绘制呢?事实上,平台确实提供了不少的功能,很多功能也很强大,但是这个过程是被动的,你没法主动地把某两个参数结合起来分析,受限于平台提供的功能亦或是需要成为它们的vip等等。而自己搭建量化系统是一个主动学习探索的过程,你可以将你想到的参数都放进自己的模型里,来打造属于你的交易策略。
具体函数的代码(确实十五行):
def price_market_draw(id, time_len):
cg = CoinGeckoAPI()
coin_data = cg.get_coin_market_chart_by_id(id, 'usd', time_len) #获得对应代币的价格
coin_time = []
coin_price = []
for i in range(int(time_len)*24): # 由于返回的是小时制,所以总数据等于天数*24
time_stamp = coin_data['prices'][i][0]/1000 # 返回的是毫秒级时间戳所以除以1000转换成秒级进行处理
time_local = time.localtime(time_stamp) # 转换成本地时间
dt = time.strftime("%Y-%m-%d %H:%M:%S", time_local) # 进行数据的转换方便观察
coin_time.append(dt) # 存入时间队列
coin_price.append(coin_data['prices'][i][1]) # 存入价格队列
plt.plot(coin_time, coin_price, linewidth=2) # 图标绘制,第一个参数是x轴,第二个参数是y轴
plt.title(id + ' ' + time_len + 'days table', fontsize=14)
plt.xlabel("time", fontsize=14)
plt.ylabel("usd", fontsize=14)
plt.show()
调用参考
from pycoingecko import CoinGeckoAPI
import matplotlib.pyplot as plt
import time
if __name__ == '__main__':
#print(response)
price_market_draw('bitcoin', '90')
#调用btc90天的数据形成k线图,第一个参数是代币名字,第二个天数,天数要小于等于90天
我是鱼叔,一个理性的币圈投资和输出者。
【2021 鱼叔的投资报告 语雀版】 【2021 鱼叔的投资报告 公众号版】
有兴趣的朋友可以关注鱼叔的持仓 - 看看鱼叔都在买什么。
欢迎关注: 鱼叔的投资博客 / 鱼叔的投资笔记 / 鱼叔的Mirror / 公众号【鱼叔的币圈江湖】
知乎 鱼叔, 币乎 UncleFish, 巴比特海盗号 鱼叔。
如果觉得我不错,欢迎加入鱼叔的圈子
靠谱的梯子:天路云
钱包网址:TokenPocket | ImToken
No activity yet