漂亮的界面是量化程序的脸面,直观专业的界面能帮助我们了解股票的走势和形象地展示量化交易的结果。本文介绍如何使用matplotlib做出专业的K线图和展示各种技术指标:
matplotlib是受MATLAB的启发构建的。MATLAB是数据绘图领域广泛使用的语言和工具。MATLAB语言是面向过程的。利用函数的调用,MATLAB中可以轻松的利用一行命令来绘制直线,然后再用一系列的函数调整结果。
matplotlib有一套完全仿照MATLAB的函数形式的绘图接口,十分方便实用。下面我们一步步使用它来绘出上面的图片。
准备工作
在上文中(量化回测的基础:干净的,准确的历史股票数据),我们已经为大家准备好了日k线数据,大家可以去下载。下面我们来为绘图做一些准备工作:
from pandas import DataFrame, Series
import pandas as pd; import numpy as np
import matplotlib.pyplot as plt
from matplotlib import dates as mdates
from matplotlib import ticker as mticker
from matplotlib.finance import candlestick_ohlc
from matplotlib.dates import DateFormatter, WeekdayLocator, DayLocator, MONDAY,YEARLY
from matplotlib.dates import MonthLocator,MONTHLY
import datetime as dt
import pylab
daylinefilespath = 'G:\\dayline\\'
stock_b_code = '000001' #平安银行
MA1 = 10
MA2 = 50
startdate = dt.date(2016, 6, 29)
enddate = dt.date(2017, 1, 30)
def readstkData(rootpath, stockcode, sday, eday):
returndata = pd.DataFrame()
for yearnum in range(0,int((eday - sday).days / 365.25)+1):
theyear = sday + dt.timedelta(days = yearnum * 365)
# build file name
filename = rootpath + theyear.strftime('%Y') + '\\' + str(stockcode).zfill(6) + '.csv'
try:
rawdata = pd.read_csv(filename, parse_dates = True, index_col = 0, encoding = 'gbk')
except IOError:
raise Exception('IoError when reading dayline data file: ' + filename)
returndata = pd.concat([rawdata, returndata])
# Wash data
returndata = returndata.sort_index()
returndata.index.name = 'DateTime'
returndata.drop('amount', axis=1, inplace = True)
returndata.columns = ['Open', 'High', 'Close',