為替の予測をやってみた(その3 〜フォーワードテストの準備編〜)

この記事の概要

  • 前回の記事の続き
    • LSTMでの予測に基づいたトレードのバックテストではかなり良好な結果を得た。
  • フォーワードテストのために売買のシステムを組んでみた。
    • その概要について記載する。

前回のおさらい

バックテストを実施

とある2週間の過去データにて

  • trades: 296回
  • winrate: 0.91%
  • payoff: 4.6705 

と驚異的な成績を得た。

フォーワードテストのために売買システムを組んでみた

上記のバックテストの結果の様には、うまくいかないだろうと思いつつも、期待を込めて売買のシステム作製しました。

今回作製した為替自動売買システムの概要図

f:id:MorinoKuma3:20190512214522p:plain
売買システム概要v2

簡単に各機能等を以下に記載します。

Predictor

機能:Oanda APIを使用して予測で使用する直近の為替データを取得し、
   LSTMモデルで将来の価格帯を予測する。
   予測で使用した為替データと予測した結果をそれぞれ保存する。

今回は、5分毎に30分後の価格帯を予測します。 5分毎に実行するために、Scheduleライブラリを使用しました。

参考にした記事: qiita.com

Agent

機能:Predictorが予測した結果を基に、トレードするかしないか判断する。
   トレードすると判断した場合、Oanda APIを通じて注文をする。

今回は、予測結果である「prediceted_data.json」のファイル更新を監視し、 更新をトリガーにして、処理を実行するようにしました。

ファイル更新の監視には、watchdogを使用しました。

参考にした記事: qiita.com

また、注文のAPIの使い方については以下を参考にしました。

http://www.algo-fx-blog.com/fx-api-oanda-v20-python-order/

Viewer

機能:Predictorが保存した予測した結果を、予測に使用した為替データへOverLayしてグラフ描画する。

Viewerは、フォーワードテストには関係ないです。
狙い通りに動作しているか確認するためにグラフ描画するようにしました。

実行すると以下の様に、直近のキャンドルチャートと、予測した結果を(直線で)描画するようにしました。 figure class="figure-image figure-image-fotolife" title="Viewer_exsample">f:id:MorinoKuma3:20190512212521p:plain

Viewer_exsample

上記の例では、30分後には値が上昇すると予測しています。

グラフ描画には、Plotly Dashを使用しました。 plot.ly

次回

次の記事では、この売買システムを使用してフォーワードテストをした結果についてまとめたいと思います。