PythonのMatplotlib+Pandasで為替レートCSVからローソク足チャートを描いてみよう

2018年6月27日

使っている取引会社はどこ?
仮想通貨用(2019年5月からAPI取引対応) → GMOコイン
Python API用(FX APIはここしかない) → OANDA ジャパン

みなさん、こんにちは、新米データサイエンティスト(@algon_fx)です。先週の平日は年度末ということもあり飲み会が立て続けに入ってしまい、勉強がなかなか進みませんでした。ってことで、週末はどっぷり勉強に浸っています。

前回にPythonでテクニカル指標を簡単に生成してくれるTa-Libというライブラリを紹介しましたが、今回はテクニカル指標を描く前の準備編としてPythonのMatplotlib+Pandasを使って為替のロウソク足を作ってみたいと思います。

では、早速やってみましょう。

【人気記事】

私の機械学習の開発環境&トレード環境を解説

使う為替レートデータの準備

まずは為替レートのデータが必要です。今回は以前に記事にもしたGain Capitalのドル円のレートデータを使いたいと思います。下記のURLからCSVファイルのダウロードが可能です。

http://ratedata.gaincapital.com/2018/03%20March/

今回もドル円の3月2週目のティックデータを使いましょう。ファイル名は USD_JPY_Week2.csv です。

では、まずは使うライブラリを読み込んであげましょう。参考までにですが、私はJupyter Lab使っています。テーマをダークカラー系を利用していて、グラフを作ると見辛いので %matplotlib qt でグラフがインラインに表示されないようにしています。不要であれば、消してください。

次はこのドル円為替レートのCSVをPandasのデータフレームとして読み込んであげましょう。indexにはCSVデータの日付をつけてあげます。

データの準備の最後として、不要なカラムを落としてあげましょう。

とりあえず、ドル円のTick毎のAskとBidの1週間のデータが出来ました。

Tickから1minへ、1週間から100分へ

Gain Capitalのデータですが、1行=ティックですので、こちらを1分間の期間へ変更をしてあげましょう。Pandasで便利な関数「 resample 」を使います。ちなみにこの ohlc というのは、Open High Low Closeの略です。

データフレームのインデックスを見ると、ちゃんとティックから1分間へ変更されていますね。加えてBuy(買値)とSell(売値)ごとにOHLCが生成されています。

次ですが、今回は買値のロウソク足を作ってみたいので、このデータから買値だけを抜き出しましょう。またこれからプロッティングする際の利便性を考えて、Pandasのレベル(indexが複階層になっている)も解消しておきましょう。

一つ前のmin_1のBuyと値を見比べてみても、Buyのみが取れているのが確認できます。一週間分の1分ロウソク足のチャートを作るとなると…カオスになりそうなので、最初の100分間のみ(つまり最初の100行のみ)に切り分けてあげましょう。

(100, 4)

これでティックから1分間へ、さらに1週間から100分へデータの変更が行えました。Matplotlibでチャートを描写する前に、Pandasの便利なPlot関数を使ってみましょう。

あ…結構、欠損データありますね!先に確認しておくの忘れてた…。まぁ今回はとりあえずロウソク足チャートを作って見るのが目的なので、欠損値はスルーします。

Matplotlibを使ってローソク足チャートを作る

めっちゃ雑なデータですが、とりあえず準備はできましたので、1分間のローソク足チャートをMatplotlib(読み方はマットプロットリブ)を使って描写してみましょう。

参考までにですが、MatplotlibはPythonのオープンソースライブラリで、データの可視化を非常に簡単に行えます。通常のラインチャートはもちろん、散布図やさらにはヒストグラムまで、簡単に作れます。Pythonで機械学習やらデータサイエンスしている人で使えない人はいないと思われます。

前置きが長くなりましたが、ローソク足チャートを作ってみましょう。まずはMatplotlibのライブラリをインポートしてあげましょう。

上記でもインポートしていますが、今回使うのはMatplotlibのfinance APIを利用します。これはMatplotlibの中でも特に金融系のデータのグラフを扱う関数が集まっています。

では、実際にコードを書いてみましょう。 data としてデータフレームを入力して、 matplotlib figaxを戻す形です。入力するデータフレームのカラム名はopencloselowhighでしか処理されてないのでご注意ください。

 width でローソク足の幅をしています。下記のコードは0.8としていますが、必要であれば調整が可能です。
これでロウソク足チャートを表示してくれるはずですので、早速使ってみましょう!

おお!ちゃんとロウソク足になっていますね!先ほど確認した通り、今回のデータには欠損値が含まれているので、ところどころ穴抜きにはなっていますが…(汗)

まとめと今後の宿題

いかがでしたか?今日はPythonとMatplotlib + Pandasを使って為替レートのCSVファイルから1分間ローソク足チャートを作ってみました。

次への宿題としては…これにTa-Libで生成したテクニカル指標をつけてみたいですね。

ブログ読んでいただきありがとうございます!Twitterでも色々と発信しているので、是非フォローお願いします!

使っているFX会社はどこ?
仮想通貨用(2019年5月からAPI取引対応) → GMOコイン
Python API用(FX APIはここしかない) → OANDA ジャパン

2018年6月27日FX 機械学習

Posted by algon