Backtest Robustness Checker
- インディケータ
- バージョン: 1.1
- アクティベーション: 5
Backtest Robustness Checker は、決済済みの取引の一覧を読み、同じ取引の順番が入れ替わったとき、一部の取引が抜けたとき、大きい勝ちを除いたときに、統計がどう変わるかを示す MetaTrader 5 のインジケーターです。取引は、口座履歴、HTML で保存したストラテジーテスターや口座のレポート、または簡単な CSV ファイルから読みます。結果はチャート上のパネルに表示し、CSV に保存できます。
表示するのは過去の取引の統計だけです。将来の成績を予測・保証するものではなく、戦略や EA が良いか、儲かるか、「頑健」かを判定するものでもなく、合格・不合格も出しません。「最大ドローダウンの 95%点」のようなモンテカルロの値は、過去の取引を並べ替えた写しについての数字で、将来のドローダウンの確率ではありません。数字をどう使うかはご自身の判断です。
読み取り専用です。注文・変更・決済は一切せず、売買シグナルも出しません。ストラテジーテスター(マーケットの自動審査を含む)にはご自身の取引がないため、内蔵のサンプルデータを表示し、橙色で「実在しない」と明記します。
機能
・データの取り方は3つ:口座履歴(マジック番号・銘柄・決済日で絞り込み)、MQL5\Files の中のファイル(HTML で保存した MT5 のレポート、または CSV)、内蔵の 400 件のデモ取引のサンプル
・元の順番:取引数、損益の合計、プロフィットファクター、勝率、1回あたりの平均損益、最大ドローダウン(金額と %)、最大連敗、最長の水面下(取引数)
・取引の順番のシャッフル(モンテカルロ):同じ取引をランダムな順番に並べ替えることを繰り返します(初期値 1,000 回)。最大ドローダウン・最大ドローダウン%・最大連敗・最長の水面下の最小・5%・25%・50%・75%・95%・最大、元の順番以上のドローダウンになった割合、指定したドローダウン% を超えた割合、ヒストグラム
・取引のランダム除外:各回、すべての取引を指定の確率(初期値 10%)で1件ずつ除き、残りを元の順番のまま集計します。損益・PF・最大ドローダウン・残った取引数の分位点、損益が 0 以下になった割合、ヒストグラム
・大きい勝ちの除外:勝ちの大きい上位 K 件(初期値 5)を除いたときの損益・PF・最大ドローダウン
・年別の表(取引数・勝率・損益・PF・年内の最大DD・最大連敗・平均)と月別の損益の表(決済時刻で集計)。長い表はページに分けます
・CSV の書き出し(ボタン):設定、すべての統計、分位点、年別・月別の表、取引の一覧、選択でシミュレーション1回ごとの行。MQL5\Files に保存
・乱数のシードを固定:同じデータ・設定・シードなら、いつも同じ結果
・パネルは英語か日本語(端末の言語で自動)、配色はチャートの背景から明るい/暗いを自動、四隅のどこにでも置け、大きさ3段階、折りたたみ可。1つのチャートに複数置くと積み重ねて表示
主な設定
・Trades to analyze:データの取り方。口座:マジック番号、銘柄、決済日の開始/終了、手数料・費用・スワップを含める。ファイル:MQL5\Files の中の名前、共通の Files フォルダーから読む。DD% 用の開始残高(0=自動)
・Simulation:シミュレーションの回数(10〜100000、初期値 1000)、乱数のシード(初期値 12345)、除く取引の割合(1〜90%、初期値 10)、除く大きい勝ちの件数(0〜1000、初期値 5)、最大DD がこの % を超えた回を数える(初期値 20、0=オフ)
・Panel:最初に出すページ、表の1ページの行数、言語、隅、位置のずれ、大きさ、配色、折りたたんで始める、CSV ボタン、CSV にシミュレーションごとの行を入れる、新しい取引が決済されたら計算し直す
・入力は4グループ・27項目
計算方法
・1件の損益=損益+手数料・費用+スワップ(口座履歴では費用を除くこともできます)。0 から通貨の最小単位の半分より離れていれば勝ちまたは負け、それ以外は ±0(ファイルとサンプルでは 0.005)。プロフィットファクター=勝ちの合計 ÷ 負けの合計
・残高の線=開始残高+決済順の損益の累計。最大ドローダウン=それまでの山からの一番大きい下落、最大ドローダウン%=その下落 ÷ 山の時点の残高。保有中のポジションと含み損益は入りません
・開始残高(自動):口座履歴=選んだ最初の取引が決済される直前の口座残高、HTML=最初の取引より前の balance の行、サンプル=10,000。最初の取引より後の入金・出金は線に足さないため、DD% の分母には入りません。入力「Starting balance for DD %」を指定すると、自動の値の代わりに使います
・口座履歴:1件=1ポジション(部分決済は同じ取引、2つのポジションの CloseBy は1件、ネッティングの反転は前後で分けます)
・HTML のレポート:1件=約定の表の決済の約定(out、in/out、out by)1件。部分決済は1回ずつ別の取引として数えるため、同じ取引の口座履歴と比べて取引数・勝率・PF が少し違うことがあります。レポートにはポジション ID がないため、決済の約定は規則で建玉に対応させます(同じ銘柄・逆の売買。残りの数量がちょうど同じ最も古い建玉、なければ古い順)。数量の違う両建てがあると、この対応は推定になり、1件ずつに割り振る建てたときの手数料・スワップも推定になります。合計は正確です
・CSV:1行に1件、「時刻,損益」(区切りはカンマ・セミコロン・タブ。時刻は YYYY.MM.DD HH:MM または YYYY.MM.DD HH:MM:SS、「-」「/」も可)、または損益だけの1列(このときは年別・月別なし)。小数点は「.」だけ、桁区切りは使えません。行はファイルの順番のまま使います。最初の読めない行は見出しとして扱い、ほかの読めない行は「読まなかった行」として数え、# で始まる行は無視します。CSV には残高がないため、DD% を見るには入力で開始残高を指定してください
・開始残高が分からないときは、パネルに「不明」と出し、DD% は計算しません。金額は表示します
・シャッフル:毎回、元の順番からフィッシャー–イェーツ。除外:1件ごとに乱数1回。乱数:シードから splitmix64(除外はシード+1)。分位点:線形補間
・計算量の上限:シミュレーションの種類ごとに、回数 × 取引数を 1 億以下にします。超えるときは回数を自動で減らし(最低 10 回)、パネルにそう表示します。例:50,000 件なら 2,000 回。大きい計算は進み具合を表示しながら少しずつ進めるため、チャートは止まりません
注意と限界
・過去の取引の統計だけです。予測、保証、戦略の合否の判定、売買シグナル、助言のいずれでもありません
・シャッフルと除外は、1件ずつの損益をほかの取引と関係のない決まった金額として扱います。取引どうしや残高に依存する方式(グリッド、マーチンゲール、ナンピン、残高に応じてロットが増える方式など)では、シミュレーションの結果がその方式で実際に起こり得ることと大きく違うことがあります
・バックテストの結果はテストの設定(期間、銘柄、スプレッド、手数料、ティックのモデル)で変わります。このツールは渡された結果を読むだけで、テストの作り方は確かめません
・.xlsx(Open XML/Excel)のレポートは読めません。HTML で保存するか、CSV をお使いください。64 MB を超えるファイルは読まず、使う取引は 2,000,000 件までです
・読めるのは MQL5\Files(または共通の Files フォルダー)の中のファイルだけです。ファイル名に「..」「:」は使えません
・MT5 のレポートの初期のファイル名には口座番号が入ります(例 ReportTester-12345678.html)。パネルと書き出した CSV にはファイル名が出るため、画面を撮る前や CSV を人に渡す前に名前を変えてください
・年別・月別は、データに書かれた決済時刻で集計します(MT5 のレポートと履歴はサーバー時刻)
・ストラテジーテスターでは「口座履歴」にご自身の取引がないため、サンプルデータを表示し、CSV ボタンは出しません。ご自身のデータは通常のチャートでお使いください
動作環境とサポート
・MetaTrader 5 専用。ヘッジ口座・ネッティング口座、どの銘柄・時間足でも使えます(チャートの銘柄は関係ありません)
・DLL、インターネットは使いません。ファイルを書くのは CSV ボタンを押したときだけです
・サポートは MQL5 のメッセージで、3営業日以内に返信します。対応は導入・設定・ファイルの読み込み・不具合のご報告です。戦略や EA の良し悪しの判断、結果を助言として読み解くこと、相場観、売買の判断はお受けできません
・取引の結果について、約束や示唆は一切ありません。
