MT4(FXシストレ)

[MT4]任意の期間を無視してバックテストをする方法[悪用はダメ]

しつもんちゃん
しつもんちゃん
欠損の期間があってEAの検証がうまくいかないよ、、、
せんせい
せんせい
じゃあその期間を無視して検証しよう
しつもんちゃん
しつもんちゃん
え?

ヒストリカルデータの欠損

EAのバックテストを行う上で欠かすことができないのがヒストリカルデータです。

ヒストリカルデータとはメタクォーツまたは各ブローカーが提供する過去のチャートデータで、主に1分足のデータで提供されます。

無料で入手できるものも多いので開発者にとっては非常にありがたいこのデータですが、多く場合欠損期間があります。

この欠損期間をまたいで仕掛けていた場合、価格が一気に飛んで大きな損失又は極端な利益が出たりするので、検証を行う上では障害になることがあります。

【MT4】エクセルでヒストリカルデータの欠損を調べる方法バックテストの要 過去のチャートデータであるヒストリカルデータは、システムトレードなどにおいてはバックテストの前提条件とも言える重要な...

任意の期間を無視して検証する

欠損のないヒストリカルデータを使用できれば一番なのですが、

実際のところヒストリカルデータは有料・無料問わず欠損期間がある場合が多いのが現状です。

よって現実的な対策としては欠損を無視して検証するのが次善の策となります。

手動で期間は指定して任意の期間を避けることもできますが、今回はEAに組み込んで任意の期間を避ける方法をご紹介します。

組み込むことによって連続して検証することができるので、成績グラフを途切れさせることがありません。

期間無視プログラム

OnTick()内に最初に以下の様に記述します。

if(Year() == 2016 && Month()  >= 8 && Month() <= 10)return;

これだけです。

Year()とMonth()は任意の期間を指しており、この場合2016年の8月から10月を指定しています。

returnは実行中の関数を中断する命令になります。

この一文を注文を実行する命令の前に配置することにより任意の期間を飛ばして検証することができます。

実際の検証結果が以下の画像になります。

ポジション保有中に無視期間に突入した場合はずっとポジションを保有したままになる場合があります。その場合は上記return命令の前に同じ条件でポジション決済命令を出すか、ポジションを持たないように期間をずらして検証してください。

例)

if(Year() == 2016 && Month()  >= 8 && Month() <= 10)

※ポジション決済コード※;

return;

悪用は厳禁

お気付きの方もいるかとは思いますが、これを使えばバックテストを成績を改ざんすることができます。

大きな損失のある取引をなかったことできるので表面上の成績を上げることができるからです。

もちろんこんな方法で成績を取り繕ったところで実際のトレードでは何にも役には立ちませんので意義のある使い方をしましょう。

【MT4】alpariで信頼性のあるヒストリーデータを簡単入手する手順【バックテストにおすすめ】 ヒストリーデータは各会社で違いがある FX会社から提供されるチャートのヒストリーデータは無料で膨大な量のチャートを提供してくれる非...