MT4とTradingViewのバックテスト動作の違い

概要

MT4もTradingViewもファイルを用いてバックテストができますが、プログラムの特性により実際にトレードした場合と結果が一致しないことがよくあります。

このページではそれぞれどのような特徴があるのかを掲載しています。

特徴

■MT4は下位足データと疑似ティック、TradingViewは4本値でテストを行う

MT4ではモデルが「全ティック」の場合、下位足のデータと内部で自動生成されたティック(疑似ティック)を使ってテストを行います。

モデルが「コントロールポイント」の場合は下位足の情報を、「始値のみ」の場合は指定した足の始値を使って売買判定を行います。

対してTradingViewのテストは4本値のみで売買価格を決めます。

下位足の動きなどは見ず、1本のローソク足で売買ポイントがあれば必ず約定したことになります。

例えば利益判定→損切判定という順でコードが書かれており、どちらもローソク足内の場合は(実際は損切が先であっても)利確が先に行われます。

またトレール機能については、ロングの場合
ストラテジーテスターボタンを押した時:Open価格+trail_points<高値を満たす足の高値が決済価格になる
リプレイモード:Open価格+trail_points<高値を満たす足の終値で決済されたことになる
という仕様になっています。

通常相場というのは上下動を繰り返すためtrail_pointsを小さい値にした場合は損切になることが多いのですが、上記仕様ではちょうど高値まで引っ張って利確したという動きになります。

実際のレートの動きとは異なるため、MT4/TradingViewどちらも値動きを完全に再現することはできません。

MT4はテスト終了時に強制決済する

MT4のバックテストの特徴として、テスト完了時に保有していたポジションはその時点で強制決済されます。
そのため含み損の状態で終了すると資産グラフの最後が落ち込む形になります。

TradingViewでは保有していたポジションの含み損益は結果に反映されません。

テストの信頼度

悪用する人がいるので詳細は書きませんが、上記の仕様を利用することで必ず右肩上がりのテスト結果になるようなプログラムを作ることもできます。

「バックテストでは負けなしなのにリアルで使いだすと途端に勝てなくなった」という場合、通常ではあり得ない動きをテストではしている可能性があります。

製作者自身がこうしたプログラムの特性を理解しておらず、テスト結果だけは良いEAが販売されているケースもあります。
特に浅い指値やトレーリングストップを多用しているものは疑った方が良いです。

MT4・TradingViewに共通して、テスト結果を過信してはいけません。

バックテストはロジックの傾向やエントリーポイントを見るために使い、最終的な判断はデモ口座で実際に売買させて行うのが良いと思います。