MT4/MT5を用いたシミュレーション
MT4やMT5には、既存でシミュレーション機能(ストラテジーテスター)が備わっています。
【参考】MT4 ストラテジーテスター
【参考】MT5 ストラテジーテスター
トレード対象となる任意の通貨ペアを選んで、参照する時間軸を選んで、時間軸の精度を選んで、作成したEAでトレードシミュレーションができるものです。
しかし、実はこのシミュレーション機能は今まで投稿したAI投資システムでは使えません。理由はいくつかあります。
理由1. 単通貨ペアしか取得できません
(これはもしかしたら私のやり方が悪いのかもしれませんが)
トレード対象となる任意の通貨ペア以外の値は取得できません。
AI投資システムでは、同時刻の他通過ペアや株価など、異なる指標値を同時に用いるため、これは致命的です。
理由2. 時間がかかりぎる
実際のトレードと同じように行うと、
一定時間毎にAIによる予測処理を行うことになります。
ハイスペックPCなら瞬時に終わるかもしれませんが、
私のような個人開発PCの場合、少なくとも1予測30秒はかかります。
例えば、1時間毎予測を行うシステムの場合、
1日分を予測するだけで12分かかります。
1週間分だと1時間、1ヶ月分で4時間です。
シミュレーションなのに時間がかかりすぎです。
理由3. TP/SLが不正確
テスターの設定値の「モデル」で「全ティック」を選んだとしても、TP/SLの判定精度が曖昧です。
TP/SLが十分広ければ問題ありませんが、値動きが激しい場合などは使えません。
以上の理由から、私はこのシミュレーション機能を使うことを諦め、自前でトレードシミュレーションする仕組みをつくりました。
自作のトレードシミュレーション
Pythonで自作のトレードシミュレーション機能をつくりました。この仕組みを利用すれば、
1年分の予測も30分で完了するようになりました。
処理フローは下記の通り。

「0.注文格納キュー生成」について、
注文格納キューは、下記の要素で構成されています。
- 注文タイプ(BUY・SELL)
- 注文時刻
- スワップポイント
- 決済指値(TP)
- 決済逆指値(SL)
新規注文時にキューへ格納し、
SL・TP・決済確定時にキューから出します。
正確に言うと、最小単位が1分足なので、
スキャルピングのような超短期のトレードシミュレーションには使えませんが、
デイトレードやスイングトレードのシミュレーションでは十分使えるシミュレーションとなりました。
補足 MT4/MT5シミュレーション自動起動
MT4/MT5は実行時の引数付きでシミュレーションを自動起動することができます。
少し古い情報ですが、下記に手順を記載していただいている記事がありましたので、
参照させて頂きます。
この起動処理をバッチ起動すれば、パラメータを少しずつ変えながら、
シミュレーションすることができます。
まとめ
今回の投稿では、MT4/MT5の機能を用いたシミュレーションではなく、
自前で作成することをオススメしました。
ただし、私は数年前に早々に諦めただけで、
もしかしたら、MT4/MT5をもっと上手く使えば簡単に出来るかもしれません。
ここで記載した内容がすべて正ではありませんが、
少しでも参考にして頂けますと幸いです。
次の投稿で本シリーズ最後。
「売買の判断基準(さまざまなリスク対策)」について記載しようと思います。
よろしくお願いいたします。