[python] WilliamsR 구하기
파이썬을 이용한 WilliamsR 구하기
WilliamsR 이란
WILLIAMS %R는 Larry Williams에 의해 개발된 지표로 과매도, 과매수를 측정하기 위한 모멘텀 지표이다. WILLIAMS %R는 최근 변동폭과 종가와 최고점의 차이를 구해서 나타낸다. 이는 변동폭과 종가와 최저점의 차이를 이용하는 스토케스틱스 오실레이터와 비슷하다. WILLIAMS %R는 주가 추세전환 예측과 고점, 바닥을 판단하는데 효과적이다.
WILLIAMS %R 활용법
WILLIAMS %R는 최고점과 비교를 하기 때문에 항상 음(-)의 값을 지닌다. 보통 WILLIAMS %R이 -80 ~ -100% 사이인 경우 과매도 상태라고 여기며 0 ~ -20% 사이인 경우는 과매수 상태로 여긴다. 과매도 상태에서는 매수 기회이며 과매수 상태에서는 매도 기회를 뜻한다.
WILLIAMS %R 계산법
(N일 중 최고가 - 당일 종가) / (N일 중 최고가 - N일 중 최저가) x (-100)
소스코드
def calWilliamsR(self, code=None):
# %R = (N일간 최고가 - 당일종가) / (N일 최고가 - N일 최저가) * (-100)
data = [
['2023-12-18',208500,212000,207000],
['2023-12-19',209000,212500,207500],
['2023-12-20',209000,213500,209000],
..........
['2024-01-16',195000,204000,195000],
['2024-01-17',186000,197000,186000],
['2024-01-18',186700,188700,184400],
]
df = pd.DataFrame(data)
df.columns = ['Date', 'Close', 'High', 'Low']
close = df['Close'].iloc[-1]
maxV = df.max(axis=0)
minV = df.min(axis=0)
R = (maxV['High'] - close) / (maxV['High'] - minV['Low']) * (-100)
Willams %D
%D는 일부 통계표에서 제공하는 것으로 위에서 구한 R 값에 대한 기간별 평균을 다시 내는 방식이다.
%R이 $D 위로 교차하면 매수, 아래로 교차하면 매도로 인식하여 매매에 이용하기도 한다.
소스코드
mean = df.rolling(window=9, on='ymd').mean() // 9일동안의 williams R의 평균
avg = mean['williams_r'].iloc[-1]