テクニカルEA化

移動平均線の「傾き」をEAにどう理解させるか

チャートの見た目の「角度」はEAには伝わらない。移動平均線の「傾き」を使ってトレンドの有無と強さを数値化し、EAのフィルターとして組み込む方法を整理する。

裁量トレードの解説動画を見ていると、よくこんな言葉が出てくる。

「移動平均線が上を向いてきましたね。角度も急なので、強いトレンドです」

人間の目には、チャートに引かれた線の「角度」がはっきりと見える。上を向いているか、横ばいか、下を向いているか。

しかし、EAのコードを書こうとすると手が止まる。
「上を向いている」って、プログラムでどう書けばいいんだ?

「現在価格が移動平均線より上にある」ことと、「移動平均線が上を向いている(傾きがプラス)」ことは違う。
価格が急落して移動平均線を下抜けても、移動平均線自体はまだ上を向いていることはよくある。

EAに「傾き(トレンドの勢い)」を認識させるには、視覚的な角度ではなく、純粋な「数値の差分」に変換する必要がある。

「角度」はチャートの拡大縮小で変わる嘘の数字

初心者がやりがちな勘違いがある。「移動平均線の角度(何度か)を計算しよう」としてしまうことだ。

これは無意味だ。
MT5のチャートの縦軸(価格)と横軸(時間)の縮尺を変えれば、移動平均線の「見た目の角度」は30度にも60度にも変わる。

EAに「角度が45度以上なら」と指示することはできない。
必要なのは、価格ベースの「差分(pips)」だ。

傾き = 「今のMA」 - 「N本前のMA」

EAにおける「傾き」の計算は非常にシンプルだ。

傾き = 現在の移動平均線の値(MA[0]) - N本前の移動平均線の値(MA[N])

たとえば、「現在の1時間足のSMA20」が150.50で、「3本前のSMA20」が150.20だったとする。
差分は +30pips(0.30円)。

この「+30pips」という数字こそが、EAにとっての「上向きの傾き」だ。
この値がプラスなら上向き、マイナスなら下向き、ゼロ近辺なら横ばい(レンジ)と判定できる。

Nの取り方(どれくらい前の値と比較するか)

「N本前」をいくつにするかが、EAの性格を決める。

一番感度が高いが、ノイズに弱すぎる。少し価格が上下しただけで「上向き」「下向き」の判定がコロコロ変わり、フィルターとして機能しにくい。

適度に滑らかになり、ノイズを吸収しつつトレンドの初動にも反応できる。私がよく検証で使うのはこのあたりだ。

大きなトレンドの波は掴めるが、反応が遅れる。

横ばい(レンジ)をどう定義するか

傾きの計算ができたら、次に行うのが「閾値(しきいち)」の設定だ。

差分が「+0.1pips」でも計算上はプラス(上向き)だが、実質的には横ばいだ。ここで「0.1pipsでもプラスなら買い」とすると、レンジ相場でダマシに引っかかる。

「差分が +5pips以上なら上昇トレンド、-5pips以下なら下降トレンド、それ以外(-4.9〜+4.9)は横ばい(レンジ)」

このように閾値を設けることで、移動平均線の傾きを強力な「トレンド/レンジ判定フィルター」として使えるようになる。

この記事のメモ

「見た目を数値に翻訳する」
これが、裁量手法をEA化する時の最大の壁であり、一番面白いところでもある。

人間の目は優秀すぎるから、無意識のうちに「緩やかな上向き」とか「急角度」とかを判別してしまう。でもそれをそのままEAにやらせることはできない。

「傾き」を差分(pips)で計算し、閾値を設ける。
これを実装できるようになると、移動平均線の使い方が「ただのライン」から「相場の勢いを測るセンサー」に変わる。

チェックリスト

FAQ

Q: 閾値(横ばいと判定するpips数)はどう決めればいいですか?
固定のpips数にすると、相場のボラティリティが変わった時に機能しなくなります。高度なEAでは、閾値自体を「ATRのX%」のように動的に設定して、相場環境に追従させる設計もあります。

Q: SMAとEMA、傾きを測るならどちらがいいですか?
トレンドの勢い(直近の変化)を早く捉えたいならEMA、大きな方向性をノイズを排して見たいならSMAが適しています。目的に応じて使い分けてください。

免責

本記事は個人の検証メモであり、投資助言ではありません。計算ロジックの実装結果は相場環境によって異なります。