この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
株式や為替、仮想通貨など、様々な金融市場でトレードを行う際に欠かせないのが、適切な分析ツールです。
これらのトレードにおいて、ボラティリティ(価格変動の大きさ)を把握することはとても重要です。その指標の一つとして広く利用されているのが、ATR(Average True Range)です。
ATRは、相場の変動幅を数値化し、トレード戦略のリスク管理やエントリータイミングの判断に活用できます。
本記事では、ATRの概要から、Pythonを使った計算方法、グラフによる視覚化までを解説します。
ATRとは

ATR(Average True Range)は、指定した期間の価格の変動幅(ボラティリティ)を測るテクニカル指標です。
トレンドの方向性を示すものではなく、どれくらい価格が変動しているかを把握するための指標として使われます。
1970年代半ばに、数々の革新的なテクニカル指標を開発したJ. Welles Wilder Jr.氏が、著書「New Concepts in Technical Trading Systems」で紹介しました。
ATRの使い方
ATRは主に次の目的で使用されます。
ボラティリティの測定
- ATRが高い:価格変動が大きい(ボラティリティが高い)
- ATRが低い:価格変動が小さい(ボラティリティが低い)
損切りの設定
ATRを利用して、ボラティリティに応じた損切りラインを設定する手法があります。
例えば、「エントリー価格からATRの1.5倍を損切りとする」などです。
トレンドの強さを判断
ATRが急上昇すると、新たなトレンドが発生する可能性があります。
逆にATRが低いままだと、レンジ相場(横ばい)が続く可能性があります。
ATRの計算方法
ATRの計算方法は以下の手順で行います。
まず1日の値動きで、以下の3つの値のうち最大のものをTrue Range(TR)とします。
- 当日の高値 – 当日の安値
- |当日の高値 – 前日の終値|(絶対値)
- |当日の安値 – 前日の終値|(絶対値)
次に、TRの値を使ってATRを計算します。一般的には14期間の指数移動平均を使用します。
ATR = (前日のATR * (n – 1) + 今日のTR) / n
ここで、nは期間数(通常14)です。
PythonでATRを計算するコード

ATRを計算しグラフで表示するには、以下のライブラリを使用します。
- pandas: 時系列データを処理するためのライブラリ。
- NumPy: 数値計算を効率的に行うためのライブラリ。
- yfinance: 価格データを取得するためのライブラリ。
- mplfinance: グラフの描画に使用します。
以下のコードを使って、ATRの計算とグラフの表示をします。使用するデータは、2024年の日経平均株価です。
import pandas as pd
import numpy as np
import yfinance as yf
import mplfinance as mpf
# 期間の設定
period = 14
# 株価データを取得(例:日経平均株価のデータを使用)
ticker = yf.Ticker('^N225')
data = ticker.history(start='2024-01-01', end='2024-12-31')
# TRの計算
high_low = data['High'] - data['Low']
high_close = np.abs(data['High'] - data['Close'].shift(1))
low_close = np.abs(data['Low'] - data['Close'].shift(1))
# TRは3つの値の中で最大のもの
tr = pd.concat([high_low, high_close, low_close], axis=1).max(axis=1)
# ATRの計算
atr = tr.rolling(window=period).mean()
# ATRを追加してプロット
apds = [
mpf.make_addplot(atr, panel=1, color='red', ylabel='ATR')
]
mpf.plot(
data,
type='candle', # ローソク足チャート
addplot=apds,
style='yahoo',
title='Stock Price with ATR',
ylabel='Price',
volume=False
)
上記のコードを実行すると、以下のようにローソク足とARTのグラフが出力されます。

ポイントの解説

# 期間の設定
period = 14
period
でARTの期間を設定します。通常は14期間ですが、変更したい場合はこの数値を変更してください。
# TRの計算
high_low = data['High'] - data['Low']
high_close = np.abs(data['High'] - data['Close'].shift(1))
low_close = np.abs(data['Low'] - data['Close'].shift(1))
TRの計算でのポイントは、.shift(1)
で当日と前日の価格が比較できるように計算する値をずらします。そして、Numpyの関数のnp.abs
で計算した値を絶対値にします。
# TRは3つの値の中で最大のもの
tr = pd.concat([high_low, high_close, low_close], axis=1).max(axis=1)
TRは上記で計算した値の最大値になるので、.max(axis=1)
で行ごとの最大値を求めます。
# ATRの計算
atr = tr.rolling(window=period).mean()
最後にTRの移動平均線を計算すれば、ARTを求めることができます。
おわりに
この記事では、Pythonを使ってARTを計算し、グラフで視覚化する方法を解説しました。
ARTは、トレンドの方向性を示すものではなく、どれくらい価格が変動しているかを把握するための指標です。他のテクニカル指標と併せて用いることで、より精度の高いトレードに繋がるでしょう。
Pythonを活用すれば、ARTに限らず様々な指標を簡単に計算できます。この記事をきっかけに、ぜひ他のテクニカル指標にも挑戦してみてください。