MACDの使い方として入門書が必ず挙げる3つ——ゴールデンクロス/デッドクロス、ゼロラインクロス、 ヒストグラム——を、1,256通りの設定で総当たりしました。 発生した売買は 478万6528回。1本ずつ実測スプレッドと手数料を引きながら最後まで回しています。 結論を先に置きます。コストを引く前の時点で、すでにコストに届いていませんでした。
1. 3つの使い方はいずれも、コスト控除前でコイン投げと区別がつきませんでした。 95%信頼区間は、独立の仮定を外した数え方でも0をまたぎます。
2. ヒストグラムが「よく動く時」を当てていたのは事実です。 ただしATRを揃えると、その説明力は 0.984(1.00=差なし)まで落ちました。 当てていたのはヒストグラムではなく、ATRが既に持っていた情報です。
3. 「確認できなかった」であって「存在しない」ではありません。 検証したのは2020〜2025年・10通貨ペア・機械的に判定できるルールだけです。 裁量の使い方や、ここで試していない組み合わせについては何も言えません。
まず条件を全部開示します。読んだ人が同じことをやり直せなければ、検証記録の意味がありません。
| 期間 | 2020.01.01 〜 2025.12.31(6年) |
|---|---|
| 通貨ペア | AUDJPY / AUDUSD / EURJPY / EURUSD / GBPJPY / GBPUSD / NZDJPY / NZDUSD / USDCAD / USDJPY(10ペア) |
| 時間足 | M15 / M30 / H1 / H4 |
| 設定数 | 単独条件 1,256 通り(取引が1回も発生しなかった試行は除外) |
| 発生した売買 | 4,786,528 回 |
| 手仕舞い | 一律24本後(判断の裁量を入れないため) |
| コスト | 2.00 pip(往復・実測スプレッド+ECN手数料1.0 pip の中央値) |
コストの 2.00 pip は仮定値ではありません。同じ期間の実測スプレッドに、ECN口座の往復手数料 1.0 pip を足した中央値です。 時間帯によって実際のコストは動きますので、これは代表値として置いた1つの数字です。
本シリーズで使う言い方です。各設定の「1取引あたりのグロス損益」を並べたときの、中央値の絶対値を指します。 情報理論の「情報量」とは無関係で、混同を避けるために別の語を当てています。 コストを引く前の値であることが重要です。ここで勝てていなければ、コストを引いた後で勝てる道はありません。
設定を1つずつ点として、1取引あたりのグロス損益を並べます。
中央値がマイナスである点に注意してください。 コストが仮に0だったとしても、この集計では収支が残りません。 もっとも寛大に読んで「この 0.0365 pip の大きさをすべてプラス側に使えたとしたら」と仮定しても、 許容できる往復コストの上限が 0.0365 pip になるだけです。
少なくとも一般的な個人向けFXの取引環境では、往復 0.0365 pip は現実的な水準ではありません。 そしてこの比較に、MACDの良し悪しは一切関係していません。 比べたのは「向きの取り分」と「コスト」の大きさだけです。
| 使い方 | 設定数 | グロスがプラスだった割合 | 1取引あたりグロス |
|---|---|---|---|
| ① ゴールデンクロス/デッドクロス | 255 | 43.5% | −0.054 pip |
| ② ゼロラインクロス | 388 | 45.9% | −0.023 pip |
| ③ ヒストグラム絡み | 613 | 48.5% | −0.043 pip |
| 合計 | 1,256 | 46.7% | −0.0365 pip |
①と②は別物に見えますが、実は同じ1つの流れを、早い順に2つの地点で切り取ったものです。 ②が起きるときには①はすでに起きています。早く切れば速いが外れやすく、遅く切れば確からしいが動き終わっている。 どちらを選んでも、その裏返しを引き受けることになります。
①のゴールデンクロス/デッドクロスだけを取り出すと、38,706回の取引で平均は +0.2122 pip です。プラスです。 ならば当たっていたのでしょうか——ここで見るべきは平均ではなく、区間の端です。
ただし、素直に計算した区間には落とし穴があります。 取引が互いに独立であると仮定しているからです。実際には独立ではありません。 荒れている時期の取引はまとめて荒れ、24本持つので近接した取引は同じ値動きを分け合います。 独立でないものを独立として数えると、区間は本来より狭く出ます。
区間が0をまたぐというのは、「勝っている」とも「負けている」とも言えないという意味です。 38,706回も取引しておきながら、です。理由は単純で、1取引の振れ幅が 66 pip もあるところで 0.21 pip の差を確かめようとしても、ノイズに埋もれてしまうからです。
ここからが、この検証でいちばん面白かった部分です。
MACDヒストグラムの絶対値が大きいとき、その後24本の値幅は確かに大きくなります。 これは事実で、実測でもはっきり出ます。「勢いを測れている」と言いたくなる結果です。
しかし、ここでもっと単純なものを隣に置いてみます。ATR——ただ値幅を測って平均しただけの指標です。 ATRを10段に分け、その各段の中でヒストグラムの大小を比べます。 ATRが同じくらいの場面だけを集めて、そこでヒストグラムが差を生むかを見るわけです。
MACDヒストグラムが「よく動く時」を当てていたのは本当です。 ただし当てていたのはヒストグラムではなく、ATRが既に持っていた情報でした。 ヒストグラムは終値→EMA→差→平均→差と4段の加工を重ねた量ですが、 その4段を通して残ったものは、1段だけのATRとほぼ同じでした。
しかもこれは値幅(どれくらい動くか)の話であって、向き(どちらに動くか)の話ではありません。 値幅が読めても、向きが読めなければ売買にはなりません。02で見たとおり、向きの取り分はコストの55分の1でした。
ここまでの数字を、私を信じずに確かめてほしいと思っています。 検証に使ったMT5のソースコードを全文公開しています。登録もメールアドレスも要りません。
InpReportIncrement を有効にすれば、05の増分検定もそのまま走ります。
ただし本記事と同じ数字は出ません。ここに載せたのは10通貨ペアをまとめ、ペアごとに順位化した値で、
キットは1ペアぶんを回すからです。確かめてほしいのは数字の一致ではなく、手続きのほうです。
この記事には結果を載せました。書籍には手続きを書いています。 重複しないよう、記事に入れなかったものを正直に挙げておきます。
記事だけで完結して構いません。コードは本を買わなくても使えます。
検証条件: 対象=10通貨ペア(AUDJPY/AUDUSD/EURJPY/EURUSD/GBPJPY/GBPUSD/NZDJPY/NZDUSD/USDCAD/USDJPY)/ 期間=2020.01.01–2025.12.31/時間足=M15・M30・H1・H4/単独条件1,256設定(取引0件の試行は除外)/ 手仕舞い=一律24本後/コスト=同期間の実測スプレッド+ECN往復手数料1.0 pip の中央値 2.00 pip。 信頼区間はブロック・ブートストラップおよびクラスター・ブートストラップ(seed固定・B=4000)で算出。 増分検定の被説明変数は次24本の実現レンジ(各通貨ペアの中央値=1.00に正規化)、ATRはWilder平滑14期間。 掲載した数値はすべて過去データに対する集計であり、フォワードテスト・実口座運用の結果ではありません。
免責: 本ページは検証プロセスと棄却記録の開示を目的とした研究ノートです。投資助言ではありません。 特定の金融商品・取引業者の利用を推奨するものではありません。 バックテスト結果は過去データに基づくものであり、将来の利益を保証するものではありません。FX取引には元本割れのリスクがあります。 本記事の結論は検証した範囲に限られ、MACDに予測能力が存在しないことを示すものではありません。 図表はすべて実測データからPythonで再描画したものであり、生成AIによる作画は含みません。