ランダムウォークへの挑戦㉗|Dの勝敗はトレンドで説明できるのか?MA・DI・ADXを検証する(2026/10/16)

TOP画像 未分類

はじめに

前回は、候補D(Relative Band Distance 0.60~1.00)の成績が時期によって大きく変わる理由を探るため、ATRやボリンジャーバンド幅を分析しました。

ランダムウォークへの挑戦㉖|Dが勝てる相場とは?ATRとBB幅から「相場環境」を探る
はじめに前回は、D:Relative Band Distance 0.60 ~ 1.00の優位性が、なぜ時間とともに弱くなっているように見えるのかを調べました。Dの計344取引を時系列で4分割すると、Profit Factorは、Perio…

しかし、値動きの大きさだけでは、Dの成績の違いを十分に説明できませんでした。

そこで気になったのが、相場の「方向」と「トレンドの強さ」です。

例えば、同じ10pipsの値動きでも、上下に行ったり来たりする10pipsと、一方向に伸びる10pipsでは、売買システムにとって意味が違うはずです。

であれば、零号機の候補Dが勝ちやすい相場には、トレンドに関する何らかの共通点があるのではないか。

今回は、この仮説を調べるため、Pythonを使って3つの指標を分析しました。

  • MA50の傾き
  • DI差(方向性指標)
  • ADX14(トレンドの強さ)

果たして、Dの勝敗を説明する手がかりは見つかるのでしょうか。

今回の分析対象

分析対象は、これまで研究してきた候補Dです。

Relative Band Distanceが0.60以上1.00以下に該当する取引を抽出しました。

トレンド特徴量を追加記録した取引ログは全1,731件。そのうち候補Dは344件でした。

区分取引数勝ち負け
全体344184160
BUY962076
SELL24816484

ここで注目したいのは、BUYとSELLで勝敗の構成が大きく異なることです。

この偏りがあるため、全体の平均や中央値だけで判断すると、誤解を招く可能性があります。今回は全体に加えて、BUYとSELLを分けた分析も行います。

なお、今回の目的は、勝ち取引と負け取引の特徴量を比較することです。最適な売買条件を探したり、新しいフィルターをシステムに採用したりする段階ではありません。

今回調べた3つのトレンド指標

① MA50の傾き

MAはMoving Average、つまり移動平均線です。

今回は、M30(30分足)の50本単純移動平均線を使いました。

その傾きを、直近の利用可能な確定足と3本前の確定足のMA50の差で測定しています。

また、BUYとSELLでは有利な方向が逆なので、売買方向を考慮した値に変換しました。

仮説は、「エントリー方向に沿ったMA50の傾きが大きいほど勝ちやすいのではないか」というものです。

② DI差

DIはDirectional Indicatorの略で、相場の上方向と下方向の強さを表す指標です。

  • +DI:上方向の値動きの強さ
  • -DI:下方向の値動きの強さ

今回は、+DI14から-DI14を引いた値を、売買方向に合わせて調整しました。

こちらの仮説は、「エントリー方向とトレンド方向が整合しているほど勝ちやすいのではないか」です。

③ ADX14

ADXはAverage Directional Indexの略です。

MAやDIと少し違うのは、ADXが基本的にトレンドの方向ではなく、トレンドの強さを表すことです。

ADXが高いから上昇相場という意味ではありません。下落トレンドが強い場合にもADXは高くなります。

今回の仮説は、「トレンドが強い場面では、候補Dが勝ちやすいのではないか」です。

仮説①|MA50の傾きは勝敗に関係するのか?

まずはMA50です。

勝ち取引と負け取引に分け、それぞれの中央値を比較しました。中央値とは、データを小さい順に並べたとき、ちょうど中央に位置する値です。

区分勝ち中央値負け中央値差
全体0.59700.6430-0.0460
BUY0.67101.0350-0.3640
SELL0.59400.4130+0.1810

単位はpipsで、MA50の3本差を売買方向に合わせて調整した値です。

全体では、勝ち群と負け群の差がほとんどありません。

BUYとSELLで違う傾向にも見えますが、統計的な不確実性が大きく、今回のデータから明確な関係があるとは判断できませんでした。

今回の結果は、「MA50の傾きが大きいほど勝ちやすい」という仮説を明確には支持しないものです。

もちろん、MA50がまったく無関係だと証明されたわけではありません。

ただ、少なくとも今回の分析では、期待していたほど分かりやすい違いは見つかりませんでした。

仮説②|DI差には違いが見られるのか?

続いてDI差を見てみます。

区分勝ち中央値負け中央値差
全体-15.4315-12.5795-2.8520
BUY-8.1115-8.5515+0.4400
SELL-16.0395-15.4090-0.6305

全体では、勝ち群のDI差が負け群より小さい結果になりました。

この差だけを見ると、何らかの関係がありそうです。

ところが、BUYとSELLを分けると、差はかなり小さくなります。

なぜでしょうか。

考えられる理由の一つが、先ほど確認した売買方向の偏りです。

候補Dでは、BUYは20勝76敗なのに対し、SELLは164勝84敗でした。

つまり勝ち群と負け群では、BUYとSELLの構成比率が大きく異なります。

そのため、全体で見えたDI差が、本当にトレンドと勝敗の関係を示しているのか、それとも売買方向の構成に影響されたものなのか、今回の分析だけでは切り分けられません。

このように、全体をまとめて見ると関係がありそうでも、グループごとに分けると印象が変わることがあります。

データ分析では、こういうところが面白くもあり、怖くもあります。

DI差については、現時点では判定保留とします。

仮説③|ADXに興味深い結果が現れた

そして、今回もっとも気になったのがADXです。

区分勝ち中央値負け中央値差
全体26.194024.1170+2.0770
BUY23.525521.8400+1.6855
SELL26.321024.6580+1.6630

全体でも、BUYでも、SELLでも、勝ち群の方がADX中央値は高くなりました。

これまでMA50やDI差を見てきましたが、今回の3指標の中では、ADXがもっとも気になる結果です。

これは、候補Dの勝敗には、トレンドの方向そのものだけでなく、トレンドの強さが関係している可能性を示しています。

ただし、ここで「ADXが高いときだけ売買すればよい」と考えるのは早計です。

今回の分析では、勝ち群と負け群の中央値差について、ブートストラップという方法も用いて不確実性を確認しました。

ブートストラップとは、手元のデータから繰り返しサンプルを作り、集計値がどれくらい変動するかを調べる方法です。

今回は2,000回の再標本化による探索的な区間を計算しています。

ADXの全体の中央値差はプラスでしたが、BUY・SELL別に計算した区間は、いずれも差がゼロという可能性を含んでいました。

さらに、今回のブートストラップは取引の時系列依存や複数仮説の検証を十分に考慮したものではありません。

つまり、ADXは追加検証の候補にはなりましたが、売買フィルターとして採用できる段階ではありません。

2025年と2026年ではどうだったのか?

ここまでで、ADXに少し手がかりが見えました。

しかし、本来知りたかったのは、候補Dの成績が時期によって変わる理由です。

そこで、2025年と2026年を探索的に比較しました。

項目2025年2026年
取引数18件18件
勝敗11勝7敗5勝13敗
勝率61.1%27.8%
MA50傾き中央値0.44700.3250
DI差中央値-16.4960-13.1460
ADX中央値25.768525.4870

同じ18件ですが、勝率にはかなりの差があります。

ただし、2025年と2026年では収録期間が異なります。2025年は1月20日から12月19日まで、2026年は1月21日から7月28日までの観測です。したがって、年間成績を同条件で比較したものではありません。

興味深いのはADXです。

全体の中央値はそれほど大きく変わっていません。

さらにSELLだけを見ると、ADX中央値は次のとおりでした。

  • 2025年のSELL:25.7685
  • 2026年のSELL:27.4985

2026年の方が高い結果です。

一方、SELLの勝敗は次のようになっています。

  • 2025年:10勝4敗
  • 2026年:5勝9敗

つまり、2026年のSELLはADXが高いにもかかわらず、勝率は低下しています。

この結果は、「ADXが高い相場ならDが勝てる」という単純な説明を支持しません。

ただし、各年18件、SELLだけなら各14件しかありません。

少数の取引の勝ち負けによって結果が大きく変わるため、年別の安定性についてはまだ結論を出せません。

今回の検証から分かったこと

今回の4つの仮説について、結果を整理します。

仮説確認結果評価
H1:MA50の傾き勝敗群の差は小さく、不確実性も大きい明確な支持なし
H2:DI差全体の差には売買方向の構成が影響する可能性判定保留
H3:ADX14勝ち群で高い傾向を観察判定保留・追加検証
H4:時間的安定性2025年と2026年で勝率に差がある少標本のため保留

今回の研究で一番重要なのは、「差が見えたこと」と「将来の売買判断に使えること」は別だという点だと思います。

バックテストで良さそうな指標が見つかっても、すぐに売買条件を追加するのではなく、その差が再現するか調べる必要があります。

今回の研究の限界

最後に、今回の検証でまだ確認できていないことを整理しておきます。

未来情報と再現性の確認

エントリー時刻と特徴量の参照バーについて、分析コードによる時間差の検査は通過しています。

しかし、過去の価格データと全期間を独立に突き合わせた完全な検証は、まだ終わっていません。

過剰最適化と未知データ

今回は過去データでの探索的な分析です。

ADXの最適な閾値を探したわけではなく、アウトオブサンプル検証やウォークフォワード検証も実施していません。

これらは今後の重要な課題です。

まとめ|答えはまだ出ていない

今回、MA50、DI差、ADX14の3指標を使って候補Dの勝敗を調べました。

MA50には明確な支持がなく、DI差は売買方向の偏りを考慮すると単純には解釈できませんでした。

一方、ADXには勝ち群で高い傾向が観察されました。

これを見たときは、トレンドの強さがDの勝敗を説明する鍵になるのではないかと思いました。

しかし、2025年と2026年を比べると、ADXが高いのに勝率が低い場面もあります。

つまり、まだ単純な答えは出ていません。

ただ、これは研究が失敗したということではありません。

「ADXだけを見ればよい」という安易な結論に進まずに済んだこと自体が、今回の収穫だと思います。

ランダムウォークへの挑戦は続きます。

次回予告

次回、第28回では、今回気になったADXとDIをさらに検証する予定です。

特に、BUYとSELLの違いや、時期による偏りを考慮して、今回見えた関係がどこまで信頼できるものなのかを調べたいと思います。

また、損益データの整合性など、残された再現性の課題も整理していく必要があります。

第弐拾八話――トレンドの真価を問う。

関連記事

ランダムウォークへの挑戦㉗|Dの勝敗はトレンドで説明できるのか?MA・DI・ADXを検証する(2026/10/16)
ランダムウォークへの挑戦㉖|Dが勝てる相場とは?ATRとBB幅から「相場環境」を探る
ランダムウォークへの挑戦㉕|Dの優位性はなぜ消えた?Relative Band Distanceの時間劣化を分解する
ランダムウォークへの挑戦㉔|高PFでも耐えられるとは限らない。Relative Band Distanceを資産曲線とドローダウンで比較する(2026/8/30)
ランダムウォークへの挑戦㉓|最高PFは本当に強いのか。Relative Band Distanceを時間分割で比較する(2026/8/30)
ランダムウォークへの挑戦㉒|Q3の境界をずらしても優位性は残るのか(2026/8/30)
ランダムウォークへの挑戦㉑|Q3の優位性は時間が変わっても残るのか(2026/8/29)
ランダムウォークへの挑戦⑳|零号機の利益は「一部の大勝ち」に支えられているのか(2026/8/20)
ランダムウォークへの挑戦⑲|BAND_DISTANCEをATRで割って「相対的なブレイクの強さ」を分析する(2026/8/19)
ランダムウォークへの挑戦⑱|バンドからの距離で零号機のエントリー位置を分析する(2026/8/19)
ランダムウォークへの挑戦⑰|ATR×BB幅で零号機の「得意な相場」を16種類に分解する(2026/8/14)
ランダムウォークへの挑戦⑯|ボリンジャーバンドの幅で零号機の得意な相場を探る(2026/8/11)
ランダムウォークへの挑戦⑮|零号機は「荒れた相場」に強いのか ― ATRと取引成績の関係をPythonで分析する(2026/8/9)
ランダムウォークへの挑戦⑭ | 零号機の「記憶」をPythonへ渡す ― trade_log.csvを分析用データに整える(2026/8/5)
ランダムウォークへの挑戦⑬ | 零号機に「記憶」を与える ― mql4でエントリーから決済までの相場環境を記録する(2026/8/2)
ランダムウォークへの挑戦⑫ | Chapter2「学習」始動 ー零号機は何を学ぶべきなのかー(2026/8/2)
ランダムウォークへの挑戦⑪ | 零号機の性格診断──Chapter1「観測」 完結(2026/8/1)
ランダムウォークへの挑戦⑩ | Pythonで資産推移とドローダウンを分析する(2026/8/1)
ランダムウォークへの挑戦⑨ | Pythonで取引の連勝・連敗を分析する(2026/7/28)
ランダムウォークへの挑戦⑧ | Pythonでポジションの保有時間別に成績を分析する(2026/7/26)
ランダムウォークへの挑戦⑦ | Pythonでエントリー曜日と決済曜日から零号機を分析する(2026/7/23)
ランダムウォークへの挑戦⑥ | Pythonでエントリー時間と決済時間から損益を分析する(2026/7/22)
ランダムウォークへの挑戦⑤ | Pythonで月別損益をグラフ化する(2026/7/5)
ランダムウォークへの挑戦④ |Pythonで「零号機」の基本成績を分析する(2026/6/11)
ランダムウォークへの挑戦③ | 挑戦のための準備(環境設定)(2026/5/26)
ランダムウォークへの挑戦➁ | 小目標3つ設定(2026/5/25)
ランダムウォークへの挑戦① | はじめに(2026/5/25)

コメント

タイトルとURLをコピーしました