移動平均には設定項目が3つあります——何を平均するか・どう平均するか・何本を平均するか。 入門書はこの3つを、だいたい同じ分量で説明します。 1つずつ分けて測ったところ、1つ目はコストの5分の1しか動かず、 2つ目に並んでいる4つのうち2つは同じ式でした。 そして 25/75 のゴールデンクロスだけが信頼区間0をまたぎませんでしたが、 それは8通り試したうちの1つです。
1. 3つのつまみは、同じ重さではありませんでした。 適用価格を5通り変えたときの開きは 0.36 pip、計算方法を4通りで 3.91 pip、期間を8通りで 4.38 pip。 1回のコストは 2.00 pip です。
2. MT5のメニューに、同じものが2回並んでいます。 SMMA(n) = EMA(2n−1)。10通貨ペア・6年ぶんの終値で計算して、差は 0.000000000000 でした。 「どちらを使うべきか」という記事が書かれている2つが、同じ式です。
3. 唯一の「当たり」は、試した回数で説明がつきました。 25/75 の区間は [+0.063, +3.118] で0をまたぎません。しかし8通り試しています。 8回のうち少なくとも1回そうなる確率は 33.7%、期待件数は 0.4件。実測は1件。 試した回数で基準を厳しくすると、8通りすべてが0をまたぎました。
移動平均の式は1行です。直近n本の価格を足して、nで割る。 しかしその1行にも、選択が3つ隠れています。
そこで、一度に1つだけ動かしました。 基準は 25/75 の単純移動平均・終値・24本保有。10通貨ペア・1時間足・2020年〜2025年です。
1つ目が動かない理由は、測れば分かります。適用価格が終値とどれだけ違うかを、 1本ごとと25本の平均にした後で比べました。
| 適用価格 | 1本ごとの差 | 25本平均にした後 |
|---|---|---|
| 始値 | 5.80 pip | 1.44 pip |
| 中値 | 3.40 pip | 0.80 pip |
| 代表値 | 2.27 pip | 0.53 pip |
| 加重終値 | 1.70 pip | 0.40 pip |
当たり前のことです。平均は、差を消すための道具だからです。 その道具に何を入れるかで結果が大きく変わるなら、平均が効いていないことになります。
「終値より代表値のほうが良い」という助言は、仮に正しかったとしても、 あなたの損益をほとんど変えません。5通りの区間は、すべて重なっています。
2つ目のつまみ——計算方法——は、大きく動きました。同じ 25/75 のクロスが、 SMA で +1.5939 pip、SMMA で −2.3137 pip。符号まで変わります。
ここで、表を作りながら気づいたことがあります。
Wilder の平滑(SMMA)は、前の値に (n−1)/n を掛けて、新しい値を 1/n だけ足します。 EMA は、前の値に 1−α を掛けて、新しい値を α だけ足します。 α = 1/n と置けば、同じ漸化式です。
EMA の期間表記との関係は α = 2/(span+1) なので、span = 2n − 1。つまり——
SMMA(n) = EMA(2n−1)。 10通貨ペア・6年ぶんの終値で両方を計算して差を取ると、最大の差が 0.000000000000。 丸め誤差すら出ません。MT5のメニューには、別々の名前で並んでいます。
同じ式なら、なぜ表の中で成績が違ったのか。期間の目盛りが違うからです。 SMMA(25) は EMA(49) と同じものであって、EMA(25) ではありません。
だとすれば、4通りの差は「計算方法の差」ではなく「実質的な長さの差」かもしれません。 遅れが SMA 25/75 と同じになるように期間を選び直して、回し直しました。
4通りの開きは 3.9076 pip から 1.8274 pip へ縮みました。 半分以上が、遅れの差で説明できたことになります。 そして SMMA 13/38 の行は、EMA 25/75 の行と取引数まで一致しました。同じものだからです。
第4巻(RSI)で「RSIが生の引き算に負けるのは平滑の遅れのせいだろう」と書き、 「ただしこれは説明であって、検証ではありません」と断りました。 ここでその検証をしたことになります。遅れは実際に効いていました。 ただし半分は残りました。残った差は、交差の回数——LWMA 7,191回 対 SMMA 2,766回——に対応します。 敏感な平滑は線が細かく震え、震えれば交差が増え、交差が増えればコストを払う回数が増えます。
3つ目のつまみ——期間——が、いちばん大きく動きました。 短期と長期の比を 1:3 に固定し、短期を 3・5・9・14・25・50・100・200 と変えて回しました。
0をまたがなかったのは、25/75 の1行だけです。 このシリーズで、教科書どおりの使い方が2つ目の関門を通ったのは初めてでした。
ここで手を止めます。8回検定して1回だけ「当たり」が出るのは、珍しいことでしょうか。
1回あたり5%で誤って「当たり」が出るとすると、8回のうち少なくとも1回そうなる確率は 33.7%。 3回に1回は起きます。期待される件数は 0.4件で、実測は1件でした。
第2章で「このシリーズで初めて2つ目の関門を通った」と書きました。取り消します。 正確には、通ったかどうかを、この検証は判定できませんでした。
第3巻で結果による選別を扱いました。 ルール自体はリアルタイムで実行できるのに、結果として良かった取引だけを後から抜き出して数えると、別の本のように見える、という話です。
ここで起きているのは、その兄弟——設定による選別です。 やっていることは同じで、たくさん並べて、良かったものを持ち帰る。 違うのは、後者が悪いことだと思われていないことです。むしろパラメータ最適化と呼ばれ、丁寧な仕事だとされています。 最適化とは、当たりくじを引くまで引き直すことです。引いた回数を言わなければ、その1枚は特別に見えます。
念のため、時期でも割りました。IS(最初の80%)が +1.5911 pip、OOS(未使用の20%)が +1.6053 pip。 ほとんど同じです。第4巻のように「最後の20%が引っ張り上げていた」形にはなっていません。
正直に書けば、ここは第4巻よりずっと素直な結果でした。 時期で割っても壊れませんでした。壊したのは、試した回数のほうです。
最後に、第1巻から使っている増分検定をかけました。 移動平均から取り出せる量(終値とMAの乖離/MAの傾き)を、 直近25本の騰落率——指標ですらない、ただの引き算——と比べます。
| 組み合わせ | 順位相関 | 何を揃えて、何を見るか | 増分 |
|---|---|---|---|
| 乖離 と 騰落率 | 0.840 | 騰落率を揃えて、乖離を見る | +0.0244 |
| 傾き と 騰落率 | 0.940 | 騰落率を揃えて、傾きを見る | −0.0254 |
| 乖離 と 傾き | 0.729 | 傾きを揃えて、騰落率を見る | +0.0028 |
MAの傾きと、直近25本の騰落率の順位相関が 0.940。 考えてみれば当たり前です。25本平均が上を向いているというのは、 新しく入った値が、抜けていった値より大きいということで、 それは「最近上がった」とほぼ同じことを言っています。
増分はどの向きでも 0.03 pip 未満。コストは 2.00 pip なので、桁が2つ違います。 第3巻の %K、 第4巻の RSI と、同じ場所に着きました。
検証に使ったMT5のソースコードを全文公開しています。登録もメールアドレスも要りません。
InpShowLag を有効にすると、傾き一定の直線を入れて図2の遅れをその場で測ります。
InpPeriodMap で8通りの期間を一度に回し、InpCountTrials が
何通り試したかを数えて、その回数で基準を厳しくして測り直します。
この2つは、必ずセットで回してください。
地図だけ見て「1つ当たった」で終わるのが、この巻の落とし穴そのものだからです
(そのため InpCountTrials は既定で有効にしてあります)。
この記事には結末を載せました。書籍には手続きを書いています。 重複しないよう、記事に入れなかったものを挙げておきます。
記事だけで完結して構いません。コードは本を買わなくても使えます。
「SMMA と EMA が同じ式だった」に気づいたのは、遅れを測ろうとしたときでした。 こういう途中の気づきは、記事にする前にこちらへ出しています。
訂正が出たときも、まずこの2つで告知しています。 第6巻はADXを予定しています——向きではなく「強さ」を測ると説明される、これまでと位置づけが違う指標です。
検証条件: 対象=10通貨ペア(AUDJPY/AUDUSD/EURJPY/EURUSD/GBPJPY/GBPUSD/NZDJPY/NZDUSD/USDCAD/USDJPY)/ 期間=2020.01.01–2025.12.31/1時間足・373,562本/手仕舞い一律24本後/ 売買は「短期MAが長期MAを上抜けたら買い、下抜けたら売り」/ コスト=同期間の実測スプレッド+ECN往復手数料1.0 pip の中央値 2.00 pip。 信頼区間はブロック・ブートストラップ(通貨ペア×年月・seed固定・B=4000)で算出。 多重検定の補正はボンフェローニ法(α=0.05/8)によります。 遅れは傾き一定の直線に対する応答で測定し、理論値(重みの重心)と一致することを確認しています。 掲載した数値はすべて過去データに対する集計であり、フォワードテスト・実口座運用の結果ではありません。
免責: 本ページは検証プロセスと棄却記録の開示を目的とした研究ノートです。投資助言ではありません。 特定の金融商品・取引業者の利用を推奨するものではありません。 バックテスト結果は過去データに基づくものであり、将来の利益を保証するものではありません。FX取引には元本割れのリスクがあります。 本記事の結論は検証した範囲に限られ、移動平均に予測能力が存在しないことを示すものではありません。 とくに 25/75 については、効かないことが分かったのではなく、8通り試した中の1つでは判定できなかったという結果です。 図表はすべて実測データからPythonで再描画したものであり、生成AIによる作画は含みません。