BREAKING NEWS

2019/01/28

OANDA APIを使ってGrafanaでローソク足チャートと簡単なテクニカル分析を表示する基盤を作った話

この記事のまとめ:
  • OANDA APIを使ったFX用のローソク足チャートとテクニカル分析を表示する基盤を作ったので紹介します。
背景

Dockerの勉強と、Gitの勉強と、InfluxDB+Grafanaの勉強と、将来的な機械学習の勉強のために題材として、FXのシステムトレードをやってみようと思って、とりあえず機械学習以外のところは大体なんとなくできたので公開してみました。

私にとってGitHubで公開する初めてのプロジェクトですし、DockerもInfluxDB+Grafanaも勉強したてですので、何か非効率的なこととか、間違っているところとかがあれば教えていただけると幸いです。

概要

すべてのコードは下記に公開しています。 https://github.com/hassiweb/OANDA-Chart-Viewer

構成図はこんな感じです。

使い方

実行方法は、GitHubのREADME.mdを見てください。

"How to Run"に書いたことをすべて実行後に、Grafanaを開いていただくとわかりますが、“EUR_USD”、“USD_JPY”、"EUR_JPY"のペアならば予めダッシュボードを用意しておきましたので、GitHubのトップに表示したようなローソク足チャート、MACD、Stochasticsのダッシュボードと、それぞれのローソク足チャートを3枚並べたダッシュボードが表示できると思います。

ただし、プロビジョンされたダッシュボードの変更はGrafanaの制約でできませんので、変更を行う場合は、"Share dashboard"→"Exportタブ"→"Save to file"でダッシュボードのJSONファイルを保存し、左上のダッシュボードのボタンから"Import"して新たにダッシュボードを作りなおせば変更可能なダッシュボードが作れます。

処理の流れ
  1. Docker-composeで、InfluxDB、Grafana、PythonスクリプトのDockerコンテナを作成
  • InfluxDBは、データの永続化のために、./influxdbにバインドしており、そこにDBデータが保存されます
  • Grafanaは、予めデータベース情報を./grafana/datasources-yml/datasources.ymlに記載し、Docker起動時に読み込むようにしているため、Grafana起動時にはデータソースの設定は不要です。また、ダッシュボード情報を./grafana/dashboards-yml/dashboards.ymlに記載し、Docker起動時にダッシュボードのJSONファイルを読み込むようにしているため、上記の4つのダッシュボードであればすぐに表示可能です
  • Pythonスクリプトは、Pythonの実行環境だけをDockerコンテナとして用意しているだけなので、起動時には何も実行しないため、docker-compose runコマンド等でPythonファイルを実行する必要があります
  1. Pythonスクリプト実行用のシェルスクリプト./initialize_charts.shを実行することで、データベースにローソク足チャートの情報が保存され、保存されたデータをもとにMACD、Stochasticsのテクニカル分析を行います。

  2. 定期的にローソク足チャートの情報を更新するようには作っていませんので、定期的に更新したい場合には、./update_charts.shを定期的に実行すればよいです。cronに登録しておくのもありだと思います。なお、現状固定値で過去1週間分のデータしか取得しないようにしていますのでご注意ください。

作成後記

今回はほとんどが初めて使うツールばかりでしたが、多少苦戦するところがあったものの、大ハマりすることなく結構スムーズにできた気がします。これを作って改めてDockerの便利さは革命的だと思いました。時間があればこれまで作ったプログラムもDockerコンテナ化して公開したいですけど…、たぶんしないでしょうね…。

ちなみにツイッターでつぶやいたPandasのバージョン問題がいまだによくわかっていません。

今後はもう少しテクニカル分析をしっかりした上でディープラーニングを使って分析してみようかと思います。


今回は以上です。 最後まで読んでいただき、ありがとうございます。
関連記事



Share this:

 
Copyright © 2014 hassiweb. Designed by OddThemes