Python + Talibでボリンジャーバンドと5日単純移動平均をローソク足チャートに出してみる

2018年6月27日

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

こんばんは、新米データサイエンティスト(@algon_fx)です。気づけば4月に突入しており、会社で新卒の方々も無事入社されました。日曜日はちょっと所用で他の勉強をして、月曜日は簡単な新卒の方々の歓迎会でした。

ってことで、2日も機械学習 x FXから離れてしまったので、今日はがっつりと勉強をしました。さて、今日は以前に紹介したテクニカル指標をPythonで超絶簡単に計算をしてくれるライブラリ「Ta-Lib」を紹介しましたが、今日は実際に使ってみたいと思います。

具体的にやることとしては、毎度おなじみの3月2週目のドル円データセットを使って、Ta-Libで5日単純移動平均とボリンジャーボンドを1分足ローソク足チャートに表示させてみようかと思います。

【人気記事】

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

為替レートの準備

下のコードで使っている USD_JPY_Week2.csv ですが、こちらの記事をご参考ください。お決まりですがCSVデータをPandasのデータフレームとして読み込んで1週間のデータから1分ごとに変換をしてあげましょう。

加えて、今回はテクニカル指標のMACDとボリンジャーバンドをプロッティングしたいので、データの欠損値をPandasの fillna(method=’ffill’) で穴埋めします。(ffillのメソッドですが、欠損箇所の次のデータの値を取得して穴埋めしてくれます)

まずは必要なライブラリのインポートから。

次にCSVファイルを読み込んで、少しだけクレンジングしてあげましょう。

最後に買値のみ切り出して、Tickデータを1分間データへ、1週間を100分へデータを変更してあげましょう。(1週間分のデータを1分足ローソク足チャートにするとカオスになる)

加えて、先述した欠損値の穴埋めも行ってあげます。

ひとまず、これでデータの準備OK!

Ta-Libで5日単純移動平均をプロットしてみる

さて、いよいよ先週からいじりたくてたまらなかったTa-Lib先生の登場です。まずはシンプルなところで5日単純移動平均(Simiple Moving Average)を上記のデータから計算をしてプロットしてみよう。

一つ注意点として上のデータ準備で作成した buy_1min_s  close の値を渡しているので要注意。close=終値で単純移動平均を計算しています。

…これだけ?!と驚くくらいシンプルですね笑。初めて使うので、型の確認もしてみましょう。

pandas.core.series.Series

おー、Pandasのシリーズで返してくれるのですね。これは超絶便利!!まさか計算間違いはないとは思うが、念のため…元データとTa-libが生成したデータを確認してみよう。(データサイエンティストのサガw)

(106.64700000000001, 106.64700000000001)

おぉ…そりゃ当然あってますよね笑。では、このSMAとドル円の1分データを使って、ローソク足チャートをMatplotlibで作ってみましょう。(参照:Pythonでローソク足チャート

これでオッケーですね。1分ローソク足チャートに5日単純移動平均線が引かれましたね。正直、5日平均なんてライブラリ使う必要ねーよと思っているあなた!そんな方のために、ボリンジャーバンドを次はチャートに落としてみましょう。

Ta-libでボリンジャーバンドをプロット

以前に私が裁量トレードにかじっていた時に、標準でボリンジャーバンドは表示させていました。名前がなんとなく好きです。ボリンジャー。ボリンジャー。

では、Ta-Lib先輩にボリンジャーバンドで必要なデータを作っていただきましょう。

またもや…これだけ笑。

では、次はこちらのボリンジャーバンドの値をMatplotlibでチャートに落とし込んでみましょう。

自分で色を指定したのですが、ボリンジャーバンドの色のセンスが悪い。醜い。気持ち悪い。ですが、ひとまずはボリンジャーバンドが表示されています。

まとめと次のステップ

さて、今日はTa-Libを使って5日単純移動平均線とボリンジャーバンドをロウソク足チャートへMatplotlibを使って描写してみました。

Ta-libですが、公式ドキュメントが異様に少なかったので、少し手こずる予感はしていたのですが、思ったよりも使い方が簡単でした。

これで、Pythonでローソク足チャートを描いたり、テクニカル指標を計算してチャートに落とし込む的な基本操作は覚えれました。

次の課題としては、APIと連携して最新の為替レートを取得→決まった期間で定点的にローソク足チャート+テクニカル指標を描写+チャートを画像としてDBに保存していく。という流れもやっていきたい。

これをやることで、大量のチャート画像を取得して、チャート+テクニカル指標の画像を訓練して、簡単なFX予測ができるのではと考えています。(参照:プロジェクト進捗表

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

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

2018年6月27日FX 機械学習

Posted by algon