第三弾で検証した機械学習の改善版です。
初めてこの記事を読む方は先に「最新の機械学習EAの概要」を読むことをお勧めしています。具体的な機械学習のロジックを知りたい方はこのままお読みください。
細かい話はいいので機械学習の自動売買がしたいという方はこちらからEA申請してください。
前回からの改善点
学習の改善点
- Volumeを見ながら、学習に使うデータを選定(ある程度Volumeが一定になるようにして、異常値を外す)
- 1つのモデルではなく、複数モデルをMIXさせる
- ロット数を確率に応じて、可変にする(確率が高いときはロットを上げる)
API本番運用の改善点
- 元々Oandaのレートを使って、運用していたのですが、レートが抜け落ちたり、APIがエラーになるなどの問題があり、学習と確率がズレが発生していました。
- 確率が1%ズレると、結果が2倍近く変わることもあるため、安定したレートを配信してくれる業者を探して、最終的にDukasCopyにたどり着きました。
- さらにDukasCopyでもこちらのサーバの問題で、レートがうまく取れないことがあったので、欠損データを埋める処理を追加したり、エラー検知してリトライしたりと、システム安定化に向けた保守開発を実施し、ようやく安定化に成功しました。
システム構成と検証方法
下記のように、モデル構築とAPI運用にわけた構成です。
(構成は第三弾とほぼ変わらないですが、OandaをDukasCopyに変更しています)
検証方法
- 第三弾と同様だが、Openする確率の閾値はチューニング
- 取引は下記の2種類で行います(通貨ペアはEURUSD)
①15分モデルでBUYの確率が一定以上かつSELLの確率が一定以下のときにBUYの取引を開始(SELLは逆) - ②60分モデルでBUYの確率が一定以上かつSELLの確率が一定以下のときにBUYの取引を開始(SELLは逆)
本番運用
- MT4からTick単位にAPIを呼んで確率を取得
- あとは検証と同様のロジックで取引
学習と検証の結果
精度の高いデューカスコピー・ジャパンの5年分のデータで学習し、2017年1月~2018年12月の2年間で検証
(MT4ではなくモデル構築サーバ上での検証のため、結果の見た目は違います)
15分予測は3000pip・PF値が2超え、60分予測は6000pip・PF値が1.9超えという凄まじい結果となりました。
- ①15分モデル
- 獲得Pip: 3082.3
- プロフィットファクター: 2.1
- 取引回数: 1032
- 勝利数: 718
- 敗北数: 314
- 勝率 : 69.6
- 平均勝ちPip:8.2
- 平均負けPip:-8.93
- 平均継続時間: 26分
- ②60分モデル
- 獲得Pip: 6092
- プロフィットファクター: 1.9
- 取引回数: 1427
- 勝利数: 943
- 敗北数: 484
- 勝率 : 66.1
- 平均勝ちPip:13.62
- 平均負けPip:-13.95
- 平均継続時間: 86分
実際の取引と今後の予定
実際の取引結果
約3週間本番で運用して、メチャクチャ安定して勝っています。
(取引数の多い60分モデルを記載)
- 60分モデル 2020年4月16日~5月8日の約3週間で運用
- 獲得利益(Pip):118
- 勝率 :73%
- プロフィットファクター: 5.3
。
その他の考察
2020年1月~3月末のコロナ相場ど真ん中のタイミングで検証したところ、たった3か月で2000pip獲得するという驚異の成績となりました。
つまりボラが激しいときも安定しているときも、どちらも勝てる可能性が高いです。
EURUSDだけでなく、USDJPY、GBPUSD、AUDJPY、EURCHFなどの他の通貨ペアでも勝てることを確認済。
今後の予定
暫くはTwitter配信でちゃんと勝てるということを公開していきます。
よろしければFrinxのTwitterfa-twitter-squareをご利用ください。
EAの無料配布も始めました。
(最初に機械学習で実装してからここまで安定するのに3年かかりました。)
EAが欲しい方はこちらから申請してください。
MT4を動かす環境がない方もAvaTradeJapanのAMMAという仕組みで、口座開設だけで自動売買できるようになりました。詳しくはこちらをご覧ください。
まだ改善したいことは色々ありますので、今後もバージョン上げていきます!
第五弾の検証はこちら
例えば、
・EURUSD以外の通貨ペアでは勝てないものもあったので、通貨ペアごとの考察をして、複数通貨ペアでうまくポートフォリオを組めるようにする
・学習の特徴量はレートから生成できる値は調査しきった感がありますが、VIXや株価などレートではなく外部の値も食わせてみる
など