cs

정말 2월달에 이런느낌..

 

계속 여기에 포스팅 할때마다 Finance Data Reader 활용이라고 썼는데,, 

 

뭐 계속 쓰고있기도 하고, 거의 fdr 따라오는게 거의 없어서 타이틀에서는 뺐당.. 


자, 저번 포스트에서 말했던 일중강도지수를 파이썬으로 구현하고 그려봅시다. 

https://simbbo-blog.tistory.com/140

 

Intraday Intensity Index (일중강도지수)

기회가 되면 코인도..??... 주식 트레이딩에 하나의 지표로 쓸 일중강도지수다. 반전 매매기법에 꼭 필요한 지표인데 상당히 많은 사람들이 사용하고 있다. 분석 지표중 하나인 일중강도지수는

simbbo-blog.tistory.com

 

여러 블로그에서도 반전 매매기법을 구사하면서 II지표를 계산하는 코드를 많이 올려놨는데,

 

생각보다 다른 전략보다 약한지 효과가 없는지 뭔가 주식 지표 공부할때 자주 보이지는 않았다.. 

 

암튼 그래도! 구현해보고 주가 흐름과 비교하면 인사이트가 보일 수도 있으니까! 

 

 

set up

# 기본 import 
import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
import FinanceDataReader as fdr

#현대건설
df = fdr.DataReader("000720", "2022", "2023")
df.shape
df.tail()

뭐, 간단히 셋업하는건 지난 포스트들과 큰 차이는 없다. 

 

이번에 현대건설을 선택한건, 요즘 대선도 끝났겠다 정부 공약에 건설이 좀 핫해서 유심히 보고있다... (추천 종목 아님)

 

#같은거 하나 더 만들어주기

dup_df =df
dup_df.tail()

 

이건 진짜 별거 아닌데, 요즘 습관이 되어버렸다. 

 

보통 데이터프레임에서 계속 작업하다보면 원본 데이터는 형체도 안남고 사라지고 마지막 결과물만 똿 나오기 때문에, 원본을 유지 하는 느낌으로 해주고, 데이터 프레임이 변경될때마다 다른 이름으로 저장해주다 보면 어디서 문제가 있는지 파악하기 쉬워서이다. 

 

물론 여기는 뭐 코드 몇줄만 짜는거라 필요없지만, 나 스스로 다시 복기하기 위해 적는다. 

 

 

 

II 계산

코드로 구현하기전에 공식을 보고 따라해보자.

#II 계산

dup_df['II'] = (2*dup_df['Close'] - dup_df['High'] - dup_df['Low']) / (dup_df['High'] - dup_df['Low']) *dup_df['Volume']


## rolling = 이동평균함수, window = 기간
dup_df['IIP'] = dup_df['II'].rolling(window=21).sum()/dup_df['Volume'].rolling(window=21).sum()*100


dup_df.tail()

종가에 2배를 해준뒤 상한가, 하한가를 빼준다. 

 

그리고 분모에도 상한가와 하한가의 차를 거래량으로 곱해주면 간단히 II수를 구할 수 있다. 

 

II는 일중 강도고, 그것을 비율로도 활용을 많이 하기때문에 21일동안의 기간에 대한 평균치를 이용해 강도율을 IIP21로 설정했다.

 

 

간단한 시각화

그냥 II 숫자와 IIP(퍼센트) 둘다 한번 봐야겠다. 

#II 그래프로 확인 

plt.plot(dup_df.index, dup_df['II'], color='r', label = 'II index')
plt.grid(linestyle='dotted')
plt.legend(loc='best')

반전 매매기법중 하나는 저 포인트가 음수에서 양수로 변환할때 수급이 들어온다 그런 뜻이기 때문에 흐름을 잘 봐야하고..

 

상당히 움직임 폭이 클때를 잘 보면,, 3월 초반에  대선 끝나고 흐름이 엄청 들어온걸 반영했다고 볼수있다. 

 

#IIP 그래프로 확인 

plt.bar(dup_df.index, dup_df['IIP'], color='g', label = 'II% 21days')
plt.grid(linestyle='dotted')
plt.legend(loc='best')

 

바차트로 간단히 구현해서 보게되면 이런 느낌이다. 

 

확실히 건설주에 대표격인 현대건설이라 그런지 수치가 상당히 높게 나타나는 느낌이다. (비율로만 변화시킨거라,,)

 

그리고 지금 내가 21일 평균을 가지고 왔는데 너무 짧은 기간을 조회한것같기도 하다. 

 

 

그럼 종가와 II의 움직임을 한번 봐보자.

#두개 같이 보고 비교하고싶은데, 지난번 포스트에 쓴걸 그대로 쓰면...

dup_df[["IIP", "Close"]].plot(secondary_y = "Close")

확실히 IIP숫자가 음수에서 양수로 상승할때 주가도 많이 상승한걸 쉽게 볼 수 있다. 

 

그리고 1월 말쯤에 주가가 하락한건 아마 그 광주에서 아파트 건축하다가 붕괴된 사건이 영향이 있었을 것이다. 

 

둘다 plot으로 보는것 보다 둘다 지표도 다르고 나타내는 축도 다르니 IIP만 bar차트로 변경해서 봤다. 

 

##그래프 모양다르게

# figure랑 축1번하나 생성
fig, ax1 = plt.subplots()

# 첫번째 기준이 되는 축 생성하고, (라인차트)
ax1.plot(dup_df.index, dup_df['Close'])
ax1.set_ylabel('close price')
ax1.legend(['Close'], loc="upper left")

# 두번째 축을 설정할건데 twinx로 x축을 동일시켜줘야함
ax2 = ax1.twinx()

# 두번째 축은 바차트로 설정해주고 
ax2.bar(dup_df.index, dup_df['IIP'], width=0.5, alpha=0.5, color='orange')
ax2.grid(False) 
ax2.set_ylabel('II%')
ax2.legend(['IIP'], loc="upper right")


plt.show()

두개를 나눠서 보니까 개인적으로는 눈에 더 잘 들어온다. 

 

IIP(퍼센트)말고 II 숫자랑 같이 가지고오면..

이런 느낌인데, 확실히 0을 기점으로 하락하고 상승하는 지점을 정확하게 뽑아주는 느낌이다. 

 

반전매매기법에 왜 사용하는지 알겠다. 

+ Recent posts