三分钟入门量化(一):行情数据获取&绘制k线图

如何快速入门量化?市面上量化学习的书单一大堆,太复杂了,看了一分钟就想放弃了,有没有简单速成的办法?

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()

结果展示如下:

以上就是今天的全部分享内容了,是不是很简单呢?毛豆在周末会更新这个系列,当然,在每个交易日依然会分享量化策略的实盘情况,大家记得持续关注毛豆哦。

旋风冲锋策略链接:

回测:旋风冲锋策略说明

实盘:四月策略数据公示&常见问题说明

猜你喜欢

转载自blog.csdn.net/weixin_37475278/article/details/130661058