![795241e219c6b47996535dc593f1577f.png](https://i-blog.csdnimg.cn/blog_migrate/49c769a617f433b1b2cb7b1c0f4d36f9.jpeg)
编辑 | Cowboy
校对 | 李明
来源 | 牛角财经
目的 | 量化工具 | 如何利用Python绘制K线和成交量组合图?附代码
![4416ecf1ec2c6ed31c91c508cad80d28.png](https://i-blog.csdnimg.cn/blog_migrate/b82d8fe3c8a2c4fb44c12f23a7e70a7b.jpeg)
速览:
本文将分享如何利用python绘制K线图,代码量不多。但是能够达到大多数读者的要求。绘制k线图重点的是非交易时间短的处理,处理不当会造成k线图空缺或收盘价不连续。读者如需文章中的代码,回复文章标题即可领取。
![85c5f8209a806916c6083bdf8bd152f2.png](https://i-blog.csdnimg.cn/blog_migrate/43f5344b0da5304658134a6dcc37d9d4.jpeg)
K线图
K线图这种图表源处于日本德川幕府时代,被当时日本米市的商人用来记录米市的行情与价格波动,后因其细腻独到的标画方式而被引入到股市及期货市场。目前,这种图表分析法在我国以至整个东南亚地区均尤为流行。
![cd380df18fdf6979ab173f9c2b143b58.png](https://i-blog.csdnimg.cn/blog_migrate/9dc6d18727e2b55263642048351ea658.jpeg)
由于用这种方法绘制出来的图表形状颇似一根根蜡烛,加上这些蜡烛有黑白之分,因而也叫阴阳线图表。通过K线图,我们能够把每日或某一周期的市况表现完全记录下来,股价经过一段时间的盘档后,在图上即形成一种特殊区域或形态,不同的形态显示出不同意义。我们可以从这些形态的变化中摸索出一些有规律的东西出来。K线图形态可分为反转形态、整理形态及缺口和趋向线等。
![fd94b10f4b11f163d0beb58563cc741e.png](https://i-blog.csdnimg.cn/blog_migrate/31555a59dcb8b6cfc48894f7fc2144e9.jpeg)
1.导入数据处理包、k线绘制模块
导入:
2D绘图包
pandas
mpl_finance.py
tushare数据源。mpl_finance.py 这里的模块需要和代码放同一个目录下运行。
代码:
import tushare as tsimport numpy as npimport matplotlib.pyplot as pltimport mpl_finance as mpfimport talib as tl
2.计算10、30日均线
这里主要设置数据的起始日期、获取股票(300427)的开高低收、成交量等基础数据并通过talib指标库中的SMA方法计算收盘价的10日均线和30日均线。时间范围:2018-04-01至2019-07-01。
注意:这里的数据是反的,我们用sort_index()按时间先后进行排序。
代码:
"设置起始日期"start_date ='2018-04-01'End_date = '2019-07-01'"导入数据"df_300427 = ts.get_hist_data('300427',start=start_date,end=End_date)df_300427=df_300427.sort_index()"计算均线"sma_10 = tl.SMA(np.array(df_300427['close']), 10)sma_30 = tl.SMA(np.array(df_300427['close']), 30)"可视化均线"ax1.plot(sma_10, label='MA10')ax1.plot(sma_30, label='MA30')ax1.plot(df_300427['close'])ax1.legend();plt.show()
run:
![977109e7e1d757c725a84ec2a398ffd9.png](https://i-blog.csdnimg.cn/blog_migrate/aab9ffc11f4660622d10ee93d7500b1c.jpeg)
3.利用mpl_finance.py模块制k线图
原来matplotlib包里面有相关绘制K线图的方法,原来的方法:import matplotlib.finance as mpf ,但是作者尝试了发现这种方式已经不行了,应该是将模块独立出来了,也就是文章中所用到的mpl_finance.py。
例如:
import matplotlib.finance as mpf
报错:
ModuleNotFoundError: No module named 'matplotlib.finance'
01
绘制K线图
利用mpl_finance.py绘制K线图是相当容易,而且不会出现K线空缺或者收盘价不连续、时间轴密集等问题。下面我们开始吧!我们将前面代码综合到这步骤。
通过mpl.candlestick2_ochl ( )方法绘制K线图,具体参数如下:
mpl.candlestick2_ochl ( ax1,开,收,高,低,k线宽度,阳线颜色,阴线颜色,透明度)
代码:
import tushare as tsimport numpy as npimport matplotlib.pyplot as pltimport mpl_finance as mpfimport talib as tl"设置起始日期"start_date ='2018-04-01'End_date = '2019-07-01'"导入数据"df_300427 = ts.get_hist_data('300427',start=start_date,end=End_date)df_300427=df_300427.sort_index()"计算均线"sma_10 = tl.SMA(np.array(df_300427['close']), 10)sma_30 = tl.SMA(np.array(df_300427['close']), 30)"可视化"fig,(ax1,ax2) = plt.subplots(2,1,figsize=(15,5))mpf.candlestick2_ochl(ax1, df_300427['open'], df_300427['close'], df_300427['high'],df_300427['low'], width=0.6, colorup='r', colordown='g', alpha=0.75)ax1.plot(sma_10, label='MA10')ax1.plot(sma_30, label='MA30')ax1.legend();ax1.grid()ax2.grid()plt.show()
run:
![ed3d92e72e79d9165c6ba037929982fd.png](https://i-blog.csdnimg.cn/blog_migrate/14804cfb0d7b5c2fe435b704f1912e95.jpeg)
02
绘制成交量图与K线图组合
绘制成交量图我们利用mpl_finance.py里面的volume_oerlay方法绘制。具体参数如下:
mpf.volume_overlay(ax2, 开,收,成交量,阳线颜色,阴线颜色,柱状宽,透明度)。
代码:
import tushare as tsimport numpy as npimport matplotlib.pyplot as pltimport mpl_finance as mpfimport talib as tl"设置起始日期"start_date ='2018-04-01'End_date = '2019-07-01'"导入数据"df_300427 = ts.get_hist_data('300427',start=start_date,end=End_date)df_300427=df_300427.sort_index()"计算均线"sma_10 = tl.SMA(np.array(df_300427['close']), 10)sma_30 = tl.SMA(np.array(df_300427['close']), 30)fig,(ax1,ax2) = plt.subplots(2,1,figsize=(15,5))mpf.candlestick2_ochl(ax1, df_300427['open'], df_300427['close'], df_300427['high'],df_300427['low'], width=0.6, colorup='r', colordown='g', alpha=0.75)mpf.volume_overlay(ax2, df_300427['open'], df_300427['close'], df_300427['volume'], colorup='r', colordown='g', width=0.5, alpha=0.8)ax1.plot(sma_10, label='MA10')ax1.plot(sma_30, label='MA30')ax1.legend();ax1.grid()ax2.grid()plt.show()
run:
![5793ad1a3b63e5ca3517e6fb2ddd1960.png](https://i-blog.csdnimg.cn/blog_migrate/8a2463ade2442598ed4501828f9c83af.jpeg)
4.总结
至此已经将k线与成交量组合图实现的整个过程分享出来了,读者可根据自身需要进行修改使用。在matplotlib中已经没有finance模块了,现在已经分离出来,需要用独立的模块mpl_finance.py。
![0df911b375ae07ad5ff33412beb4996c.png](https://i-blog.csdnimg.cn/blog_migrate/5d928dd55702f25d0db5afb0e76d6378.jpeg)
如需本章案例代码,微信关注:‘牛角财经’,回复文章标题,即可领取!
往期热文
量化研究:
1.python量化工具 |利用Python在策略中加入跟踪止盈止损模块(附代码)
2.TB量化兵器库 | 如何在TB中量化 “上升三角形” 和 “下降三角形”(附代码)?
3.量化工具 | 如何利用python将tick数据合成分钟数据并跨周期获取"MA"技术指标???(附代码)
4.量化工具 | 如何建立自己的量化交易系统?
5.量化工具 | 利用Python开发MACD跨周期策略(附代码)!!!
资金管理:
1.量化工具 | 动态资金管理—1-2-3-1法,连续亏损N笔后启动!!!(附代码)
2.量化工具| 资金管理-如何利用凯利公式:f=(bp-q)/b 确定最优的投注比例?
3.量化工具 | 资金管理-安全F值法与递减F值法
量化教程:
1.初识 | 人生苦短,我用Python!
2.python量化基础 | 变量和简单的数据类型,零基础都可以看懂!!!
3.python量化基础 | 变量和简单的数据类型-字符串
4.量化工具 | 如何建立自己的量化交易系统?
5.python量化基础 | 变量和简单的数据类型-数字和运算符
点击下方二维码即可关注‘牛角财经’
![64b816cfbea4c3b400875b470f8766f6.png](https://i-blog.csdnimg.cn/blog_migrate/789af09eb3cf992ba3e0f4674acfa104.jpeg)