バックテスト基礎

MQL5のOnTester関数を使った独自の最適化基準(カスタム評価)の作り方

MT5のバックテスト最適化(遺伝的アルゴリズム等)において、デフォルトの「残高の最大化」や「プロフィットファクター」を最適化基準に選ぶと、極端なリスクを取るピーキーなパラメータばかりが選出されてしまいます。 MQL5の OnTester() 関数を用いることで、「純益 ÷ 最大ドローダウン(リカバリーファクター)」や「シャープレシオに勝率を加味した独自のスコ

Read this for この数字を、運用できるかの判断材料にする。

PF、勝率、最大DD、取引回数は単独では判断しません。期間、条件、崩れ方とセットで読みます。

Category バックテスト基礎

optimization / backtest

MQL5のOnTester関数を使った独自の最適化基準(カスタム評価)の作り方

結論

MT5のバックテスト最適化(遺伝的アルゴリズム等)において、デフォルトの「残高の最大化」や「プロフィットファクター」を最適化基準に選ぶと、極端なリスクを取るピーキーなパラメータばかりが選出されてしまいます。 MQL5の OnTester() 関数を用いることで、「純益 ÷ 最大ドローダウン(リカバリーファクター)」や「シャープレシオに勝率を加味した独自のスコア」など、システムトレードにおける真のリスクを抑えた性を測る『カスタム最適化基準(Custom max)』をプログラミングして適用することが可能になります。

なぜEA運用で重要か

最適化(Optimization)は、指定した評価基準(スコア)が最も高くなるパラメータの組み合わせを機械的に探す作業です。 AI(遺伝的アルゴリズム)に「とにかく残高(Balance)を最大にしろ」と命令すれば、彼は「一度も損切りせずにギリギリで助かった、ハイレバレッジの超危険なパラメータ」を最高の答えとして提示してきます。AIに「リスクを抑えたに稼ぐ」という概念を教えるためには、人間側で「利益とリスクのバランスをスコア化する数式」を定義してやる必要があるのです。

仕組み・条件

OnTester() は、1回のバックテストのパス(試行)が終了した直後に自動的に呼び出されるMQL5のイベントハンドラー関数です。 この関数は必ず double 型の数値を返す(return する)必要があり、MT5のテスター画面で「最適化基準:Custom max」を選択すると、ここで返された数値が最も大きいパラメータセットを「優秀」と判定します。

実装例(簡易的なリカバリーファクターのスコア化):

double OnTester()
{
    // テスト結果から純益と最大ドローダウン額を取得
    double net_profit = TesterStatistics(STAT_PROFIT);
    double max_dd     = TesterStatistics(STAT_EQUITY_DD);

    // ドローダウンが0、または利益がマイナスの場合はスコア0
    if(max_dd <= 0 || net_profit <= 0) return(0.0);

    // リカバリーファクター(純益 ÷ 最大DD)を計算して返す
    double custom_score = net_profit / max_dd;
    return(custom_score);
}

バックテストやリアル運用で壊れるポイント

どう確認するか

カスタム最適化基準を実装したら、最適化を実行し、結果タブの「Custom」列の値が意図通りに計算されているか確認します。 最適化の結果として上位に並んだパラメータセットが、「利益はそこそこだが、資産曲線(グラフ)が非常に滑らかでドローダウンが浅い」ものになっていれば、カスタム評価関数の実装は成功です。

自分の検証スタンス

私はほぼすべての自作EAにこの OnTester() を実装しています。 特に重視している数式は「(純益 / 最大ドローダウン) * (取引回数 / 100)」のような形です。どれほどリカバリーファクターが高くても、10年間で取引回数が数回しかないような「たまたまハマっただけのパラメータ」をAIに評価させないため(ペナルティを与えるため)の工夫です。AIを正しく調教することが、優れたEA開発者の条件だと考えています。

関連して読む

Backtest reading この数字を、運用できるかの判断材料にする。

PF、勝率、最大DD、取引回数は単独では判断しません。期間、条件、崩れ方とセットで読みます。

参照した公式情報

免責

本記事は個人の検証メモであり、投資助言ではありません。バックテスト結果は将来の成績を保証しません。海外FXや自動売買には、法規制・レバレッジ・スプレッド拡大・約定遅延・スリッページなどのリスクがあります。条件は変わるため、最新情報は各公式ページで確認してください。