Python
株価
Anaconda
金融

Pythonで株価取得とローソク足チャート作成

 株価分析するための株価取得と株価図示(ローソク足チャート)について書きます。時系列データの深層学習等、夢は広がるばかりですが、今回はとりあえず勉強するための道具を集めていきます。ただし、勉強中のメモですので、間違いがあることをご容赦ください(特に経済用語)。

ローソク足チャート

 ローソク足チャートとは、Wikipediaによると、"単位期間を定め、単位期間中に初めに付いた値段を始値、最後に付いた値段を終値、最も高い値段を高値、最も安い値段を安値とし、この四種の値段(四本値)をローソクと呼ばれる一本の棒状の図形に作図し、時系列に沿って並べて株価の変動をグラフとして表したものである。"(参考:Wikipedia「ローソク足チャート」)だそうです。
 赤いローソクは株価が最終的に上昇、緑のローソクは最終的に下降した日であり、視覚的に株価の上下運動が分かりやすくなっています。では、このローソク足チャートの作成方法について述べます。
 
rousokuasi_chart.png

環境

・Windows8
・Anaconda4.4.0(Python3.6)
・pipで「daytime」「pandas_datareader」をインストール

データ取得

GetStock.py
import datetime
import pandas_datareader.data as web

#期間の設定
start = datetime.datetime(2017, 1, 1)
end = datetime.datetime(2017, 5, 30)

#株価取得
df = web.DataReader('TM', 'google', start, end)
df = toyota.drop('Volume', axis=1)  # DataFrameからVolumeを消去
df = df.loc[:, ['Open', 'Close', 'High','Low']]

Pythonには株価を取得するライブラリが用意されており、開始日、終了日、会社、データを取得するサイトを引数に入れれば、pandasで使える形式で返してくれます。Googleの場合は、Volumeもデータに入っていますが、不要なので消去します(ちなみに、Volumeとは取引された株数だそうです)。最後にデータを並び替えておきます。結果は下の図に記載ですが、見てのとおり、4つの値の関係性はよくわかりません。そこで、最後にろうそく足チャートの書き方を説明します。
chart.png

ろうそく足チャート作成

ろうそく足チャート作成ライブラリも存在します。上半分はデータ取得で先に説明したものです。「mpf.candlestick_ochl」という関数が用意されていますので、日付と対応するデータを引数に入れると簡単に図を作成してくれます。視認性を上げるためにグリッドを付けています。

RousokuasiChart.py
import numpy as np
import datetime
import pandas_datareader.data as web
import matplotlib.pyplot as plt
import matplotlib.finance as mpf
from matplotlib.dates import date2num

def main():
    #株価取得期間の設定
    start = datetime.datetime(2017, 1, 1)
    end = datetime.datetime(2017, 5, 30)

    #株価取得
    df = web.DataReader('TM', 'google', start, end)
    df = toyota.drop('Volume', axis=1)  # DataFrameからVolumeを消去
    df = df.ix[:, ['Open', 'Close', 'High','Low']]

    #画像作成
    fig = plt.figure()
    ax = plt.subplot()
    xdate = [x.date() for x in df.index]  # 日付
    ochl = np.vstack((date2num(xdate), df.values.T)).T
    mpf.candlestick_ochl(ax, ochl, width=0.7, colorup='g', colordown='r')
    ax.grid()  # グリッド表示
    ax.set_xlim(df.index[0].date(), df.index[-1].date())  # x軸の範囲
    fig.autofmt_xdate()  # x軸のオートフォーマット
    plt.savefig('rousokuasi_chart.png')#画像保存

if __name__ == '__main__':
    main()

このプログラムを実行すると、最初に見たろうそく足チャートが完成します。

rousokuasi_chart.png

参考サイト

1、「過去のデータからビッグデータ分析で株価を予測する」

http://qiita.com/ynakayama/items/420ebe206e34f9941e51

2、Pythonで株価を取得しグラフ表示する 

http://qiita.com/akichikn/items/782033e746c7ee6832f5

3、Pythonでローソク足チャートの表示(matplotlib編)

http://qiita.com/toyolab/items/1b5d11b5d376bd542022