ATRの数値を役立てるには、何を測っているのかを理解する必要があります。プラットフォーム上では小さく見える数値が、pipsに換算すると無視できない値幅になることもあります。また、ATRの上昇は価格の上昇時にも下落時にも起こります。このガイドでは、表示された数値を売買ルールに組み込む前に、再現可能な測定値として理解します。
扱うのはATRの成り立ちと読み方、つまりTrue Range、平均の取り方、単位、観測時点です。エントリー手法や、どの場面にも使える損切り倍率を示すものではありません。価格変化の方向はモメンタム指標のガイドで扱います。ATRはBUYかSELLかを選ばず、値動きの大きさをまとめる指標です。
1. ボラティリティを方向ではなく大きさとして読む
Average True Range(ATR)は、足ごとに求めたTrue Rangeの平均です。原資産のレートと同じ価格単位で表されます。数値自体がパーセント、pips数、取引高、あるいはリターンの標準偏差を年率換算した値になっているわけではありません。
ATRが高いほど、選択したデータと平均方法で測った値幅が大きいことを意味します。それだけで強い方向性のあるトレンド、反転、より良い取引機会が確定するわけではありません。大きく不規則に動く相場では、一定方向への動きが続かなくてもATRが上がります。
ATRは観測済みの価格を使う記述的な指標です。12 pipsという値は、次の足がその距離だけ動くという約束でも、値幅の上限でもありません。ある価格からATR相当の距離に引いた帯も、確率が調整された予測区間にはなりません。
2. True Rangeには前の足の終値を含める
確定した足tについて、Bidの高値をH、安値をL、直前の有効な足のBid終値をCprevとします。定義はTR = max(H − L, abs(H − Cprev), abs(L − Cprev))です。絶対値を使うことで、符号付きの価格差が負の距離になるのを防ぎます。
有効なOHLCであれば、TR = max(H, Cprev) − min(L, Cprev)とも表せます。前の終値が現在の高値と安値の間にあれば、TRはH − Lです。その範囲外にあれば、TRには窓開けと現在の足の必要な範囲が含まれます。前の足の値幅を丸ごと足すわけではありません。
このため、上方向と下方向の窓開けが同じTRになることがあります。価格が正の範囲に収まるように、価格の推移をある水準に対して上下反転しても、方向が逆になるだけで値幅は変わりません。その値幅から計算したATRも同じです。大きさだけから、失われた方向の情報を取り戻すことはできません。
3. 平均方法と初期値を明記する
移動する単純平均はATR_SMA(t) = Σ TR(t−j) / n, j = 0…n−1です。直近n個のTrue Rangeを等しい重みで扱い、計算区間が進むと最も古い値は完全に外れます。効率的な更新式はATR_SMA(t) = ATR_SMA(t−1) + (TR(t) − TR(t−n)) / nです。
ここで使うWilder方式では、最初のn個の有効なTRの算術平均をATRの初期値とし、その後はATR_W(t) = ((n−1) × ATR_W(t−1) + TR(t)) / nで更新します。この再帰的な平均では、新しい値の重みは1/nです。古い観測値の影響は徐々に弱まり、決まった境界で消えるわけではありません。
これらの式は初期値が同じでも、その後の値が一致するとは限りません。一般的なEMAの重み2/(n+1)も、さらに別のものです。そのため、「ATR」と期間だけでは計算を再現するための指定として不十分です。平滑化、初期化、利用できる履歴を記録します。小数点以下の桁数を増やしても、アルゴリズムの違いは解消できません。
4. MT4の環境と測定条件を合わせる
MT4では、ブローカーが使う正確な銘柄名、時間足、指標の実装、期間を記録します。公式に説明されているiATR(_Symbol, PERIOD_H1, 14, 1)は、その銘柄のH1のATRをシフト1で取得する呼び出しです。引数には平滑化方法や適用価格を選択する項目はありません。
期間が一致するだけで、端末のATRが手計算のWilder系列と同じだと考えてはいけません。入力する足、初期値、履歴をそろえてから、実際の確定足の値を比較します。カスタム指標は別のアルゴリズムを使うこともあります。この記事は明示した計算式を比較するもので、実際に稼働する端末の出力を検証したという主張はしていません。
プラットフォームのデータウィンドウの値を小さな計算例と照合し、指標やEAのバージョンも保存します。ATRが使うのは高値、安値、前の終値です。終値だけに適用した移動平均ではありません。ブローカーの銘柄名の接尾辞や価格の刻み幅も重要になる理由は、銘柄仕様のガイドで説明しています。
5. 架空のH1データで計算を再現する
表には、想定した同一サーバー時刻における確定時刻を付けた、架空のEURUSDのBidの足を示しています。その前の00:00の終値は1.10000です。計算過程を見やすくするためにn = 3とします。これは説明のための設定であり、推奨する売買設定ではありません。窓開けは指定した価格の飛びで、行の欠落ではありません。
| H1の確定時刻 | Bid始値 | Bid高値 | Bid安値 | Bid終値 | TR、pips | Wilder(3)、pips | SMA(3)、pips |
|---|---|---|---|---|---|---|---|
01:00 | 1.10000 | 1.10080 | 1.09980 | 1.10040 | 10 | — | — |
02:00 | 1.10040 | 1.10100 | 1.10020 | 1.10070 | 8 | — | — |
03:00 | 1.10070 | 1.10120 | 1.10050 | 1.10100 | 7 | 8.333333 | 8.333333 |
04:00 | 1.10200 | 1.10300 | 1.10180 | 1.10240 | 20 | 12.222222 | 11.666667 |
05:00 | 1.10240 | 1.10280 | 1.10200 | 1.10220 | 8 | 10.814815 | 11.666667 |
06:00 | 1.10220 | 1.10260 | 1.10180 | 1.10200 | 8 | 9.876543 | 12.000000 |
07:00 | 1.10080 | 1.10100 | 1.10000 | 1.10040 | 20 | 13.251029 | 12.000000 |
08:00 | 1.10040 | 1.10120 | 1.10020 | 1.10080 | 10 | 12.167353 | 12.666667 |
09:00 | 1.10080 | 1.10140 | 1.10060 | 1.10100 | 8 | 10.778235 | 12.666667 |
10:00 | 1.10100 | 1.10160 | 1.10080 | 1.10120 | 8 | 9.852157 | 8.666667 |
最初のTrue Rangeは10、8、7 pipsです。両方の平均が初めて得られるのは03:00の確定時で、(10 + 8 + 7) / 3 = 8.333333 pipsとなります。それ以前のATR欄は未算出であり、ゼロではありません。途中の計算では精度を保持し、表示する平均だけを小数点以下6桁に丸めています。
04:00ではH − Lが12 pipsですが、高値は前の終値より20 pips上にあります。したがってTRは20です。次のWilder値は((2 × 8.333333…) + 20) / 3 = 12.222222…、移動するSMAは(8 + 7 + 20) / 3 = 11.666667… pipsです。省略記号は保持している精度の続きを表しており、途中の入力を丸めたという意味ではありません。
07:00では、前の終値1.10200が新しい高値1.10100より上にあり、安値は1.10000です。足の値幅が10 pipsでも、TRは20 pipsになります。どちらの方向の窓開けも測定値を大きくします。注文、約定、取引リターンのシミュレーションは行っておらず、系列は表の最後の足で終わります。
6. 変化を読んでも売買シグナルと決めつけない
この例では、新しい足の値幅が小さくても、以前の大きな値幅が計算に残るため、ATRが高いままになることがあります。逆にSMAの低下には、古い大きな観測値が計算区間から外れた影響が含まれる場合もあります。すべての変化を新しい市場の出来事に結び付ける前に、現在のTRと平均方法を確認します。
ATRが低いからブレイクアウトが近いとも、高いから反転が目前だともいえません。しきい値は、明確に定めた銘柄、時間足、サンプルに対して解釈します。ボリンジャーバンド・スクイーズ戦略では、別の仕組みでボラティリティを測り、価格による確認条件も別途定めています。いずれの測定値も、その後の動きの継続を保証しません。
7. 期間・時間足・観測時点を区別する
期間の14は足の本数に関するパラメーターであり、自動的に十四日間を意味するわけではありません。H1なら時間足、D1なら日足に適用されます。移動するSMAは有限の計算区間を使いますが、Wilder平均には、その本数より古い足の影響も減衰しながら残ります。
確定足で分析する場合は、その足が終了し、必要なデータがそろうまで待ちます。10:00の直後なら、10:00確定と記した足は09:00に始まり、シフト1に位置します。10:00–11:00の足はシフト0で形成中です。時間が進むとシフト番号は変わるため、それだけを識別子にせず、始値時刻も保存します。
サーバーのタイムゾーン、日付の区切り、取引セッションによって、ティックの足へのまとめ方が変わります。H1のATRを単純に4倍してH4と比較してはいけません。集約によって高値、安値、窓開けの位置が変わるからです。予定された休場と予期しないデータ欠落も別です。再開後の足が、直近の取引時の終値を参照することは妥当です。
8. 価格単位からpipsとポイントへ明示的に換算する
換算式はATR_pips = ATR_price / pip_sizeとATR_points = ATR_price / Pointです。ここで想定する小数点以下5桁のEURUSDでは、pip幅は0.00010、Pointは0.00001です。ATR 0.00120は12 pips、または120ポイントであり、両者は同じ数にはなりません。
ここで想定する小数点以下3桁のUSDJPYでは、pip幅は0.010、Pointは0.001です。ATR 0.120は、こちらも12 pips、または120ポイントです。これらは単位の例で、現在のレートではありません。FXのpipの慣行を、仕様の確認なしに金、株価指数、その他の契約に当てはめないでください。
指標の表示では、必要な精度が丸められていることがあります。元の値を使って計算し、単位を保持します。pipsへの換算だけでは金額としてのリスクは求められません。契約サイズ、ティックサイズ、ティックバリュー、口座通貨は別の入力です。EAの距離設定も、pips、ポイント、価格差のいずれを使うか、説明書で確認します。
9. コストと正規化を適切に位置付ける
ATRが0.00120のとき、スプレッド0.00012はそのATRの10%です。pipsでは12に対して1.2となります。これはコストを比較する記述であり、エントリーのしきい値ではありません。Bidから計算したATRにはAsk側、手数料、資金調達コスト、実際の約定スリッページは含まれません。比率が小さくても、利益を得られる機会とは限りません。別途かかる費用は取引コストのガイドで説明しています。
100 × ATR / Closeという正規化では、正の価格に対するATRの割合をパーセントで表します。ATRが0.00120、Closeが1.10200なら0.108893%です。値幅と価格水準を区別する助けになりますが、流動性、契約のリスク、時間足を同じ条件にするものではありません。損切りの倍率も、ATR自体ではなく別のルールです。距離と取引量を一緒に考える理由は、リスク管理のガイドで扱います。
10. データ欠落と有効なゼロを区別する
この計算例では、有効で正のOHLCと前の終値が必要です。連続する有効なTrue Rangeがn個そろうまでは、ATRは未算出です。実際に価格が動かない系列では、TRもATRも0になり得ます。有効な測定値ではありますが、リスク計算の除数に使える距離ではありません。ゼロのATRで割ったり、代わりのpip値を作ったりしないでください。
必要な観測値が予期せず欠けた場合、この教材の計算では平均の状態を消去します。直前の終値が分かる、新たな連続データがそろうまで待ちます。欠落部分を飛び越えたり、ゼロを挿入したりはしません。別の欠損処理をする実装は仕様が異なるため、明示的に比較する必要があります。
高値が安値を下回る足や、始値・終値が足の範囲外にある足など、不正なデータは除外します。一方、前の終値が現在の範囲外にあるのは有効です。これが窓開けの例に相当します。また、「まだティックがない」、履歴が不完全、指標が本当にゼロという状態を区別し、返されたゼロをすべて静かな相場の証拠とみなしてはいけません。
EAでは、正確な銘柄名、時間足、足の開始時刻、期間、平滑化方式、価格単位のATR、換算した距離をログに残します。確定足の数値を使う前に、データが利用可能か確認します。指標値の観測、注文リクエスト、確認済みのポジションは、それぞれ別の状態です。
11. 手法を評価する前に測定値を検証する
まず短い系列を再計算し、初期値、上方向と下方向の窓開け、価格が動かない場合、不正なOHLC、履歴の欠落、単位換算を確認します。確定足を順番に追加して再現します。データと初期化が同じなら、後の足を追加しても、すでに求めた過去の計算値は変わらないはずです。
次に、同じ価格配信と履歴を使って、利用予定の端末の実装と比較します。違いは平滑化、初期値、BidかAskか、足の区切り方、欠損処理、丸めから生じることがあります。直ちにブローカーの不具合やリペイントの兆候と決めつけず、売買ルールを変える前に観測ログを保存します。
ATRを売買モデルに使うなら、エントリー、仮説が無効になる条件、決済、コスト、エクスポージャーを別途定義します。試したバリエーションと後の評価に使うデータを残し、その後に入る観測値でフォワードテストを行います。全体の流れはMT4のバックテストガイドで説明しています。指標の計算式が一致しても、売買の優位性やライブ取引の約定の信頼性が証明されるわけではありません。
12. ATRについてよくある質問
ATRが上がったら買うべきですか?
いいえ。上方向でも下方向でも、価格が飛べばTrue RangeとATRは増える可能性があります。方向の仮説には別途、価格や指標に基づくルールが必要です。ボラティリティの大きさだけではBUYかSELLかを選べません。
ATRが12 pipsなら次の足の値幅を予測できますか?
いいえ。選んだ平均方法で過去の値幅をまとめたものです。次の足は大幅に小さくなることも、大きくなることもあります。ATRは確実な移動距離も、確率的な境界も示しません。
同じ期間でもWilderのATRとSMAのATRが異なるのはなぜですか?
過去の値への重み付けが違うためです。この例では最初の平均は同じですが、Wilderでは古い値の影響が減衰しながら残り、SMAでは計算区間が進むと最も古い値が外れます。初期値や履歴が違えば、さらに差が生じることがあります。
自分のMT4の値が計算例と違うのはなぜですか?
正確な銘柄名、時間足、入力する足、平均の実装、初期値、初期計算用の履歴を確認し、同じ確定足で丸め前の値を比較してください。このガイドの架空データによる計算は、利用者の端末を検証して再現したものではありません。
ATRの期間は14が常に最適ですか?
いいえ。よく使われる初期設定が、すべての通貨ペア、時間足、ルールにとって最適化されているとは限りません。短い期間と長い期間では反応が違います。売買上の有用性は、別途検証した完全な手法の中で評価する必要があります。
ATRがゼロになることはありますか?
はい。必要な観測値がそろっていて、その値幅を選んだ式で計算した結果がゼロになる場合です。ただし、ソフトウェアではデータ欠落や未初期化のバッファもゼロに見えることがあります。利用可能なデータか確認してください。ゼロの値を除数に使ってはいけません。
13. 技術資料と適用範囲
公式のMetaTrader 4のATRリファレンスでは、True Rangeとその平均について説明しています。このガイドでは、すべてのプラットフォームが同じ方式だと仮定せずに計算を再現できるよう、WilderとSMAの更新式、および架空データの初期化を明示しています。
FXおよびレバレッジ取引には大きなリスクがあります。このガイドは学習を目的としており、投資助言ではありません。過去の結果やシミュレーションの結果が、将来の運用成績を保証することはありません。