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のバージョン問題がいまだによくわかっていません。

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


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



コメント

  1. サイトからの突然のコメントで申し訳ございません。
    初めまして。投資情報サイトGogoJungleを運営しています株式会社ゴゴジャンの宮田と申します。

    サイトを拝読しましてコメントしました。

    今回、サイトからコメントしました理由としましては、pythonに関しまして、目にとまってしまいました。
    また、恐縮ではございますが、プログラミングの知識を、インジケーター・投資ナビ+の記事として投資情報サイトGogojungleでご掲載していただけいる力は十分にお持ちではないかと思い、コメント致しました。

    ただ、どんな会社かもお分かりにくいかと思います。
    初めての方でも商品作成~販売まで全て無料でサポートいたしますので、お気軽にお問合せください。

    ◆掲載ページ◆
    https://www.gogojungle.co.jp/

    詳しくはメールにてお問い合わせください!
    ご連絡心よりお待ちしています。

    株式会社ゴゴジャン smiyata@gogojungle.co.jp
    宮田

    返信削除
  2. 返信が遅くなり申し訳ありません。ご連絡ありがとうございます。
    最近はあまりこの手の記事を書いていないので再開し始めた時に相談させてください。

    返信削除

コメントを投稿

このブログの人気の投稿

LinuxでのnVidia GPUのオーバークロック・電力チューニング方法