1、序言
最近接触了Python语言,对其功能和编程甚感兴趣,无论是绘制冬奥期间的冰墩墩,还是与股票相关的量化策略,似乎这个编程语言无所不能,于是最近开始学习Python。
近期上证A股走势不太理想,2008年3000点保卫战,2022年还在3000点保卫战,作为一名想要翻身的韭菜(觉悟不行,合格的韭菜就应该好好生长,然后安心等着被割),还是想从量化角度去试试。作为初学者,还是先从绘制股票图形开始,今天先学习绘制分时图。
2、原理
绘制图形需要有数据来源,Python也不例外,本文所涉及的数据从聚宽投资获取,网站注册就可免费使用。导入numpy包、Pandas包和matplotlib,通过get_price函数可以得到我们需要的股票行情数据。再根据得到的数据进行绘图处理。
2.1、数据源获取
我们以平安银行(000001)为例,获取2022-04-29的数据,程序如下:
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
dataframe1=get_price('000001.XSHE',end_date='2022-04-30',frequency='minute',count=240)
程序解读:import为导入包,将numpy导入命名为np, pandas导入命名为pd,从matplotlib获取pyplot导入命名为plt。
二维数组dataframe1通过get_price()函数获取000001的数据,数据内容,截至日期2022-04-30,时间长度为1分钟,数量为240,即:获取的数据内容为2022-04-30前的240分钟行情数据,根据A股的时间,2022-04-29日为交易日,全天交易4个小时(240分钟),也就说该指令可以得到000001股票4月29日的行情数据。get_price()函数具体用法,读者可以自行查阅资料。
2.2、绘制图形程序
根据Python绘图指令,本文先测试了subplot()函数,程序如下:
myc1=dataframe1['close'] #获取每分钟的收盘价
myc2=dataframe1['volume'] #获取每分钟的成交量
plt.figure(figsize=(12,6)) #设置图形框大小
plt.subplot(2,1,1)
plt.plot(myc1,"-b") #图形框1,蓝色线绘制收盘价
plt.subplot(2,1,2)
plt.plot(myc2,"-r") #图形框2,红色线绘制成交量
plt.show()
2.3、subplot()函数运行结果
图中我们可以看到,分时图虽然绘出,但中间11:30-13:00之间的休息时间并没有跳过,因此需要再做处理,鉴于本人初学,查阅了不少资料及网站,未能结局,因此尝试改用其他函数处理 。
2.4、add_axes()函数
该函数为新增子区域函数,在这里的作用是添加两个图形框,两个框分别绘制分时图曲线和分时成交量,其原理与subplot()函数一致,不过add_axes()函数的X轴不再是时间轴,而是通过add_axes()定义,程序如下
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
fig, axes1 = plt.subplots(2, 1, figsize=(12,6))
dataframe1=get_price('000001.XSHE',end_date='2022-04-30',frequency='minute',count=240)
axes1[0].plot(list(dataframe1['close'])[1:],color='green')
axes1[1].plot(list(dataframe1['volume'])[1:],color='red')
axes1[0].set_title('平安银行分时图')
axes1[1].set_title('分时成交量')
plt.show()
2.5、add_axes()运行结果
根据图形可以看出,add_axes()跳过了11:30-13:00休息的时间段,但其X轴也不再对应实际的时间轴。
3、综述
通过subplot()函数和add_axes()都可以将股票分时图绘制出来,但都存在一定的缺陷,所以还需要继续学习研究,也希望大佬指点经验,大家多沟通交流,哈!