「Market closed」のエラー

環境

  • OANDA MetaTrader 5
  • Version: 5.00 build 3211

日足でバックテストするとエラーになる

MT5で足の種類を「Daily」、モデルを「始値のみ」でバックテストすると

failed market buy 0.1 USDJPY [Market closed]

のようなエラーが出てくることがある。つまり「市場が閉じている」ので取引ができないのだ。

原因は取引時間の設定

原因はいろいろあるかもしれないが、私の環境では取引時間の設定が原因だ。

設定を確認してみよう。

①ストラテジーテスターの「設定」タブを選択する。

②「銘柄」で「USDJPY」を選択する。

③「銘柄」の行の右端にある「S」みたいなボタンをクリックする。

「テスト済みの銘柄」というウィンドウが開く。

④「テスト済みの銘柄」で一番下までスクロールする。

すると、私の環境では以下のようになっていた。

セッション  相場情報      取引
日曜日
月曜日      00:00-24:00  00:03-23:55
火曜日      00:00-24:00  00:10-23:55
水曜日      00:00-24:00  00:10-23:55
木曜日      00:00-24:00  00:10-23:55
金曜日      00:00-24:00  00:10-23:55
土曜日

足の種類を「Daily」、モデルを「始値のみ」でバックテストした場合、取引のタイミングは「00:00」になる。

ところが、設定では取引が始まるのは月曜日では「00:03」から、火曜日〜金曜日では「00:10」からとなっている。

つまり、「00:00」の時点ではまだ取引時間が始まっておらず、「市場が閉じている」状態なのだ。この取引できない時間はメンテナンス時間だろう。

その時間に取引しようとしたためにエラーとなったのだ。

設定を修正するのがよさそう

エラーを回避する最も簡単な方法は「モデル」を「1分足 OHLC」に変更することだ。そうすれば取引が成立するまでエラーは出続けるが、月曜日なら「00:03」に、火曜日〜金曜日なら「00:10」に取引が成立して問題はない。

エラーが出るのが嫌なら市場が開いている時間でしか取引しないようなコードをEAに書き込めばよい。実際、私もこれまでそのようにしてきた。

ただ、問題はバックテストに時間がかかることだ。日足なら一瞬で終わるようなバックテストが1分足の四本値を参照しているために10秒以上かかったりする。最適化で何十通り、何百通りもバックテストをする場合、さすがにこの時間のかかり方は無視できない。

となると、24時間休みなしで取引できるように設定を変えるのが一番だと思う。

上の④の続きからその手順を示す。

⑤「月曜日」の「取引」の「00:03-23:55」の部分をダブルクリックする。

「セッション USDJPY: 月曜日」というウィンドウが開く。

⑥「複数のサービス稼働時間を設定」のチェックを外す。

⑦「YES」ボタンをクリックする。

「00:03-23:55」が「00:00-24:00」に変わる。

⑧同様にして火曜日〜金曜日をすべて「00:00-24:00」に変える。

⑨「テスト済みの銘柄」で「YES」ボタンをクリックする。

これで設定変更終了。設定は以下のようになっているはずだ。

セッション  相場情報      取引
日曜日
月曜日      00:00-24:00  00:00-24:00
火曜日      00:00-24:00  00:00-24:00
水曜日      00:00-24:00  00:00-24:00
木曜日      00:00-24:00  00:00-24:00
金曜日      00:00-24:00  00:00-24:00
土曜日

このやり方の唯一面倒な点は銘柄ごとに設定を変更しなければならないこと。ただ、一回設定を変更すれば、その変更は保存されるので毎回バックテストに時間をかけるよりはましだろう。

設定を元に戻したい場合は「テスト済みの銘柄」で「初期値」ボタンをクリックする。設定が元に戻っていることを確認したら「YES」ボタンをクリックする。

メンテナンス時間に取引しているので、メンテナンス終了直後に取引する場合と比べてバックテストの結果に若干の相違はあるが、無視していいレベルだと思う。