【移植#10】AllAverages v2.5 — 21種の移動平均を詰め込んだ名作をMT5で¶

この記事の3行まとめ
- 2009年に公開されたMT4界隈の伝説的インジケータ「AllAverages_v2.5」の全ロジックをMQL5に完全移植しました。
- 単純移動平均(SMA)から、T3、Hull Moving Average (HMA)、Jurik近似(JSmooth)まで、全21種類のMA網羅。
- 重い外部参照などは使わず、インジケータ内部で独立して全計算を高速処理するため、EAのフィルター用としても超優秀です。
失われた名作?21種類のMA詰め合わせ¶
MetaTrader 4(MT4)が全盛を誇った2009年頃、フォーラム等で爆発的に人気を集めた名作マルチインジケータが AllAverages_v2.5.mq4 です。 開発者たちがこぞって最先端の平滑化アルゴリズムをMQL4コードにベタ書きし、それらをスイッチ一つで切り替えられるようにした「移動平均の玉手箱」でした。
MT5時代になり、移動平均といえば標準の iMA 関数(SMA, EMA, SMMA, LWMAの4種)に頼りがちですが、実は金融工学の世界には「遅延(ラグ)を極限まで減らしつつ、滑らかさを維持する」ための高度なMAが多数存在します。
今回はそのロマン溢れる21種類のアルゴリズムを紐解き、MT5で高速に動作するようにフルスクラッチで計算式を移植しました。
収録されている21種類のMA一覧¶
プロパティの MA Method から、以下の21種類をプルダウンで瞬時に切り替えられます。
- SMA - Simple Moving Average(単純移動平均)
- EMA - Exponential Moving Average(指数平滑移動平均)
- Wilder - Wilder Exponential Moving Average(ワイルダーの移動平均。RSIの計算などで使われる)
- LWMA - Linear Weighted Moving Average(線形加重移動平均)
- SineWMA - Sine Weighted Moving Average(サイン波の重み付けを用いたMA)
- TriMA - Triangular Moving Average(三角移動平均。LWMAをさらに平滑化したもの)
- LSMA - Least Square Moving Average(最小二乗法移動平均。線形回帰線の終点=EPMAとも呼ばれる)
- SMMA - Smoothed Moving Average(平滑移動平均)
- HMA - Hull Moving Average(Alan Hull氏考案。ラグが非常に少なく滑らか)
- ZeroLagEMA - Zero-Lag Exponential Moving Average(遅延を数学的に打ち消したEMA)
- DEMA - Double Exponential Moving Average(Patrick Mulloy氏考案の二重指数平滑化)
- T3 - T3 by T.Tillson(ティルソン氏のT3。Volume Factorパラメーターで滑らかさを調整可能)
- ITrend - Instantaneous Trendline(J.Ehlers氏考案の瞬時トレンドライン)
- Median - Moving Median(移動中央値。ノイズスパイクに極めて強い)
- GeoMean - Geometric Mean(幾何平均)
- REMA - Regularized EMA(Chris Satchwell氏考案の正規化EMA)
- ILRS - Integral of Linear Regression Slope(線形回帰スロープの積分)
- IE/2 - Combination of LSMA and ILRS(LSMAとILRSの中間値)
- TriMAgen - Triangular Moving Average generalized(J.Ehlers氏によるTriMAの一般化)
- VWMA - Volume Weighted Moving Average(出来高加重移動平均。※Tick Volumeを使用)
- JSmooth - Smoothing by Mark Jurik(Jurik Researchの強力な平滑化アルゴリズムのオープンソース近似版)
ピックアップ:特におすすめのMA¶
数ある中でも、以下の3つは現代のトレードでも非常に強力な武器になります。
- No.8 HMA (Hull Moving Average)
- WMA(加重移動平均)を組み合わせることで、「価格への追従性」と「曲線の滑らかさ」を両立させた傑作です。トレンドフォローの王道フィルターとして使えます。
- No.11 T3
- 指定したVolume Factor(デフォルト0.7等)に応じて、非常になめらかな曲線を描きます。ダマシを徹底的に排除したい場合の長期トレンド認識に最適です。
- No.20 JSmooth (Jurik Smoothing近似)
- 機関投資家界隈で有名なJurikアルゴリズムの近似版です。相場のノイズ(ヒゲ)を驚くほど無視しつつ、トレンドの転換点ではスパッと向きを変える最高峰の平滑化が体験できます。
インジケータのダウンロード¶
以下からインジケータのソースコード(MQ5)をダウンロードし、MT5の Indicators フォルダに配置してコンパイルしてください。
10_AllAverages_v2_5.mq5 をダウンロード
パラメータ設定¶
MA Method: 上記0〜20番のMAタイプを選択します。MA Period: 計算期間(標準14)。Applied Price: 適用価格(Close, Open, High, Low, Median, Typical, Weighted等)。Volume Factor (for T3): T3を選択した時の滑らかさ係数(標準0.7。大きくするほどMAが滑らかになるが遅延が増える)。Lambda (for REMA): REMAを選択した時の正規化係数(標準0.5)。Phase (for JSmooth): JSmoothを選択した時の位相パラメータ(-100〜+100の範囲。0が標準)。
EA開発者へのメッセージ¶
このコード最大の価値は、「MT5標準の関数に頼らず、これら21種類の高度な計算式を配列ループベースで実装している」点にあります。 もしご自身でEAを作られる際、「ただのEMAじゃなくて、JSmoothを使って滑らかにしたいな」と思ったら、このコードの中の該当caseブロックの計算式をそのままEA内に移植コピペするだけで、外部インジケータ呼び出し(iCustom)によるオーバーヘッドを回避した超高速なバックテスト対応EAを作ることができます。ぜひ解析してみてください!