究股票交易的基本功就是看K线图,所以在这一节里面,我们的任务就是拿到一支股票的历史数据,我们用python画出其K线图,这是进行下一步技术分析的基础。
我们以上证综指为例,之所以没拿某支股票为例,是因为股票容易被操控,而上证综指很难被操控,因为规律性会更强一些。
我们先来看怎样显示上证综指原始数据,如下所示:

@staticmethod
def draw_kline():
print('绘制股票每日价格K线图')
raw_datas = pd.read_csv('dataset_2.csv')
datas = raw_datas.iloc[-30:, 1:]
print(datas)

在上面的程序中,我们取最新的30条数据,并且去掉第一列(代表股票代码),运行结果如下所示:

深度学习量化交易---0.1.股票K线图绘制_python


股票的K线图是股市最常用的技术分析手段,拿到股票数据第一项就是研究K线图,所以我们在这里就要先绘制出K线图,在运行下面的代码之前,需要先安装:

pip install mpl_finance

接着我们需要解决在matplotlib中显示中文的问题,首先在windows机器的C盘中查找simhei.ttf文件,将该文件拷贝到下面程序显示的目录中:

import matplotlib
print(matplotlib.matplotlib_fname())

其会显示如下内容:
/home/yantao/dev/tf/tfe/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc
这是matplotlib的配置文件路径,我们将simhei.ttf拷贝到/home/yantao/dev/tf/tfe/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/目录下,接着编辑/home/yantao/dev/tf/tfe/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc文件,添加如下内容:

font.family : sans-serif
font.sans-serif : SimHei
axes.unicode_minus : False

接着删除缓存文件:

rm -Rf ~/.cache/matplotlib/

具体代码如下所示:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter, WeekdayLocator, DayLocator, MONDAY, date2num
from mpl_finance import candlestick_ohlc
from pylab import mpl
from datetime import datetime
......
@staticmethod
def draw_kline():
print('绘制股票每日价格K线图')
raw_datas = pd.read_csv('dataset_2.csv')
datas = raw_datas.iloc[-30:, 1:]
datas.date = [date2num( datetime.strptime(date, '%Y/%m/%d') ) for date in datas.date]
recs = list()
for i in range(len(datas)):
recs.append(datas.iloc[i, :])
ax = plt.subplot()
mondays = WeekdayLocator(MONDAY)
weekFormatter = DateFormatter('%y %b %d')
ax.xaxis.set_major_locator(mondays)
ax.xaxis.set_minor_locator(DayLocator())
ax.xaxis.set_major_formatter(weekFormatter)
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
ax.set_title(u'上证综指kline picture')
candlestick_ohlc(ax, recs, width=0.7, colorup='r', colordown='g')
plt.setp(plt.gca().get_xticklabels(), rotation=50, horizontalalignment='center')
plt.show()

第4、5行:读入原始数据,并去掉第一列(代表股票代码),取最新30条记录;

第6行:修改数据中日期字段,将其变为mpl_finance库需要的数字格式;

第7~9行:准备用于绘制的数据;

具体绘制过程没有太多需要关注的地方,这里需要注意为了让matplotlib显示中文,16~18行进行的相关设置。

运行上面的程序,可以绘制出如下图形:

深度学习量化交易---0.1.股票K线图绘制_ico_02