MT5のEAで時間足そのものを最適化する方法|上位足フィルタの正しい効き方と、フィルタを足す前に確認する順番

【商品についてのお問い合わせは公式ラインからどうぞ】
https://lin.ee/9yDXJ19

メールでのお問い合わせはこちらのメアドをご利用ください。
ea-designer-kuu@hashibito-llc.com

YouTube動画解説もありますのでお時間ある方は合わせてご視聴ください。

シリーズ「AIで自作のEAを作る」第5回

先に結論を書きます。

フィルタを足す前に、時間足を疑ってください。 移動平均クロスのEAで、ADX・ATR・SL/TPの3つを足して動いた金額は最大26万円。時間足を1分足から15分足に変えて動いた金額は100万円超でした。

この記事では、時間足そのものを最適化の対象にするEAの作り方と、その結果の読み方、フィルタを足す前に確認する順番をまとめます。数字はすべてMT5のリアルティックで、2024年1月から2026年9月のXAUUSDです。

1. 時間足を入力パラメータにする

MT5のEAは通常、チャートに置いた足で動きます。これだと最適化で時間足を振れません。

やることは3つです。

(1)時間足を選択式の入力にする。 ENUM_TIMEFRAMES をそのまま使うと20種類以上あって最適化が終わらないので、主要な足だけの列挙型を作ります。

enum ENUM_TRADE_TF
  {
   TF_M1  = PERIOD_M1,    // 1分足
   TF_M5  = PERIOD_M5,    // 5分足
   TF_M15 = PERIOD_M15,   // 15分足
   TF_M30 = PERIOD_M30,   // 30分足
   TF_H1  = PERIOD_H1,    // 1時間足
   TF_H4  = PERIOD_H4,    // 4時間足
   TF_D1  = PERIOD_D1     // 日足
  };

input ENUM_TRADE_TF TradeTimeframe = TF_H1;  // 売買判定に使う時間足(チャートの足とは無関係)
input ENUM_HTF_TF   HTFTimeframe   = HTF_D1; // 参照する上位足(実行足より上を選ぶ)

(2)インジケーターのハンドルを、チャートの足ではなく入力の足で作る。 iMA(_Symbol, g_tf, ...) のように、_Period の代わりに入力から決めた変数を渡します。これでチャートをどの足で開いても同じ動きになります。

(3)意味のない組み合わせを OnInit で弾く。 上位足フィルタで、上位足が実行足と同じか下の足になる組み合わせはフィルタとして意味がありません。

if(UseHTFFilter && PeriodSeconds(g_htf) <= PeriodSeconds(g_tf))
  {
   Print("上位足は実行足より上にしてください");
   return(INIT_PARAMETERS_INCORRECT);
  }

INIT_PARAMETERS_INCORRECT を返すと、最適化中にこの組み合わせに当たっても止まりません。そのパスは「結果なし」として結果表から消えるだけです。

AIに頼むなら、この3点をそのまま書けば通ります。

「売買判定に使う時間足と、上位足フィルタで参照する時間足を、両方とも入力パラメータにしてください。最適化で総当たりできるように、主要な足だけの列挙型にしてください。上位足が実行足以下の組み合わせは OnInit で INIT_PARAMETERS_INCORRECT を返して弾いてください。」

2. setファイルで総当たりする

ストラテジーテスターの設定です。

項目設定
モデル全ティック(リアルティックに基づいた)
最適化完全アルゴリズム(低速)
最適化基準残高 最大(結果は全項目出るので何でもよい)
パラメータタブTradeTimeframeHTFTimeframe の2行にチェック

列挙型のパラメータは、開始値から終了値まで並び順に全部試されます。ステップは無視されます。実行足をM15〜H1、上位足をM30〜W1にすると15パスで、上位足≦実行足の3パスが弾かれて実質12通りです。

遺伝的アルゴリズムを使うと、パスの一部しか回りません。数十通りなら完全アルゴリズムで回してください。

3. 結果の読み方

見るのは4つです。総損益・プロフィットファクター(PF)・取引数・最大ドローダウン。

実行足と上位足の総当たり表。M15、M30、H1、H4、日足、週足のデータを比較しているグラフ。

上位足フィルタだけONにした12通りの結果です。

実行足\上位足M30H1H4D1W1
M15+369,050 (PF1.27 / 1,240回)+311,393 (1.26 / 1,127)+278,464 (1.23 / 1,085)+402,297 (1.33 / 1,174)+324,554 (1.26 / 1,182)
M30+305,606 (1.29 / 638)+282,833 (1.32 / 571)+467,860 (1.53 / 595)+364,417 (1.40 / 608)
H1+328,073 (1.62 / 268)+466,055 (1.93 / 261)+336,717 (1.57 / 282)

読み取り方の要点です。

  • 上位足は「近い足」ではなく「遠い足」が効いた。 日足が3段とも1位、週足が2位、H1・H4が最下位グループです。実行足の4〜6倍を上位足にする定石は、このEAでは外れでした
  • 実行足を上げるほどPFが上がる。 日足の列で 1.33 → 1.53 → 1.93。総損益はM30とH1でほぼ同じですが、H1は261回で稼いでいるので1回あたりが2.3倍です
  • 取引数が極端に少ないパスは、数字が良くても信用しない。 H4を実行足にすると3年で61〜77回しか取引が出ず、判断できません。今回の候補から外しています

MT5で回す前に、同じロジックをPythonで簡易計算して順位を予想させておくと、時間を節約できます。今回はPythonの予想(H1×D1 > M30×D1 > M15×M30)がMT5でほぼそのまま当たりました。1分足のCSVがあれば、AIに「同じロジックで全組み合わせの簡易バックテストを書いて」と頼むだけで出てきます。

4. フィルタは「時間足を決めてから」検証する

第4回で「レンジを避けるならADXが本命」と書きました。訂正します。 1分足では負けを減らしていたADXは、15分足以上では利益を削るだけでした。

理由は単純で、1分足のノイズを消すために作ったフィルタは、ノイズが少ない足では「利益の出る取引」まで削るからです。

12通りの実行足×上位足それぞれに、ADX・ATR・SL/TPをONにしたときの変化です。

スイッチ総損益の変化(12通り平均)PFの変化改善した組み合わせ
ADX(14 / 22)−158,554円−0.090 / 12
ATR(14 / 50 / 0.80)−115,007円−0.060 / 12
SL/TP(ATR×2 / ×3)−304,346円−0.320 / 12

0勝12敗が3つ。 時間足を先に決めていれば、この3つのフィルタを作る往復は要りませんでした。フィルタを検証する順番は「時間足 → 上位足 → それでも足りなければフィルタ」です。


このEAも記事も、AIと一緒に作っています。私はプログラマーではありません。MT5のEAもインジケーターも、Claude(AI)と対話しながら作っています。コードが書けなくても、作りたいものを言葉にできれば形になります。無料でも使えるので、同じように「作る側」に回ってみたい方は、こちらから試せます。

https://claude.ai/referral/sWCPCcvVWQ

※紹介リンクです。どのプランを選ばれても、私に利害はありません。


5. 出口が2つあるEAは、悪い方の出口で決まる

SL/TPが一番悪い理由は、このEAの出口が「逆クロス」だからです。そこにATR×2の損切りを足すと、トレンドの押し目で先に切られて、元の方向に伸びる分を取り逃がします。

M30で特に顕著です。

組み合わせSL/TPなしSL/TPあり
M30×H1+305,606−132,981
M30×W1+364,417−111,081

ATR×2が、30分足の押し目にちょうど引っかかる距離になっています。損切りを付けるなら「利確なし・損切りだけ遠く(ATR×4〜10)」で、逆クロス決済を邪魔せず事故だけ止める距離を探すのが次の手です。これは未検証なので、結果が出たら書きます。

6. 当たりが出たら、3つの角度で疑う

最適化で1位が出たら、そこで終わりにしません。

(1)年別に分ける。 1年だけで稼いでいないか。M30×D1の単体テストです。

合計ロングショート金の値動き
2024+33,612(223回)+59,775−26,1632,069 → 2,605ドル
2025+177,884(221回)+186,450−8,5662,642 → 4,347ドル
2026(〜9月)+256,364(151回)+148,560+107,8044,347 → 4,478ドル(横ばい)

3年ともプラスです。2024年と2025年はほぼロングだけで稼いでいますが、金が横ばいの2026年にショートで +107,804円出ているのが、上げ相場のおかげだけではないと言える材料です。

(2)周辺を振る。 上位足の移動平均期間を20〜100で振ったのが次の表です。

上位足MA期間2030405060708090100
M30×D1278,949332,690350,239467,860426,727435,041450,432450,063418,086
H1×D1353,783290,092365,180466,055404,041403,341406,787441,411451,093

50〜100は平ら、20〜40は落ちる。50だけが突出しているわけではないので、過学習ではなさそうです。短期・長期の移動平均(10/30)の周辺は未検証です。

(3)利益の偏りを見る。 2026年1月だけで総損益の27%(+128,243円)。上位10トレードを除くと +100,276円しか残りません。トレンドフォローの利益はこういう形になるので、フォワードで数か月負け続けても異常ではありません。

7. 資金の目安を先に計算する

証拠金ベースの最大ドローダウンは104,252円(7.08%)。これは「100万円に0.01ロット」での数字です。

口座資金同じDDの割合
100万円7%
50万円14%
30万円35%
10万円破綻圏

ロットは0.01より下げられないので、0.01ロットあたり30〜50万円が現実的なラインです。バックテストの総損益より先に、この表を作ってください。

チェックリスト

順番やること合格ライン
1時間足を入力パラメータにして、実行足×上位足を総当たり全通りプラス。取引数が少なすぎるパスは除外
21位の組み合わせで、フィルタを1つずつON/OFF改善しないフィルタは初期値OFF
3SL/TPは逆クロス決済との相性を見る利益が減るなら付けない
4年別・周辺・利益の偏りで疑う各年プラス、周辺が平ら
5資金の目安を出す0.01ロットあたりの必要資金
6別業者データとデモフォワード順位が変わらない

今回は4の一部(短期・長期MA期間の周辺)と、5以降が未了です。

詰まった過程は、noteに書きました

この記事は手順に絞りました。ADXを本命と書いてから訂正するまでの2週間、AIに何を頼んでどう返ってきたか、「呆然とした」瞬間の話は、noteのほうに書いています。

(note第5回のURLを公開後に入れる)

※シリーズの過去回はこちらです。

動画はこちらです。
第3話|時間足そのものを最適化する https://youtu.be/m9ynBprcOMk


使用ブローカー

MT5を使うには口座が必要です。私が使っているのはExnessです。
https://one.exnessonelink.com/a/frbss95cj4

お問い合わせ

公式LINE:https://lin.ee/9yDXJ19 / メール:ea-designer-kuu@hashibito-llc.com

免責事項

本記事は情報提供および技術解説を目的としたものであり、投資勧誘を目的としたものではありません。本記事で紹介するEAおよび検証手順は学習用のものであり、収益を保証するものではありません。バックテストの結果は将来の成果を保証しません。FX・CFD取引には元本を割り込むリスクがあります。取引の最終判断はご自身の責任で行ってください。

EA Designer Kuu

EAデザイナー空(くう)

EAデザイナー空(くう)と申します。 裁量トレード歴20年。 EA歴17年です。 現在はEA開発販売をメインにインジケーター開発販売や裁量トレード教室なども手掛けております。 EAは国内外のブローカーで使用することができます。 ブローカーやペア通貨を変更するたびに最適化が必要です。

コメント

この記事へのコメントはありません。

最近取引している口座はこちら
私が使用しているお勧めVPS
私が使っている海外口座はここ↓
ブログをメールで無料購読

メールアドレスを記入して無料購読すれば、更新をメールで受信できます。

最新情報はLINEで
友だち追加
国内口座のEAはこちら
最近の記事
Contact us
おすすめ記事1
海外口座でダントツ出金が早い!
海外FXの老舗
PAGE TOP