如何快速入门量化?市面上量化学习的书单一大堆,太复杂了,看了一分钟就想放弃了,有没有简单速成的办法?
hello,我是毛豆。应邀出一个量化入门教程,用最精简的代码和案例带你快速入门量化,每期内容控制在3分钟以内,只讲最干的干货,想要学习量化又不知道该如何上手的小伙伴赶紧看过来!
获取历史行情数据
获取数据是所有后续数据分析的第一步,也是必不可少的一步!
数据源
这里使用tushare数据库。Tushare是一个免费、开源的python财经数据接口包。使用前需先安装Python、pandas和lxml。
lxml安装指令:pipinstalllxml
然后通过pip指令安装tushare:pipinstalltushare
获取股票的历史行情数据
tushare提供get_hist_data和get_k_data两个接口来获取历史行情。
get_k_data仅返回开盘价、收盘价、最低价、最高价、成交量数据;
get_hist_data在上面的基础上还会返回价格变动、涨跌幅、5日/10日/20日均价、5日/10日/20日均量。
以剑桥科技为例,使用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()
返回如下:
获取指数的历史行情数据
获取指数数据也是同样的方式,但不返回换手率。
使用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()
返回如下:
绘制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()
结果展示如下:
回测:旋风冲锋策略说明
实盘:四月策略数据公示&常见问题说明
文章为作者独立观点,不代表股票交易接口观点