如何快速入门量化?市面上量化学习的书单一大堆,太复杂了,看了一分钟就想放弃了,有没有简单速成的办法?
hello,我是毛豆。应邀出一个量化入门教程,用最精简的代码和案例带你快速入门量化,每期内容控制在3分钟以内,只讲最干的干货,想要学习量化又不知道该如何上手的小伙伴赶紧看过来!
第一期:介绍如何获取金融数据并绘制k线图。毛豆在每周末都会更新这个系列,建议大家收藏起来方便学习。
一、获取历史行情数据
获取数据是所有后续数据分析的第一步,也是必不可少的一步!
1.数据源
这里使用tushare数据库。 Tushare是一个免费、开源的python财经数据接口包。使用前需先安装Python、pandas和lxml。
lxml安装指令:pip install lxml
然后通过pip指令安装tushare:pip install tushare
不会安装的话也可以看官方文档:http://tushare.org/
2.获取股票的历史行情数据
tushare提供get_hist_data和get_k_data两个接口来获取历史行情。
get_k_data仅返回开盘价、收盘价、最低价、最高价、成交量数据;
get_hist_data在上面的基础上还会返回价格变动、涨跌幅、5日/10日/20日均价、5日/10日/20日均量。
以剑桥科技(603083)为例,使用get_k_data获取今年以来的历史行情数据:
df=ts.get_k_data('603083',start='2023-01-01',end='2023-05-12')
df.tail()
返回如下:
使用get_hist_data获取今年以来的历史行情数据:
df=ts.get_hist_data('603083',start='2023-01-01',end='2023-05-12')
df.head()
返回如下:
3.获取指数的历史行情数据
获取指数数据也是同样的方式,但不返回换手率。
使用get_k_data获取今年以来上证指数的历史行情数据:
df=ts.get_k_data('sh',start='2023-01-01',end='2023-05-12')
df.tail()
返回如下:
使用get_hist_data获取今年以来上证指数的历史行情数据:
df=ts.get_hist_data('sh',start='2023-01-01',end='2023-05-12')
df.head()
返回如下:
行情数据获取就介绍到这里,由于tushare数据库已经升级到tushare pro版本,想要使用更多的数据接口需要使用tushare pro账号,后续毛豆会向大家介绍。
二、绘制k线图
绘制k线图主要用到mpl_finance包中candlestick_ochl方法,没有安装mpl_finance包的话同样先通过pip指令安装。安装好之后导入:
import mpl_finance as mpf
import datetime
import tushare as ts
import matplotlib.pyplot as plt
from matplotlib.pylab import date2num
import numpy as np
比如我们想绘制剑桥科技和上证指数今年以来的k线图,那么首先使用get_k_data接口获取k线数据:
df1=ts.get_k_data('sh',start='2023-01-01',end='2023-05-12')#上证指数
df2=ts.get_k_data('603083',start='2023-01-01',end='2023-05-12')#剑桥科技
然后将date转化为时间戳格式:
#首先把date列转化为时间戳,保留原date为date1,后面还要用
df1['date1']=df1.date
df2['date1']=df2.date
df1.date=df1.date.apply(lambda x:datetime.datetime.strptime(x,'%Y-%m-%d'))
df1.date=df1.date.apply(lambda x:date2num(x))
df2.date=df2.date.apply(lambda x:datetime.datetime.strptime(x,'%Y-%m-%d'))
df2.date=df2.date.apply(lambda x:date2num(x))
#然后按顺序取date,open,close,high,low,volume,并转化为数据矩阵的格式
df1_mat=np.array(df1[['date','open','close','high','low','volume']])
df2_mat=np.array(df2[['date','open','close','high','low','volume']])
解决绘图中文乱码的问题:
#解决中文乱码
#plt.rcParams['font.sans-serif']=['Arial Unicode MS']#用于mac
plt.rcParams['font.sans-serif']=['SimHei']#用于windows
plt.rcParams['axes.unicode_minus'] = False
最后一步,绘图:
#画在1张图上,分2个子图
plt.figure(figsize=(14,10))
plt.subplots_adjust(hspace=0.45)#调整子图间距
ax1=plt.subplot(2,1,1)
ax1.grid(True)
ax1.xaxis_date()
mpf.candlestick_ochl(ax1,df1_mat,colordown='#53c156', colorup='#ff1717',width=0.3,alpha=1)
plt.ylabel("日期",size=20)
plt.xlabel("价格",size=20)
plt.title("上证指数k线图",size=20)
ax2=plt.subplot(2,1,2)
mpf.candlestick_ochl(ax2,df2_mat,colordown='#53c156', colorup='#ff1717',width=0.3,alpha=1)
ax2.grid(True)
ax2.xaxis_date()
plt.ylabel("日期",size=20)
plt.xlabel("价格",size=20)
plt.title("剑桥科技k线图",size=20)
plt.show()
结果展示如下:
以上就是今天的全部分享内容了,是不是很简单呢?毛豆在周末会更新这个系列,当然,在每个交易日依然会分享量化策略的实盘情况,大家记得持续关注毛豆哦。
旋风冲锋策略链接:
回测:旋风冲锋策略说明