TMA(Triangular Moving Average)は、通常の移動平均よりも滑らかなカーブを描き、トレンドの流れをより明確に捉えられるインジケーターです。
本記事では、TMAインジケーターの基本的な仕組みから、実際の計算ロジック、MT4への導入方法、活用戦略までを丁寧に解説します。
MQL4版のソースコードも掲載しているため、学習目的やカスタマイズにも最適です。
MT4でトレンド判断の精度を高めたい方や、自作インジケーターに挑戦したい方は、ぜひ最後までご覧ください。
👉すぐにTMAインジケーターをダウンロードしたい方はMT4マーケットからどうぞ!

- MT4を起動
- 画面下部にある「ターミナル」ウィンドウの**[マーケット]タブ**をクリック
- 右上の検索欄に「TMA classic」と入力して検索
- 対象インジケーターが表示されたら**[ダウンロード]ボタンをクリック**してインストール
インストール後は、
MT4のナビゲーターウィンドウ → インディケーター → マーケット内に「TMA Classic」が追加されます。
そこからチャートへドラッグ&ドロップすれば、すぐに使用可能です。
TMAとは?|三角移動平均インジケーターの基本知識

TMA(Triangular Moving Average:三角移動平均)は、価格データの変動をなめらかにするための移動平均インジケーターです。
単純移動平均(SMA)をさらに平滑化したもので、価格の短期的なノイズを取り除きつつ、トレンドの大まかな流れを把握することに適しています。
TMAは、まずSMAを計算し、そのSMAに対してもう一度移動平均をかけるという“二重の平滑化処理”を行うのが特徴です。このため、ラインはよりスムーズになり、チャート上では視覚的にも美しいカーブを描きます。
裁量トレードでも自動売買でも、トレンドの方向を見極めたい場面でTMAは有効に機能します。
TMAの特徴と他の移動平均との違い
TMAには、他の移動平均(SMAやEMA)と比べて以下のような明確な特徴があります。
種類 | 特徴 | 反応速度 | 滑らかさ | リペイント |
---|---|---|---|---|
SMA(単純移動平均) | 一定期間の平均 | 遅い | 普通 | なし |
EMA(指数移動平均) | 直近の価格に重みを置く | 速い | やや滑らか | なし |
TMA(三角移動平均) | 中央に重みを置く2段階平均 | やや遅い | 非常に滑らか | インジによってはあり |
TMAは滑らかさに優れており、トレンド方向を“より確実に見たい”という場合に重宝されます。一方で、反応が遅れることがあるため、短期的な逆張りには不向きなこともあります。
なお、一部のTMAインジケーターでは「リペイント(過去の値が後から変わる)」が発生するものもあるため、使用するファイルの性質には注意が必要です。
トレンド分析にTMAを使うメリット
TMAを使う最大のメリットは、価格のノイズを排除してトレンドの全体像をつかみやすくなることです。特に以下のようなトレードスタイルに適しています:
- スイングトレードやデイトレードで中期的な方向を把握したいとき
- サポレジ付近での反転判断にフィルターをかけたいとき
- 他のインジケーター(ボリンジャーバンドやRSI)と組み合わせて、だましを減らしたいとき
また、TMAライン自体をトリガーとするエントリーではなく、「TMAが上向きであれば買い目線」といったフィルターとして用いることで、優位性のある戦略構築が可能です。
TMAインジケーターの計算ロジック
TMA(Triangular Moving Average)の本質は、価格データを2段階で平均化することによって、チャート上に滑らかなラインを描く点にあります。
他の移動平均と違い、価格の「中心部分」に重みを持たせることで、短期的な値動きのブレ(ノイズ)を排除し、トレンドの方向性だけを視覚的に捉える設計になっています。
この章では、TMAの計算方法を初心者向けにわかりやすく解説し、具体的な数値例を用いて理解を深めていきます。
TMAの仕組みと計算式(初心者向けに解説)
TMAの計算は、以下の2ステップで行われます:
① 単純移動平均(SMA)を計算
指定された期間の価格の平均を出す、もっとも基本的な移動平均です。
期間 n のSMAの計算式は以下の通りです:
[math]SMA_t = \frac{1}{n} \sum_{i=0}^{n-1} P_{t-i}[/math]
ここで、
- P_t は時点 t の価格
- n は平均を取る期間
② SMAに対して、もう一度SMAを計算(SMAのSMA)
この2回目の平均化によって、より滑らかなラインが得られます。
2段階目のTMAは次の式で表されます:
[math]TMA_t = \frac{1}{n} \sum_{i=0}^{n-1} SMA_{t-i}[/math]
つまり、**「価格の平均の平均」**を取ることで、TMAはノイズを減らし、視認性の高いトレンドラインを形成するのです。
具体的な数値例で理解するTMAの算出方法
以下に、TMAの計算がどのように行われるのか、**期間3(n=3)**のケースで具体的に解説します。
📌 ステップ1:価格データの準備
仮に次の5つの終値データがあったとします:
時点 | 終値(価格) |
---|---|
t | 100 |
t-1 | 101 |
t-2 | 102 |
t-3 | 103 |
t-4 | 104 |
📌 ステップ2:SMAを計算
まずは直近3本分ずつの価格でSMAを3つ出します。
- SMAₜ = (100 + 101 + 102) / 3 = 101.0
- SMAₜ₋₁ = (101 + 102 + 103) / 3 = 102.0
- SMAₜ₋₂ = (102 + 103 + 104) / 3 = 103.0
📌 ステップ3:TMAを計算(SMAの平均)
次に、得られたSMAを再度平均してTMAを計算します。
[math]TMA_t = (101.0 + 102.0 + 103.0) / 3 = 102.0[/math]
このように、価格の一部ではなく「中心寄りの価格変動」に重みがかかるため、TMAラインは急激に変化せず、スムーズにトレンドを描写してくれるのです。
この計算手順を理解しておくことで、TMAインジケーターをただの「線」として見るのではなく、相場の“本質的な流れ”を抽出するツールとして活用できるようになります。
TMAインジケーターのダウンロードと導入手順
TMA Classicは、MetaTrader 4(MT4)内のマーケットから無料でダウンロードできるインジケーターです。
以下の手順で簡単に導入でき、インストール後すぐにチャートへ適用可能です。
✅ ダウンロード手順(MT4ターミナル)
- MT4を起動
- 画面下の「ターミナル」ウィンドウから、[マーケット]タブを開きます
- 右上の検索欄に「TMA classic」と入力し、エンターキーを押します
- 該当のインジケーターが表示されたら、[ダウンロード]ボタンをクリックします

✅ 導入後の確認と使用方法
インストールが完了すると、インジケーターは次の場所に追加されます:
ナビゲーターウィンドウ → インディケーター → マーケット
ここから「TMA Classic」をチャートにドラッグ&ドロップすれば、すぐに利用できます。

このように、MQL5アカウントにログインした状態であれば、数クリックでインジケーターを導入可能です。
MT4初心者の方でも迷わず使い始められますので、まずはお試しください。
TMAの使い方とチャート上での見方
TMA(Triangular Moving Average)は、価格の方向性をなめらかなカーブで示すことにより、相場のトレンドを視覚的にわかりやすくするインジケーターです。
ここでは、TMAラインの読み取り方やトレードへの応用法、さらには他インジケーターとの併用戦略について解説します。
TMAラインの基本的な読み方
TMAラインは、以下のような視点で読み取るのが基本です:
TMAの傾き | 意味 |
---|---|
緩やかに上昇 | 上昇トレンドの可能性が高い |
緩やかに下降 | 下降トレンドの可能性が高い |
横ばいに近い | レンジ相場(方向感がない) |



エントリー/エグジットへの応用例
TMAラインは、以下のような場面でエントリーやエグジットの判断材料として活用できます。
✅ 応用1:トレンドフィルターとして使う
- TMAが上向き:買いポジションのみを検討
- TMAが下向き:売りポジションのみを検討
→ トレードの方向性を限定することで、無駄な逆張りエントリーを防げます。
✅ 応用2:押し目・戻り売りの判断に使う
- トレンド方向に対し、ローソク足がTMAから離れたタイミングを狙う
- ローソク足がTMAに戻ってきたところでの再エントリーも有効
✅ 応用3:TMAクロス戦略(応用編)
- 短期TMAと長期TMAを2本表示し、ゴールデンクロス/デッドクロスで判断する手法もあります。


他インジケーターとの併用戦略
TMAは単体でも強力ですが、他のテクニカル指標と組み合わせることで精度の高いトレード戦略を構築できます。
📌 ボリンジャーバンド × TMA
- TMAでトレンドを判断
- ボリンジャーバンドの±2σで逆張り or 順張りポイントを探す
→ トレンド+ボラティリティの視点を加えることで、判断の確度が上がります。
📌 RSI × TMA
- RSIが70超え or 30割れのタイミングで
- TMAの傾きと一致すればエントリーに信頼性
📌 平均足 × TMA
- TMAで方向性を把握
- 平均足が同方向に連続しているときにエントリー
→ トレンドの“持続性”を確認するための組み合わせとして有効です。



このようにTMAは、価格の方向性を滑らかに可視化できるインジケーターとして、裁量トレーダーにとって非常に心強いツールです。
次章では、TMAインジケーターのダウンロード手順や導入方法を詳しく紹介します。
TMAと他の移動平均(SMA・EMA・LWMAなど)との比較
移動平均線には複数の種類があり、それぞれに特徴と用途があります。TMAは「滑らかさ」に特化したタイプで、他の移動平均と比較することで、どんな場面に適しているかがより明確になります。
TMAとSMA・EMAの違い
以下は、代表的な移動平均の種類と、それぞれの特徴をまとめた比較表です。
種類 | 計算方法 | 特徴 | メリット | デメリット |
---|---|---|---|---|
SMA(単純移動平均) | 一定期間の価格を単純平均 | 平均的で中立的 | ノイズに比較的強い/リペイントなし | 反応が遅め |
EMA(指数移動平均) | 直近価格に指数的重みを加算 | 敏感に価格に反応 | タイミング重視のトレード向き | 偽シグナルが増えやすい |
LWMA(加重移動平均) | 直近価格に線形の重みを加算 | EMAよりさらに素早い | スキャルピングや短期判断に最適 | ノイズに弱く不安定 |
SMMA(平滑移動平均) | 全過去データを加味した平均 | 超なめらかで長期向き | ダマシを大幅に減らせる | 反応が最も遅い/重たい印象も |
TMA(三角移動平均) | SMAのSMA(二重平均) | 中心価格を重視した滑らかさ | トレンドの流れを滑らかに表示 | リペイントあり/反応が遅い |

🔍 特性マトリクス:反応速度と滑らかさの位置づけ
滑らかさの強さ(左ほど滑らか) | SMMA → TMA → SMA → EMA → LWMA |
---|
- 短期トレードやエントリーのタイミング把握には EMA / LWMA が向いています。
- 中長期のトレンド把握や方向性フィルターには TMA / SMMA のような滑らかな平均が効果的です。
TMAが適している相場と苦手な相場
TMAは、反応が遅い代わりにノイズが少なく、トレンドの「大まかな方向性」を把握するのに優れています。そのため、以下のような相場で効果を発揮します。
✅ TMAが適している相場
- 中期~長期のトレンド相場
→ 緩やかに上昇・下降している相場で、全体の方向感を捉えるのに最適です。 - 押し目・戻り売りの判断が求められる局面
→ エントリータイミングではなく、方向性のフィルターとして使うと効果的です。
🚫 TMAが苦手な相場
- 急激なトレンド転換が起きやすい相場
→ 反応が遅れるため、シグナルが出る頃にはすでに遅れていることも。 - スキャルピングや超短期売買
→ 細かいタイミングでのエントリーには不向きです。
MQL4ソースコードと技術解説(学習者向け)
TMAインジケーターのMQL4コードは、比較的シンプルな構成ですが、インジケーター作成の基本構造を学ぶ教材としても最適です。
この章では、コード全体の構成や各関数の役割、チャート描画の仕組みをわかりやすく解説します。
プログラムの全体構成とパラメータ解説
まず、TMAインジケーターの主な構成要素は以下の通りです:
- プロパティ設定(#property)
- 入力パラメータの宣言(input)
- バッファの定義(indicator_buffers)
- 初期化関数
OnInit()
- 描画・計算処理関数
OnCalculate()
🔧 入力パラメータ
input int Period = 14; // TMAの計算期間
input color LineColor = clrMagenta; // 描画する線の色
Period
はTMAの計算に使用するローソク足の本数(期間)を指定します。LineColor
はインジケーターラインの色指定で、チャート上の視認性を調整可能です。
これらのパラメータは、MT4のプロパティウィンドウから簡単に変更できます。
OnInit/OnCalculate関数の役割と処理の流れ
🧩 OnInit()
:インジケーターの初期化
int OnInit()
{
SetIndexBuffer(0, TmaBuffer);
IndicatorShortName("TMA(" + IntegerToString(Period) + ")");
SetIndexLabel(0, "TMA");
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2, LineColor);
SetIndexDrawBegin(0, Period - 1);
IndicatorDigits(Digits);
return(INIT_SUCCEEDED);
}
SetIndexBuffer
:TmaBuffer[] に計算結果を格納するよう指定。IndicatorShortName
:チャート左上に表示されるインジケーター名を設定。SetIndexStyle
:線の種類、太さ、色などを設定。SetIndexDrawBegin
:指定期間より前は描画しないように設定。
→ 主に描画準備と表示設定を行うのが OnInit()
の役割です。
⚙️ OnCalculate()
:インジケーターのメイン処理
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
if (rates_total < Period) return(0);
int begin = (prev_calculated > 0) ? prev_calculated - 1 : 0;
for (int i = begin; i < rates_total; i++)
{
double sum = 0.0;
int count = 0;
for (int j = i; j >= i - Period + 1 && j >= 0; j--)
{
sum += close[j];
count++;
}
TmaBuffer[i] = sum / count;
}
return(rates_total);
}
rates_total
:利用可能なバーの総数prev_calculated
:前回処理したバー数(無駄な再計算を防ぐため)- 外側ループ(i):新しいバーのみを処理
- 内側ループ(j):TMA計算のための移動平均処理
TmaBuffer[i]
に平均を格納:描画用データが完成
→ この関数が実際のTMA計算処理とライン描画データの生成を担います。
描画バッファと表示設定の詳細
📦 インジケーターバッファの役割
double TmaBuffer[];
- インジケーターの計算結果をチャートに描画するための配列です。
SetIndexBuffer(0, TmaBuffer)
で「このバッファを0番目の描画ラインに使う」と明示しています。
🎨 表示設定と視認性調整
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2, LineColor);
DRAW_LINE
:折れ線グラフとして表示STYLE_SOLID
:実線スタイル2
:線の太さLineColor
:指定したカラーで描画
→ これらの設定によって、チャート上でTMAラインが視認性の高い形で表示されるようになります。
よくある質問(FAQ)
- TMAはリペイントしますか?
-
使用するTMAインジケーターによります。
TMAには「リペイントあり/なし」の2種類があります。一般的に、上下にバンドを表示するTMA(TMA Centered Bandsなど)はリペイントするものが多いです。
一方、本記事で紹介しているようなシンプルな1本線表示のTMAは、リペイントしない仕様になっています。
✅ 不安な場合は、チャート上で実際に時間を進めて確認するか、MQL4コード内でリペイント処理がないかをチェックすると安心です。
- TMAはどの時間足で使うのが効果的ですか?
-
中期以上の時間足(1時間足~日足)との相性が良いです。
TMAは平滑性が高く、短期的な値動きよりもトレンド全体の流れを捉えるのに向いています。そのため、以下のような時間足での使用がおすすめです:
- 1時間足(H1):デイトレードで方向性を確認するフィルターとして
- 4時間足(H4):スイングトレードのトレンド把握に
- 日足(D1):長期の流れを見てポジション戦略を立てる場合に有効
- TMAを使ったトレード戦略にはどんなものがありますか?
-
トレンドフィルター、押し目判断、他インジとの併用が定番です。
主な使い方は以下の3パターンです:
- トレンドフィルター:TMAが上昇していれば買い目線、下降なら売り目線でエントリー判断を限定する。
- 押し目・戻り売り判断:ローソク足がTMAから乖離したあと、再接近した地点でのエントリー。
- 他インジケーターと組み合わせ:RSIやボリンジャーバンドと併用し、シグナルの信頼性を強化。
- 他の移動平均と併用する場合、注意点はありますか?
-
複数の移動平均が似たような設定だと意味が薄れるため、
期間や種類を変える工夫が必要です。たとえば:
- TMA(期間14)+EMA(期間5)
→ EMAでエントリータイミング、TMAでトレンド方向を確認 - TMA(期間50)+SMA(期間20)
→ 短期のリズムと中期トレンドを分けて判断
- TMA(期間14)+EMA(期間5)
- インジケーターが表示されない場合はどうすればいいですか?
-
以下のポイントを確認してください:
.ex4
ファイルを 正しいフォルダ(MQL4 > Indicators)に入れているか- MT4を再起動しているか
- インジケーターの パラメータにエラーがないか(期間が0など)
- チャートに 対応する通貨ペアと時間足が表示されているか
それでも表示されない場合は、ターミナルの「エキスパート」や「ジャーナル」タブでエラー内容を確認しましょう。
まとめ|TMAで価格の流れをなめらかに可視化しよう
TMA(Triangular Moving Average)は、価格の平均をさらに平均化することで、ノイズを抑えた滑らかなトレンドラインを描画するインジケーターです。
SMAやEMAに比べて反応はやや遅いものの、トレンドの大まかな方向性を視覚的に捉えるのに非常に優れています。
この記事では、TMAの基本構造や計算方法、使い方、他の移動平均との違い、実践的な活用法までを詳しく解説しました。
✅ TMAの主なメリットまとめ
- トレンドの方向性がひと目でわかる滑らかなライン
- レンジ相場とトレンド相場の見極めに役立つ
- フィルターとしての利用で無駄なエントリーを減らせる
- MQL4ソースコード付きで学習・カスタマイズも可能
TMAは、裁量トレードでも自動売買でも活用できる汎用性の高いツールです。
MT4に導入することで、自分のトレード戦略の精度と再現性を一段引き上げるサポートとなるでしょう。
ぜひこの記事を参考に、TMAインジケーターをあなたのチャートにも取り入れてみてください。
この記事で紹介したインジケーターのように、取引効率を上げる無料ツールをお探しの方へ。
当サイトの無料EA一覧ページでは、実用性の高い自動売買ツールを多数紹介しています。
👉 無料EAを探す