【MT5】バックテストのヒストリー品質を0%から100%にした話

EA

こんにちは。裁量の専業トレーダー兼、MQL開発者のmetroです。

MT5のバックテストの
ヒストリー品質を100%にした経験をシェアします。

ヒストリー品質が悪い原因はコレ

Dukascopyで落としてきたヒストリカルデータを
UTC+2に変換してから

MT5にインポートしバックテストを行うと

MT5のバックテストのヒストリー品質が0%だった。
ヒストリー品質が0%

何度試しても、ヒストリー品質が0%でした。
中途半端な66%になることもありました。

そこで日本語、あるいは読めない英語ページを漁った結果
結局は公式ページに一番参考になるヒントが書いてありました。

テストレポート - アルゴリズム取引、自動売買ロボット - MetaTrader 5のヘルプ

History Quality(ヒストリー品質) — この値はテストの価格データの質を特徴付けます。それは1分間のデータの正誤のパーセンテージ比率として決定されます。ゼロスプレッドまたは異なるOHLC値を持って数量が1に等しい足は正しくないと考えられます。履歴ギャップはまた、不正なデータとして考えられます。サイズに応じて、テスト期間は1~199 に分割されます。ヒストリー品質はその個々に決定されます。ヒストリー品質のグラフィック指標では、時間間隔は異なる色で表示されています(軽い緑の色合いはより良い品質を意味し、赤は品質が50%以下の間隔を表します)。

原因は、ティックボリュームとスプレッドの値にありそうです。
Ctrl + Uから該当する銘柄のデータを検証してみると、

ヒストリー品質悪化の原因はティックボリュームとスプレッドの値が0出会ったこと!
品質の悪いデータが赤く示されている

赤くなっているデータがいくつも見つかりました。

ということで

  • ティックボリュームを0以外にする(※1)
  • スプレッドを5~10にする(※2)

これらを解決策に設定しました。

具体的にやったこと

こちらのサイトを参考しました。

ちなみに、Linux系OSのUbuntuを使いましたが
要は、CSVの該当する箇所を、一括で書き換えているだけです。

なのでUbuntuでなくても、WindowsのPowershellや
コマンドプロンプトなどでもできるんだと思います。

(12) 【MT5】 バックテストのヒストリー品質を上げる – FXやってみる!

やったことを箇条書きにするとこんな感じです。

  1. Dukascopyからhst形式のデータをダウンロード
  2. 例のスクリプトでデータのタイムゾーンをUTC+2に変換
  3. MT4/5にインポート
  4. MT4/5から、csv形式でエクスポート(ファイル名:from_mt4.csv)
  5. Ubuntuで以下2つのコードを順に実行
    「sudo nkf -Lu –overwrite from_mt4.csv」
    「sudo sed-i -e “s/$/,0,5/g” from_mt4.csv」
  6. from_mt4.csvをMT4/5にインポート
Linux系OSのUbuntuを使ってヒストリカルデータにテコ入れします。
Ubuntuでのコマンド入力(別日のスクショなのでファイル名は変わっている)

すると、、、

赤くハイライトされていたヒストリカルデータのエラーが解消された。
赤く強調されていたのもなくなった!!

品質の低下を示す、赤い強調がなくなりました。

早速このデータでテストをしてみると、

f:id:metroporeturn:20210915191511p:plain
ヒストリー品質100%達成

無事、ヒストリー品質が100%に。

お疲れさまでした。

※1

出来高が戦略の要素になっている場合は、ティックを操作するのはEAの精度に悪影響を及ぼす可能性があります。

※2

スプレッドは適宜変えてもいいと思います。

より広いスプレッドでも右肩上がりの資産曲線を描けるEAが優秀なのは
当たり前ですから、できるだけ幅広にするのもいいと思います。

僕も普段からスプレッドは10ポイントくらいで開発しています。

タイトルとURLをコピーしました