深度學習量化交易---0.1.股票K線圖繪製

究股票交易的基本功就是看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條數據,並且去掉第一列(代表股票代碼),運行結果如下所示:
在這裏插入圖片描述
股票的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行進行的相關設置。
運行上面的程序,可以繪製出如下圖形:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章