Python量化教程:不得不学的K线图「代码复制可用」 不管是对量化分析师还是普通的投资者来说,K线图(蜡烛图)都是一种很经典、很重要的工具 。在K线图中 , 它会绘制每天的最高价、最低价、开盘价和收盘价,这对于我们理解股票的趋势以及每天的多空对比很有帮助 。
一般来说,我们会从各大券商平台获取K线图,但是这种情况下获得的K线图往往不能灵活调整,也不能适应复杂多变的生产需求 。因此我们有必要学习一下如何使用Python绘制K线图 。
需要说明的是 , 这里mpl_finance是原来的matplotlib.finance,但是现在独立出来了(而且好像没什么人维护更新了),我们将会使用它提供的方法来绘制K线图;tushare是用来在线获取股票数据的库;matplotlib.ticker中有个FuncFormatter()方法可以帮助我们调整坐标轴;matplotlib.pylab.date2num可以帮助我们将日期数据进行必要的转化 。
我们以上证综指18年9月份以来的行情为例 。
我们先使用mpl_finance绘制一下,看看是否一切正常 。
可以看到,所有的节假日包括周末,在这里都会显示为空白,这对于我们图形的连续性非常不友好,因此我们要解决掉他们 。
可以看到,空白问题完美解决,这里我们解释一下 。由于matplotlib会将日期数据理解为 连续数据,而连续数据之间的间距是有意义的,所以非交易日即使没有数据,在坐标轴上还是会体现出来 。连续多少个非交易日,在坐标轴上就对应了多少个小格子,但这些小格子上方并没有相应的蜡烛图 。
明白了它的原理 , 我们就可以对症下药了 。我们可以给横坐标(日期)传入连续的、固定间距的数据 , 先保证K线图的绘制是连续的;然后生成一个保存有正确日期数据的列表,接下来,我们根据坐标轴上的数据去取对应的正确的日期,并替换为坐标轴上的标签即可 。
上边format_date函数就是这个作用 。由于前边我们给dates列生成了从0开始的序列连续数据,因此我们可以直接把它当作索引,从真正的日期列表里去取对应的数据 。在这里我们要使用matplotlib.ticker.FuncFormattter()方法,它允许我们指定一个格式化坐标轴标签的函数,在这个函数里,我们需要接受坐标轴的值以及位置,并返回自定义的标签 。
你学会了吗?
当然,一个完整的K线图到这里并没有结束,后边我们会考虑加入均线、成交量等元素,感兴趣的同学欢迎关注哦!
python用matplotlib画K线# -*- coding:utf-8 -*-
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter, WeekdayLocator, DayLocator, MONDAY
from matplotlib.finance import quotes_historical_yahoo_ohlc, candlestick_ohlc
#从雅虎财经获取历史行情
date1 = (2017, 1, 1)
date2 = (2017, 4, 30)
quotes = quotes_historical_yahoo_ohlc('600000.ss', date1, date2)
if len(quotes) == 0:
raise SystemExit
#创建一个子图
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)
#设置主要刻度和显示格式
mondays = WeekdayLocator(MONDAY)
mondaysFormatter = DateFormatter('%Y-%m-%d')
ax.xaxis.set_major_locator(mondays)
ax.xaxis.set_major_formatter(mondaysFormatter)
#设置次要刻度和显示格式
alldays = DayLocator()
alldaysFormatter = DateFormatter('%d')
ax.xaxis.set_minor_locator(alldays)
【相似k线函数python的简单介绍】#ax.xaxis.set_minor_formatter(alldaysFormatter)
#设置x轴为日期
ax.xaxis_date()
ax.autoscale_view()
#X轴刻度文字倾斜45度
plt.setp(plt.gca().get_xticklabels(), rotation=45, horizontalalignment='right')
- mysqli获取所有数据 mysql的提取函数
- 设备在线状态监控大屏 设备在线状态redis
- mysql 分组函数 mysql分组取数据
- mysql统计函数
- mysql有rank函数吗 mysql有rank
- redis多线程还是单线程 怎么理解redis多线程
- redis-cli命令不能用 redis函数调用失败
- redis在线测试 redis测试报告
- mysql的判断函数 mysql怎么判断奇偶数
- mysql数据库编码格式查询 mysql编码函数
