본문 바로가기
프로그래밍

python, 주식(보조지표) - MFI 구하기

by 청청개구리 2022. 7. 3.
728x90

 

거래량을 반영하는 보조지표중에 MFI를 알아보자

 

MFI란, Money Flow Index 라고 한다.

뭔가 플로우~ 가 나온다. ㅎㅎ

자세한건, 아래참고,

https://www.investopedia.com/terms/m/mfi.asp

 

Money Flow Index - MFI Definition and Uses

The Money Flow Index (MFI) is a trading tool that incorporates volume and price data. It can be used to generate trade signals based on overbought and oversold levels as well as divergences.

www.investopedia.com

 

위키디피아, 나무위키 등 설명을 못찾았길래, 이걸 넣었다.

여러블로그와 증권회사등에서도 이론적인 것은 설명하고 있으니, 검색검색!

 

필요한건,

여기서,

Positive Money Flow =  당일TP (when 당일TP > 전일TP)

Negative Money Flow =  당일TP (when 당일TP < 전일TP)

이다.

만약 당일TP=전일TP이라면? 둘다 0 이다(아래 소스에서 나는 그렇게 처리했다)

그리고, MFI 수식을 풀어서 계산을 다시하면,

MFI = 14PMF /(14PMF + 14NMF) * 100

가 된다. 위 식을 사용하여 계산하였다.

 

 

데이터는 "삼성전기" 이다. 2015-2019자료.  아래에서도 계속 사용하고 있음.

https://nothing-else-matters.tistory.com/67

 

python, 주식(보조지표) -볼린저밴드 구하기

이른바 채널전략에 사용되는 여러채널들, 엔빌로프 밴드(채널), 켈트너 밴드(채널) 등 각종 밴드가 등장하는데, 그 중에서 볼린저밴드 라는 것을 알아보자. 개요는 주가가 정규분포를 따른다는

nothing-else-matters.tistory.com

https://nothing-else-matters.tistory.com/72

 

python, 주식(보조지표) - 이동평균 구하기

너무도 기본적인 이동평균, '이평' 이라고도 부른다. 파이썬으로 구하는 방법을 알아보자. 이론적인 내용은, 아래 참고 이동평균선 - 나무위키 (namu.wiki) 이동평균선 - 나무위키 이 저작물은 CC BY-N

nothing-else-matters.tistory.com

 

보조지표를 구현해 보는 이 시리즈를 어디까지 할까 싶은데, 계속 같은 자료를 사용할 작정임.

 

 

그럼, 소스코드 살펴보자

 

65행 : 데이터 읽고

68행 : n일간을 정하는 값을 설정

69-70행 : typical price와 RMF 계산해 둔다

71-77행 : PRMF 와 NRMF 를 계산한다.

78-80행 : PMF와 NMF를 계산하고, 두개의 값을 사용해서 MFI를 계산한다. 

for 문이 아니면 안될까? ...공부하자...

이 계산을 하다보니, 오늘의 MFI값을 구하려면 오늘의 종가를 알 수 있어야 했다

오늘의 종가를 안다는 것은 오늘의 거래가 끝났다는 것일텐데,

오늘 구한 MFI는 오늘 사용하지 못한단 말인가...음...

 

결과  살펴보자. 구간이 길어지니 잘 나온건지 확인이 잘 안되길래,

기간을 조정해서 일정기간에 대해서 그래프 그려보았음.

결과 저장해둔 'out-MFI.xlsx' 엑셀파일로 그래프 그려보면,

 

HTS에서 비슷한 기간으로 데이터를 확인해보면,

비슷한 결과를 보이는 것 같은데, 완전히 같지는 않은 모습.

경향은 맞아 보이기는 하는데, 계산이 틀린 걸까? 

 

아래 출력파일의 일부인데, 2016-01-04의 거래량이 464이다. 사실은 464xxx 이었을것이다.

HTS에서 데이터를 가져와서 입력에 사용했더니 천단위 삭제되고 있음.

 

 

 

728x90