【Pythonテクニカル分析】ウィリアムズ%Rの計算と描画
ウィリアムズ%Rは相場の過熱感を見るためのオシレーター系分析の指標です。今回はこちらをPythonで計算して描画してみたいと思います。
式
\( ウィリアムズ\%R =\frac{当日終値-過去N日間の高値}{(過去N日間の高値-過去N日間の安値)} \times 100\)
計算式はシンプルです。ある期間における高値と安値の差に対して高値と始値の差、終値と安値の差の割合を見ています。
あえて分母がマイナスをとるような式にしておくことで、チャートで描画した際に、上が買われすぎ、下が売られすぎとなるようになります。
コード
日経平均を例にウィリアムズ%Rを計算するコードです。
# ライブラリの読み込み
import pandas_datareader as pdr
from datetime import datetime, timedelta
import pandas as pd
import matplotlib.pyplot as plt
# データ取得期間設定
current_date = datetime.now()
two_years_ago = current_date - timedelta(days=365) # 1年間を設定
formatted_date = two_years_ago.strftime("%Y-%m-%d")
df = pdr.DataReader('^NKX', 'stooq',start=formatted_date) # データの取得
df.sort_values('Date', inplace=True) # 日付順にソート
# ウィリアムズ%Rを計算
N = 20
WR = (df['Close']-df['High'].rolling(N).max())/(df['High'].rolling(N).max()-df['Low'].rolling(N).min()) * 100
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(WR, label='Williams %R')
ax1.tick_params(axis="x", labelrotation=45)
ax1.legend()
![](https://obenkyolab.com/wp-content/uploads/2024/06/image-6.png)
基本的な読み方
-20%以上は買われすぎ⇒売り検討
-80%以下は売られすぎ⇒買い検討
というように逆張り的に使う指標。
以上