未分類

Pythonでローソク足チャートを描く

最近結婚し、お小遣い生活が始まり、日々のやりくりに苦労しています。節約するのではなく、お小遣い稼ぎする方法は何か無いかと考え、FXを始めることにしました!

FXについてグーグル先生に教えてもらうとチャートの読み方と題して様々なテクニカル指標が紹介されていますが、イマイチどの指標を使えばどの程度有効なのかがわからないです。

ということで、テクニカル指標をPythonを使って検証することが今回の目的です。

事前準備

ヒストリカルデータの取得

ヒストリカルデータを取得する方法は様々あり、Pythonを使って取得することも考えましたが、今回はその部分に時間をかけることが目的では無いので、以下のサイトからブラウザでダウンロードしてきました。

MoneySquare: https://www.m2j.co.jp/market/historical.php

ここで、ドル円の日単位のヒストリカルデータを取得することができます。

データ形式はCSVフォーマット、文字コードはSJISでPythonとの相性が悪かったため、UTF-8にテキストエディタでコード変換指摘おきます。

 

ローソク足用のライブラリ

ローソク足のグラフを作成するのには、matplotlibを利用する方法の他に、plotlyを利用する方法もあります。他にもあるかもしれませんが。それぞれメリット/デメリットがあるので状況に応じて使い分けます。

ライブラリ メリット デメリット
matplotlib ・細かいカスタマイズが可能

・毎回同じ出力結果を出すことができる

・公式サポートされていない

・サイズを細かく設定する必要がある

plotly ・拡大/縮小がGUIで可能 ・取引時間外の日(土日)横軸から除外できない

 

 

matplotlibを使ったローソク足チャートの描画

それでは、matplotlibを利用したローソク足チャートの描画を行います。google先生で検索すると、色々と出てきていますが、結果から言うとmatplotlibでは公開されなくなったんですね。。
公式ドキュメントはこちら

This module is deprecated in 2.0 and has been moved to a module called mpl_finance.

つまり、matplotlib.financeの機能についてはmatplotlibのバージョン2.0を使う場合には利用できないということですね。
今回はバージョン2.2.2を使っているためmpl_financeを使う必要がありそうです。

githubで公開されているので、以下のコマンドでインストールします。

pip install https://github.com/matplotlib/mpl_finance/archive/master.zip

このmpl_financeを利用してローソク足を表示させます。

import mpl_finance


#ローソク足チャートが書かれたCSVファイルをPandasを利用して読み込み
df = pd.read_csv('USDJPY_utf8.csv', sep=',', delimiter=None, engine='python')

#mpl_financeを利用したグラフ描画
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
mpl_finance.candlestick2_ohlc(ax, opens=df.open, highs=df.high, lows=df.low, closes=df.close, width=1)
fig.show()

これで表示されればmpl_financeの利用チェックはOK!
ただし、このままだとx軸が数字表示になるなど、わかりづらい。

ローソク足チャートのX軸を日付表示にする

x軸はmatplotlib上で、x軸のラベルを日付の文字列で記入することで実現します。
土日は除く必要もあるため、実際の日付を文字列に変換してx軸に設定することはグラフの見た目をよくするためにも重要です。
また、実際のデータは1週間のうち平日の5日間しかないため、
5日間刻みで表示することで、1週間ごとの日付が表示されるようになります。
以下は5日間刻みに表示する例です。

データ量が多すぎると見づらくなるため、読み込んだCSVファイルの期間から一部の期間を抽出しています。
抽出にはpandasの中のdataframeのqueryメソッドを利用しました。

#candlestick2_ohlcを使ったグラフ描画
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd
import numpy as np
import datetime as dt

from mpl_finance import candlestick2_ohlc

%matplotlib inline #ipython notebook上でmatplotlib のグラフを表示させるため

#ローソク足チャートが書かれたCSVファイルをPandasを利用して読み込み
df = pd.read_csv('USDJPY_utf8.csv', sep=',', delimiter=None, engine='python')

#読み込んだdfの中から特定の期間を抽出
start_date = dt.date(2013,1,1)
end_date = dt.date(2017,6,25)
df2 = df.query("target_date >= @start_date & target_date <= @end_date")


fig, ax = plt.subplots(figsize=(6,3),dpi=200) #サイズ、解像度は好みに応じて変更する

candlestick2_ohlc(ax, df2.start, df2.high, df2.low, df2.end, width=0.2, colorup='r', colordown='b', alpha=1.0)
ax.grid(True)
ax.set_xticks([x for x in range(len(df2))][::5])
ax.set_xticklabels([x.strftime('%Y-%m-%d') for x in df2.loc[:,'target_date']][::5], rotation=30, fontsize='small')

ax.plot(ma5)
ax.plot(ma10)
fig.autofmt_xdate()

なお、mpl_financeのインストールはこのサイトを参考にさせて頂きました。

Pythonでローソク足の表示方法

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です