【Python】mplfinanceでATRを表示する

テクニカル

パンローリングの本を読んでいるとよく出てくるATR(Average True Range)をPythonで表示させます。

早速コードです。

import pandas as pd
import pandas_datareader.data as web
import matplotlib.pyplot as plt
import mplfinance as mpf
import datetime

#ティッカー
ticker="2914.JP"

#日付取得
end = datetime.datetime.today()  # 今日の日付
start='2020-01-01'

#データ取得
df=web.DataReader(ticker, "stooq",start,end).dropna()
df.sort_index(ascending=True,inplace=True)

#ダウンサンプリング
df=df.resample('W').agg({'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last','Volume':'sum'})

#TR計算
elem1=(df['Close']-df['Open']).abs()
elem2=(df['High']-df['Close'].shift(1)).abs()
elem3=(df['Low']-df['Close'].shift(1)).abs()
TR=pd.concat([elem1,elem2,elem3],axis=1).max(axis=1)

#ATR計算
ATR=TR.ewm(span=14).mean()

#グラフ表示
ap2 = [ mpf.make_addplot(ATR,color='b',panel=2)]
mpf.plot(df,type='candle',volume=True, mav=(5,13,26),addplot=ap2,panel_ratios=(4,2,2),style='binance')  

ATRの計算方法ですが下記のいずれかの最大値をTR(True Range)として14日間のTRの指数平滑移動平均線をATRとしています。

  • 当日の高値-当日の安値
  • 当日の高値-前日の終値
  • 当日の安値-前日の終値

テクニカル投資の基礎講座 ──チャートの読み方から仕掛け・手仕舞いまで

コメント

タイトルとURLをコピーしました