Python Matplotlib绘制漂亮的K线图,利用Tushare绘制K线图
1 引言
做量化分析,难免要将自己的某些指标等绘制在K线图上,或者对某些指标进行改造观察K线图和指标对应的走势关系。那么用Python如何绘制和炒股软件类似的效果呢。
2 准备工具
(1)数据源:Tushare(国内做量化研究高质量数据)
Tushare大数据社区
(2)常用指标计算:Ta-lib (离线下载安装链接如下)
https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib
(3)K线绘图工具:mpl_finance.py (下载链接如下)
https://download.csdn.net/download/yifengdongying/29738748
3 开始工作
3.1 导入依赖包
import mpl_finance
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import ticker
import talib
3.2 编制计算指标的函数
这里只计算了最常见的两个指标MACD、KDJ,量化小伙伴,可以自己进行加工改造,找到适合自己的指标。
# 利用talib计算MACD指标
def macd_cal(df):df['DIFF'], df['DEA'], df['MACD'] = talib.MACD(df['close'].values)df['MACD'] *= 2 #国内MACD需要乘以2return df# 利用talib计算KDJ指标
def kdj_cal(df):df['kdj_k'], df['kdj_d'] = talib.STOCH(df['high'].values,df['low'].values,df['close'].values,fastk_period=9,slowk_period=5,slowk_matype=1,slowd_period=5,slowd_matype=1) # 计算kdj的正确配置df.loc[:, 'kdj_j'] = 3.0 * df.loc[:, 'kdj_k'] - 2.0 * df.loc[:, 'kdj_d']return df
3.3 编制绘图的函数
# k线绘制
def ax_kline(ax, df):date_tickers = df['trade_date'].valuesdef format_date(x, pos=None):# 由于前面股票数据在 date 这个位置传入的都是int# 因此 x=0,1,2,...# date_tickers 是所有日期的字符串形式列表if x < 0 or x > len(date_tickers) - 1:return ''return date_tickers[int(x)]date_len = len(df)dateLoc = int(date_len / 10 + 0.5)ax.xaxis.set_major_locator(ticker.MultipleLocator(dateLoc))ax.xaxis.set_major_formatter(ticker.FuncFormatter(format_date))ax.set_ylabel('K')ax.grid(True)plt.setp(ax.get_xticklabels(), visible=False)mpl_finance.candlestick_ochl(ax=ax,quotes=df[['iNum', 'open', 'close', 'high', 'low']].values,width=0.7,colorup='r',colordown='g',alpha=0.7)ax.set_title('%s' % (df['ts_code'].iloc[0]))# kdj指标绘制
def ax_kdj(ax, df):ax.plot(df['iNum'], df[['kdj_k', 'kdj_d', 'kdj_j']])# make these tick labels invisibleax.set_ylabel('KDJ')ax.grid(True)plt.setp(ax.get_xticklabels(), visible=True)ax.set_title('KDJ:', loc='right')# macd指标绘制
def ax_macd(ax, df):ax.bar(df['iNum'], df['MACD'], color='b')ax.plot(df['iNum'], df[['DIFF', 'DEA']])ax.set_ylabel('MACD')# ax.set_title('MACD_%s_%0.2f'%(df['ts_code'][0],success_rate_macd))ax.grid(True)plt.setp(ax.get_xticklabels(), visible=True)# 绘图主程序
def kplot(df, index):'''df: 数据格式如下(实例): ts_code 000001.SZ trade_date 20190329open 12.26high 12.82low 12.21close 12.82pre_close 12.22change 0.6pct_chg 4.91vol 1.66951e+06amount 2.1083e+06DIFF -0.00807692DEA -0.00448718MACD -0.00717949kdj_k 46.7579kdj_d 47.4992kdj_j 45.2753Name: 20190329, dtype: object'''df = df.sort_values('trade_date')df['iNum'] = np.arange(len(df))if index == 'MACD':fig = plt.figure(figsize=[12, 8])ax1 = plt.axes([0.1, 0.3, 0.8, 0.6])ax_kline(ax1, df)ax2 = plt.axes([0.1, 0.1, 0.8, 0.2], sharex=ax1)ax_macd(ax2, df)elif index == 'KDJ':fig = plt.figure(figsize=[12, 8])ax1 = plt.axes([0.1, 0.3, 0.8, 0.6])ax_kline(ax1, df)ax2 = plt.axes([0.1, 0.1, 0.8, 0.2], sharex=ax1)ax_kdj(ax2, df)return fig
3.4 获取K线数据并绘图
if __name__ == '__main__':import tushare as tsts.set_token('********需要用户自己去Tushare注册获取Token链接在第2章******')pro = ts.pro_api()df = ts.pro_bar(api=pro, ts_code='600036.SH', adj='qfq', start_date='20210301')print(df.shape)df = df.sort_values('trade_date')df['iNum'] = np.arange(len(df))df = macd_cal(df)df = kdj_cal(df)df['iNum'] = np.arange(len(df))date_tickers = df['trade_date']fig = kplot(df, 'MACD')plt.show(fig)
4 结果展示
4.1 K线图+MACD
4.2 K线图+KDJ
Python Matplotlib绘制漂亮的K线图,利用Tushare绘制K线图相关推荐
- 用matlab对称振子E面方向图,利用matlab绘制电基本振子e面方向图和空间立体方向图.doc...
利用matlab绘制电基本振子e面方向图和空间立体方向图.doc 微波技术与天线实验报告学院:信电学院班级:通信2班姓名:学号:2014年4月29日1利用matlab绘制电基本振子E面方向图和空间立体 ...
- 利用tushare绘制投资组合可行集python代码
投资组合可行集即风险资产可能形成的所有投资组合的总体,位于可有效边界上或其内部. 本文以包含四支股票的投资组合为例,分别为贵州茅台(600519),中天科技(600522),万科A(000002),上 ...
- 用matlab绘制抛物线y的x平方,利用matlab绘制多重x/y曲线
今天需要画个双x轴曲线.在matlab中有plotyy()函数可方便实现双y轴曲线,而没有现成的plotxx();但是可以利用low_level函数来回绘制,程序如下: %%%%%%%%%%%%%%% ...
- 分隔线演练-利用参数增加分隔线的灵活度
def print_line(char, times):print(char * times)print_line("hi ", 40)
- 绘制渐变色扇形图 -基于python - matplotlib 颜色地图plt.cm模块儿
绘制渐变色扇形图 -基于python - matplotlib 颜色地图cm模块儿 ʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔ ...
- Java通过JfreeChart生成转Base64图片字符串(饼图、折线图、柱状图、折线图-多条、3D柱状图、气泡图、时序图、曲线图、区域图、分布图、联合分类图、双X轴图、K线图、柱状图-横向等图)
工具类 CreatLineChart.java package DrawLine;import java.awt.BasicStroke; import java.awt.Color; import ...
- Python Matplotlib教程
Python Matplotlib教程 文章目录 Python Matplotlib教程 教程特点 阅读条件 数据可视化是什么 数据可视化 数据可视化应用场景 Matplotlib是什么 Matplo ...
- python Matplotlib库基础
目录 Matplotlib 数据可视化入门 Pyplot 绘图 自定义配置文件 rcParams 创建绘图窗口 绘制子图 绘制饼图 绘制折线图 绘制条形图 绘制散点图 绘制热点图 绘制箱型图 绘制分类 ...
- Python Matplotlib散点图
Python Matplotlib散点图 散点图用于在水平轴和垂直轴上绘制数据点,它表示了因变量随自变量变化的趋势.通俗地讲,它反映的是一个变量受另一个变量的影响程度. 散点图将序列显示为一组点,其中 ...
最新文章
- jquery gridly (拖拽插件)
- Python 技术篇-sha256()加密的使用方法,sha1、md5加密方法
- 《基于张量网络的机器学习入门》学习笔记7
- P4503-[CTSC2014]企鹅QQ【字符串hash】
- 格力关联公司公开“菜谱的推荐方法”相关专利
- Linux配置防火墙
- 如何通过git客户端上传项目到github上
- Android进阶之路 - 双端交互之传递Base64图片
- 软件测试答疑:抽奖按钮怎么测试?
- Matlab画柱状图和饼状图以及横纵坐标设置,宽度设置等
- CICD篇-Travis-CI环境搭建
- MySQL引用ibd_Linux下使用ibd文件实现MySQL的数据导入和使用
- ConstraintLayout实现左中右布局
- unity步步生花(触发类互动)
- springCloud微服务生态圈囊括—— 服务注册,服务调用,服务降级,熔断。(1)
- 【微信小程序】圆环进度条
- SAP中库存确定组的应用简析
- reghdfe:多维面板固定效应估计
- 用MATLAB程序控制伺服电机,使用MATLAB和Arduino开发板进行步进电机控制
- 高职高专计算机b级,高职高专英语B级考试真题.docx
热门文章
- MySQL中的碎片整理
- 工业大数据丨“宝刀”在手,却也要驭刀有术
- Phoenix 5.0 hbase 2.0 org.apache.hadoop.security.authentication.util.KerberosUtil.hasKerberosKeyTab
- 固体力学之非线性、小变形假设
- 刀郎:五一夜市的兄弟
- pline加点lisp_[下载][原创]非常好用的AutoLisp工具集合(New)
- 简单的Web控制树莓派小车
- 高防IP的定义与作用
- Android 实现护眼模式
- 数据库服务器修改地址,SQL数据库服务器IP地址修改