[python] WilliamsR 구하기

[python] WilliamsR 구하기 updated_at: 2024-01-22 11:54

파이썬을 이용한 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]

평점을 남겨주세요
평점 : 5.0
총 투표수 : 1

질문 및 답글