ADXをEAに使うFX自動売買の条件設計と検証手順

風の強さを示す風速計と向きを示す風見が並ぶ屋外の観測器具

ADXをEAに使うときは、ADX本体でトレンドの強さを確認し、+DIと−DIで方向を判断する役割を分けます。「ADXが上がったから買う」では、下降方向の動きが強まった場面まで買い条件に入ってしまいます。最初に決めたいのは最適な数値ではなく、何を許可し、いつ新規注文を判定し、どう退出するかです。

FX自動売買では、指標の読み方を知っているだけでは同じ動作を再現できません。この記事では、確定足を使った条件の書き方、閾値を超えている状態と上抜けた瞬間の違い、発注せずに値を照合する手順を整理します。その後、ADXフィルターの有無だけを変えた比較へ進みます。

本文の期間・閾値・数値例は、条件を説明するための仮定です。特定の設定の優位性や検証成績を示すものではなく、利益を保証する設定値も提示しません。

この記事のポイント
  • ADXの上昇と価格の上昇を分け、方向はDI同士で確認する
  • 閾値以上という状態と閾値を上抜ける出来事を別の条件にする
  • 発注前に同じ確定足のADX・+DI・−DIを照合する
  • フィルター有無を同条件で比べ、除外した機会と取引数も見る
目次

ADXをEAへ使うFX自動売買の条件

大きく曲がりながら勢いよく流れる川
説明用の生成イメージです。

ADXの強さとDIの方向を分ける

ADXは、価格にトレンドがあるかを判断するための指標です。ここでいう強さと、上昇・下降の方向は別の情報です。ADXの値だけを見て、買いと売りを決めることはできません。+DIはプラス方向、−DIはマイナス方向の値動きに関係する線として確認し、両者の位置関係で方向の条件を作ります。

たとえば、ADXが前の確定足から上昇し、−DIが+DIより大きい場合を考えます。この組み合わせから「上昇相場だから買い」と読むのは誤りです。強さの条件は上向いていても、DI同士ではマイナス方向が優位な状態です。反対に+DIが上でもADXが低いなら、方向条件と強さの条件のうち一方しか満たしていない可能性があります。

MetaQuotesのADX公式ヘルプでは、+DIと−DIを比較する考え方が説明されています。この記事の条件例は、その説明を参考に役割を整理したもので、公式の売買手法全体をそのまま再現するものではありません。特に、DIの交差だけに手法を単純化したときは、別の設計として検証します。

ADXが高いという情報は、その先の値幅の大きさや損切りまでの距離を直接指定するものではありません。強さを測る条件を、そのままロット数の増加や損切り省略の根拠にしないようにします。指標全体の役割分担から整理したい場合は、FXインジケーターの基本と組み合わせ方も確認できます。

スクロールできます
読む対象条件にできる情報そこから決め付けないこと
ADXの水準指定した強さの基準を満たすか基準を超えれば価格が上がる
ADXの前後差強さの数値が前の足より増えたか上向きの値動きが発生した
DI同士の大小プラス・マイナスのどちらが優位か優位な方向で必ず利益が出る
分岐点の方向標と通行ゲートを別々に備えた歩道
説明用の生成イメージです。

フィルターとエントリーを分担する

最初は、ADXを新規エントリーの許可条件として使うと、追加した意味を調べやすくなります。既存の売買シグナルが発生した時点で、ADXが基準を満たす場合だけ通し、満たさない場合は見送る形です。フィルターは「取引してよい状態か」を判定し、エントリー条件は「今、新しく入る機会が発生したか」を判定します。

方向を既存の移動平均などで決めているEAなら、DI方向も重ねるかどうかは別の変更です。ADX本体だけを追加した案と、ADXとDI方向を両方追加した案では、改善理由を同じに扱えません。まず強さのフィルターだけを評価し、方向条件の追加は必要性がある場合に切り分けてください。

一方、DIクロスをエントリーの中心にするなら、方向の入れ替わりを検出し、その足のADXで許可する構成にできます。たとえば「直前の確定足で+DIが−DIを上抜け、同じ足のADXが仮の基準以上なら買い候補」と文章化します。売りはDIの上下を反転させます。この段階では候補の検出であり、保有制限や取引時間など、別の発注条件を省略する意味ではありません。

設計時は「DIクロス時にADXが足りなかったらどうするか」も決めます。その足だけ見送る方式と、数本後にADXが上がれば遅れて許可する方式では、入る価格も機会の数も違います。後者にはシグナルの有効期限や方向が逆転した場合の取り消しが必要です。最初の比較では、見送ったクロスを後から拾わない方式にすると、条件が単純になります。

逆張りEAで低いADXを許可条件にする設計も考えられますが、低い値だけで安全なレンジが保証されるわけではありません。本記事の比較は、既存の方向性を持つルールに強さの下限を加える場合を中心にします。順張り用と逆張り用を混ぜて、同じ閾値の成績として評価しないことが大切です。

DIクロスとADXの閾値上抜けを、両方同じ足で必須にする条件にも注意が必要です。DIが先に交差し、次の足でADXが基準を超えたなら、この二つの出来事は同時には成立しません。ADXを単なる許可状態として使うつもりだったのに、上抜けの瞬間まで要求すると、別のEAになります。条件を増やして取引が減ったときは、機会が少ないのか、二つの出来事の同時発生を要求したのかを切り分けましょう。

+DIと−DIが同値のときも扱いを決めます。「大きい」を条件にするなら同値は買いにも売りにも入りません。一つ前が同値で、その次に+DIが上へ出た場面をクロスに含めるかは、前の足の比較に等号を入れるかで変わります。買いと売りで境界の仕様が対称になっているかを、発注しない確認段階で確かめてください。

低い敷居の上に置かれた球と敷居を越えようとする球
説明用の生成イメージです。

閾値以上と上抜けを区別する

「ADXが25を超えたら」という文章には、少なくとも二つの意味があります。1本前の確定足で25より大きければ毎回許可する条件と、2本前は25以下で1本前に25より大きくなった場合だけ成立する条件です。前者は状態、後者は閾値をまたぐ出来事を表します。どちらを意図するか、先に比較式まで書きましょう。

以下では、1を直近の確定足、2をその一つ前の確定足、Tを仮の閾値とします。表は条件の説明であり、そのまま動くEAコードではありません。T=25や期間14を使っても、利益が出る普遍的な設定になるわけではありません。

スクロールできます
作りたい条件説明用の比較式同じ意味ではない条件
基準以上の状態を許可ADX[1] ≧ T閾値を上抜けた足だけ
基準を上抜けた足だけADX[2] ≦ T かつ ADX[1] > T基準より上にいるすべての足
強さの数値が増加ADX[1] > ADX[2]価格の上昇や買い方向
買い方向のDIクロス+DI[2] ≦ −DI[2] かつ +DI[1] > −DI[1]+DIが上にいるすべての足

説明用にADXが24→26→27と推移したなら、25以上という状態は26と27の両方で成立します。25を下から上抜ける条件は、24から26へ移ったところだけです。さらに26→25という変化では、「25以上」なら成立しますが、「25より大きい」なら成立しません。境界の等号まで決めると、チャートを見た感覚とEA判定の食い違いを減らせます。

画面の丸めにも注意します。表示が25.00でも、内部の値が24.996なのか25.004なのかで、25との大小関係は変わります。表示桁を丸めてから判定するルールにするなら、それ自体を仕様にします。数値が合わないたびに都合よく誤差を許容するのではなく、比較に使う精度と許容差を照合前に決めてください。

閾値付近を往復するたびに許可・禁止が切り替わるのを避けたいなら、許可へ移る値と禁止へ戻す値を分ける方式もあります。ただし、この方式は直前の状態を記憶します。開始時やEA再起動時の初期状態まで増えるため、単一閾値の動作を確認したあとで、独立した変更案として扱うのがよいです。

確定足と退出条件まで明文化する

同じADX条件でも、形成中の足と確定済みの足では判定時点が異なります。形成中の足は価格更新に伴って値が変わるため、途中で成立したDIクロスや閾値超えが、足の終わりには消えている場合があります。後から完成したチャートだけを見て、途中のEA判定が間違っていたと決め付けないようにします。

最初の検証案は、「新しい足の最初のティックを受けたときに、直近の確定足とその一つ前を読む」と固定すると整理しやすいです。足が変わる時刻ぴったりにティックが来るとは限りません。注文の判断時刻と、指標計算に使った足の開始時刻を分けて確認してください。同じ確定足を毎ティック読み直す設計なら、同じシグナルによる重複注文を別途防ぐ必要があります。

閉じた砂時計とまだ砂が落ちている砂時計
説明用の生成イメージです。

退出についても、ADXのフィルターとは別に決めます。「新規注文を許可しない」と「保有中のポジションを閉じる」は異なる処理です。ADXが閾値を下回ったら新規を止めるだけなのか、保有分も閉じるのか、DIの逆クロスで閉じるのかを分けます。フィルターの効果を測る最初の比較では、既存の損切り・利確・時間決済を固定し、新規の許可条件だけを変えると原因を追いやすくなります。

ADXが下がっても、価格が反転したとは限りません。そのため、強さの低下による退出は「反転を確定した処理」ではなく、その条件で手仕舞うというルールです。また、損切りと指標退出が同じ足の中で発生し得る場合は、どちらが先に成立したかで結果が変わります。終値で読む指標と、足の途中で執行され得る損切りを、同一時点の処理としてまとめないでください。

仕様には、買い・売りの条件、同時保有数、同じ足での再エントリー、反対シグナルが出たときの扱い、注文に失敗した場合の再試行まで含めます。たとえば「1銘柄につきこのEAの保有は1件、新しい確定足ごとに1回判定、保有中の追加注文なし」と決めれば、ADX条件が成立し続けても注文を増やしません。条件が満たされたことと、必ず注文が出ることを区別できます。

また、EAを停止する設定と保有ポジションの損切り注文がどう関係するかは、実装と注文の置き方に依存します。停止操作を損切りの代わりにせず、異常を検出したら新規だけを止めるのか、手動確認へ移るのかを決めます。ADX条件が不成立になったことを理由に、既に置いた損切りを自動で外すような設計は、別のリスク変更になります。

ADXをEAに組み込む前の検証

三つの異なる測定器を並べて基準物を確かめる作業台
説明用の生成イメージです。

発注せず三つの値を照合する

まず確認するのは利益ではなく、EAが想定した値を読んでいるかです。注文を送る処理のない確認用プログラムや、発注を伴わないと仕様上確認できるシグナル表示機能を使い、同じ日時のADX・+DI・−DIを表示します。実口座で発注機能付きEAの動作を見ることを、値照合の代わりにしないでください。

照合する銘柄名、配信元、時間足、指標の種類、期間、対象足を揃えます。MT5には通常のADXとは別にADX Wilderもあるため、「どちらも期間14だから同じ」とは扱えません。MQL5のiADXWilder仕様で対象を確認し、チャートに置いた指標と取得関数の組み合わせを合わせます。値が一致するまで閾値を動かす方法では、参照先の誤りを見つけられません。

MQL4のiADX公式リファレンスには、銘柄、時間足、期間、適用価格、mode、shiftの引数が示されています。ADX本体を取得したい箇所でMODE_PLUSDIを選ぶと、コードが動いても別の線を読みます。戻り値を表示して、どの線の値かを名前と一緒に照合することが必要です。

対してMQL5のiADX公式リファレンスは、数値そのものではなく指標ハンドルを返す仕様です。その整数をADXの数値として閾値と比較することはできません。MQL4のmodeやshiftを、同じiADXの引数としてそのまま渡すこともできません。両言語の名前が同じ関数でも、値の取得手順を分けて確認します。

同じ色の三組の石を対にして並べる手元
説明用の生成イメージです。

照合には、値だけでなく「取得成功」「判定対象の足の開始時刻」「判定結果」を一組にした確認情報を使います。通信直後など必要なデータが足りない場面では、その回は判定を保留します。前回の正常値を新しい足の値として再利用しないことも確認してください。毎回同じ数値が出る場合は、相場が動いていないと決めず、対象足の時刻まで更新されているかを見ます。

MQL5ではCopyBufferの仕様に沿って対象の値を取得します。ADXのバッファ番号は0が本体、1が+DI、2が−DIです。取得できた件数が要求した件数と同じかを確認します。開始位置0は現在足です。確定足1本だけを読みたいなら、開始位置1・件数1という指定との対応を確認します。取得失敗や件数不足を、ADXが0である正常な状態に置き換えてはいけません。

ハンドルを作れただけでは、必要な履歴計算が済んだと断定できません。BarsCalculatedの公式仕様は、計算済みデータ数や未計算時のエラーを確認する入口です。ただし、数本の取得に成功したことだけで計算初期の影響までなくなったとは限らないので、比較には十分な先行履歴を用意します。

手動側では、同じ確定足にポインターを合わせ、データウィンドウの日時と三つの線を読みます。MT4のデータウィンドウで指標値を照合する手順も参考になります。数値が揃ったあとで、閾値の上下、DIの交差前後、閾値と等しい場合を選び、想定する真偽とプログラムの判定を比べてください。

フィルターの有無だけを変えて比べる

値の参照と判定が合ったら、ADXを加える前と後を比較します。基準案Aを既存EA、比較案Bを「既存EAにADXの新規許可条件だけを追加」とします。DI方向や退出方法まで一緒に変えると、ADXフィルター単独の影響は分かりません。別の改善を試したくなっても、まずAとBを固定したまま比較します。

銘柄、時間足、価格履歴、テスト期間、先行履歴、初期資金、ロット、取引コスト、稼働時間、損切り・利確、保有制限を揃えます。可変ロットでは取引順序による残高差が後のロットへ波及するため、最初は同じ固定ロットなど、差の理由が追える条件を選ぶと調べやすくなります。比較後に資金管理の条件を変える場合は、別のテストです。

テスターのモデリング方法も同じにします。確定足で新規判定するEAでも、損切りや利確が足の途中で動くなら、始値だけで結果の順序まで確認できるとは限りません。MT5で使う方法や約定遅延などの設定は、MetaTrader 5のストラテジーテスト公式ヘルプで対応を確認します。MT4の設定名や利用できるデータ方式と混ぜないようにしてください。

結果は、純益だけでなく、取引回数、平均損益、最大ドローダウン、保有期間も並べます。Bで損失が小さくなっていても、取引をほとんどしなくなっただけかもしれません。改善した理由を説明するには、削った取引と残った取引の内訳へ進む必要があります。レポートの各項目は、MT4のEAバックテスト結果の見方で確認できます。

スクロールできます
比較を固定するものAとBで確認する点
元のシグナルと退出同じルール・入力値・判定タイミング
ADX以外の制限スプレッド上限・取引時間・保有数を同一にする
資金とコストロット・初期資金・手数料等を揃える
履歴とモデリング同じ価格データ・期間・方式を使う
変更するものADXの新規エントリー許可条件の有無だけ
元の容器から二つの器へ分けた色の混ざった球
説明用の生成イメージです。

除外した機会も同じ母集団で見る

ADXを入れたEAだけの勝率を見ても、フィルターが何を変えたかは分かりません。元のルールが出した候補を共通の母集団にして、それぞれの候補日時に「ADXで許可」「ADXで見送り」「値の取得失敗」を分けます。取得失敗を弱いトレンドとして数えると、フィルターの意味と実装の不具合が混ざります。

説明用に、元のルールが候補を100件出し、ADX条件で60件を許可、40件を見送ったと仮定します。これは実測値ではありません。ここで知りたいのは、許可した60件だけが良かったかではなく、見送った40件の中に、損失を減らす機会と大きな利益を逃す機会がどう含まれていたかです。許可率だけで良し悪しは決まりません。

ただし、候補と実際の約定済み取引は同じではありません。1ポジション制のEAなら、Aで早く入ったために次の候補を見送る一方、Bでは最初をADXで見送って、次の候補へ入ることがあります。そのため、Bの取引はAの取引から一部を取り除いた集合になるとは限りません。Aの確定損益を足し引きするだけで、Bの成績を再現しないでください。

比較は二段階に分けると整理できます。まず、保有の影響を受けない元シグナルの候補日時で、ADX判定の内訳を見る。次に、保有制限や退出を含むEA全体をAとBで別々に再実行し、実際に生じる取引列を比べる流れです。候補が減った理由と、資金曲線が変わった理由の両方を説明できます。

また、上昇局面だけや好調月だけを母集団に選ばないことも重要です。買い・売り、期間別の件数、値の取得に失敗した割合を確認し、一部の相場を取り除いたために良く見えた結果かどうかを調べます。傾向を調べる区分は、結果を見たあとに勝ちやすい分類だけを採用せず、比較を始める前に決めておきます。

閾値の周辺と別期間を確かめる

単一期間で最も利益が大きい閾値を選ぶだけでは、過去の偶然に合わせた可能性が残ります。仮にT=25を試したなら、その値だけでなく、事前に決めた近隣の候補でも取引数と損益の変化を確認します。25だけ良く、少し動かすと極端に崩れるなら、その理由を調べるまで採用を保留します。近隣でも良いから未来も勝てるという保証にはなりません。

一つの高さだけでなく周辺の高さに置かれた小さな試験片
説明用の生成イメージです。

期間の設定も同様です。ADXの計算期間を変える作業と、閾値を変える作業を同時に行うと、どの変更が効いたのか分かりにくくなります。まず計算期間を固定して閾値を比較し、必要なら計算期間を変えた別案へ進めます。小数点以下まで細かい候補を大量に試して最高値だけを選ぶより、条件に合理的な説明があるかを確認してください。

調整に使う期間と、触らずに確かめる別期間も分けます。別期間で結果が悪いから閾値を変更したなら、その期間はすでに調整に使ったことになります。再度の確認には、さらに未使用の情報が必要です。都合の良い期間へ入れ替え続ける方法では、別期間で確かめたことになりません。

最後は、デモ環境で新しい足の検出、値取得、許可・見送り、重複注文の防止、退出が設計どおり動くかを確認します。指標の計算値が一致しても、実際の約定条件や通信状態まで一致したことにはなりません。取引が少ない場合は、一定の日数が経過したという理由だけで合格にせず、必要な種類の場面を観察できたかで判断します。

別期間へ進む前に、採用・保留・見送りの基準も決めます。たとえば「損失は減ったが取引が極端に減り、別期間で候補がほとんど残らない」なら、勝率が高くても判断材料不足として保留できます。普遍的な合格取引数を置くのではなく、狙う頻度と観察できた相場の種類を説明できることを基準にします。

ADXを使うEAは値照合から始める

ADXを使うEAは、強さ・方向・新規のきっかけ・退出を分けると、検証すべき点が明確になります。ADXの上昇は価格の上昇ではなく、DIが上にいる状態はDIが交差した瞬間とも違います。この区別を文章と比較式に落とし込むことが、設定値を探す前の出発点です。

次の作業は、仮の閾値を一つ決めて実口座で動かすことではありません。まず同じ確定足のADX・+DI・−DIを表示し、手動の判定と揃うかを確かめます。揃わないなら参照条件へ戻り、揃ったらフィルター有無の比較へ進みます。この順番なら、指標を正しく読めたことと、売買ルールに採用する価値があることを分けて判断できます。

よかったらシェアしてね!
目次