FX APIからPythonで為替レートのストリーミングを取得してローソク足をプロットする方法

2018年6月27日

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

FX APIをPythonを使って為替レートのストリーミングを取得して、Pandasのデータフレームへ変換を行い、Matplotlibでローソク足チャートを描いてみました(FX APIシリーズ)

こんばんは、新米データサイエンティスト(@algon_fx)です。今週は、本業で色々とタスクが多く、ジムも行けてなければ、勉強もできず…。まぁこんな週もありますよね。

今日は少し時間が取れたので、少し前にやったFX API経由で為替レートのストリーミングを取得して、ローソク足チャートへ落とし込む流れをまとめたいと思います。

【人気記事】

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

FX APIへ接続しよう

毎回の流れですが、まずはOANDA API v20へPythonを使って接続しましょう。APIトークンやら口座開設やらは「OANDA API v20を使ってみる(デモ口座開設編)」にまとめていますので、ご参照ください。

まずは、今回の作業で行うライブラリーをインポートしてあげましょう。為替レートのストリーミングを取得するのは、 oandapyV20.endpoints.instruments を使います。

では、APIへ接続するためのトークンやら口座IDやらを渡してあげましょう。下記はダミーなので、各自の口座IDとトークンに変更してから実行ください。

では、APIへ接続しましょう。

流れとしては為替レートのを取得して、Pandasのデータフレームへ変換、その後にデータをローソク足となるような処理を加えて、Matplotlibでローソク足チャートを表示させます。

APIから為替レートのストリーミングを取得

では、実際にFX API経由で現時点の為替レートのストリーミングを取得しましょう。まずはAPIへ投げる設定を count=200  granularity=M5 と作ってあげます。

countですが、ストリーミングから何件為替レートを取得するかのカウントです。granularityは、「粗さ」という意味で、つまりレートの期間を表します。今回はM5として、5分足のデータを取得しましょう。

では、OANDAのAPIからレートのストリーミングを取得しましょう。これはAPIのエンドポイント InstrumentsCandles を使います。今回はドル円を取得しますので、通貨としてドル円も渡します。

大丈夫ですね。しっかりと為替レートのリスクエストが行えているのが確認できます。

為替レートをPandasのデータフレームへ変換

これで、リクエスト「r」には、APIから取得した為替レートが200件入りました。こちらのリクエストの結果ですが、 r.response で確認が可能です。例えば最初のレコードを取得するには下記のように書くわけです。

{‘complete’: True,
‘mid’: {‘c’: ‘110.917’, ‘h’: ‘110.933’, ‘l’: ‘110.917’, ‘o’: ‘110.933’},
‘time’: ‘2018-05-22T20:25:00.000000000Z’,
‘volume’: 13}

こちらですが、dict型となっています。このままでは、機械学習をやる私には扱いづらいので、Pandasのデータフレームへ変換してあげましょう。

ちょっと汚く、明示的なコードですが…まぁお仕事はしてくれるので、これでオッケーとします(笑)また、APIから取得した日付(time)を日付型に変換をしてあげましょう。

これで、API経由で為替レートのストリーミングをゲットして、Pandasのデータフレームへの変換が完了です!

Matplotlibで5分足ローソク足チャートを作る

採れたてほやほやの為替レートのデータフレームが出来ましたので、Matplotlibを使ってローソク足チャートへ落とし込んでみましょう。

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

次に取得した為替レートのデータフレームから、ローソク足チャートを作る処理を書いてあげましょう。

これまた汚いコードですが、上で作成したデータフレームのカラム名をそのまま決め打ちで入れています。これも改善した方が良いかも。

では、最後にローソク足チャートのプロッティングをしましょう。

こちらは、チャートの一部分をズームインした奴ですが、しっかりローソク足チャートして出来上がっていますね!

まとめと次の課題

今回は、FX APIシリーズとして、Pythonを使って為替レートのストリーミングを取得してローソク足チャートに落としてみました。API経由で取得したデータをPandasへ変換するのに少し面倒でしたが、それ以外は特に難しい作業はありませんでした。

次は、テクニカル指標も色々とPythonで計算できるようになってきたので、テクニカル指標もチャートに載せてみたい。あと、クラウド上で常にAPIからレートを受け取って、ローソク足チャートの画像を大量に生成する流れもやりたいです。(チャートの画像を使って試験的に機械学習モデルを作ってみたい)

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

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

2018年6月27日FX API

Posted by algon