파인스크립트로 MFI 지표를 만들어보자
1. MFI는 어떤 지표일까?
MFI(Money Flow Index)는 주가와 거래량을 이용해 계산되는 지표입니다.
기술적 분석에서 과매수나 과매도 상태를 판단하는 데 사용됩니다.
MFI 는 거래량이 반영된 RSI 라고 부르기도 합니다.
더욱 자세하게 공부하고 싶다면 아래에 링크에서 참고하시면 됩니다.
돈 흐름 지수 - 위키백과 (wikipedia.org)
2. 트레이딩 뷰에서 제공하는 MFI의 기본 소스코드
//@version=5
indicator(title="Money Flow Index", shorttitle="MFI", format=format.price, precision=2, timeframe="", timeframe_gaps=true)
length = input.int(title="Length", defval=14, minval=1, maxval=2000)
src = hlc3
mfi = ta.mfi(src, length)
plot(mfi, "MF", color=#7E57C2)
overbought=hline(80, title="Overbought", color=#787B86)
hline(50, "Middle Band", color=color.new(#787B86, 50))
oversold=hline(20, title="Oversold", color=#787B86)
fill(overbought, oversold, color=color.rgb(126, 87, 194, 90), title="Background")
- version = 해당 지표의 버전을 나타냅니다.
- indicator = 지표의 제목과 부제목 기본적인 설정 등을 합니다.
- length = 인풋 값을 인트로 주고 기간을 14일로 정합니다.
- src = source의 약어입니다. hlc3는 고가,저가,종가의 합 평균을 나타냅니다.
- mfi = mfi를 구하는 공식입니다.(굳이 안 외우셔도 됩니다.)
- plot = rsi를 차트 위에 빨간색으로 출력합니다.
- hline(가로선)을 차트 위에 출력합니다.
- fill = a, b 사이에 배경을 출력합니다.
기본적으로 트레이딩 뷰에서 제공하는 MFI를 이용해서
아래에서는 이 내용에 추가적인 기능을 넣어서
조금 더 쉽고 간결하게 만들어보겠습니다.
3. 파인스크립트 지표의 버전 설정하기.
//@version=3
//@version=4
//@version=5
지표를 만들기에 앞서 어떤 언어를 사용할 건지에 대한 버전을 입력해야 합니다.
앞으로 다루게 될 내용에서는 버전 5를 사용할 예정입니다.
이유는 버전 5 밑으로는 트레이딩 뷰에서 리버전 하는 기능이 있기에 호환이 가능합니다.
그리고 또한 구현하는 함수들이 사용하기 쉽도록 더욱 간결해졌습니다.
4. RSI의 타이틀 설정하기
//https://goingrunv.com/
//@version=5
indicator(title='GRV-MFI', shorttitle='GRV-MFI', format=format.price, precision=2, timeframe='')
- title = 스크립트의 이름을 설정합니다.
- shorttitle = 스크립트에 단축된 이름을 설정합니다.
- overlay = 스크립트를 차트 위에 표시합니다.
- format = 스크립트의 플롯 된 값이 가격 척도에 사용하는 형식을 정의합니다.
- precision = 스크립트의 값에 나타나는 소수 자릿수를 설정합니다.
5. MFI의 함수 설정하고 라인 출력하기
//https://goingrunv.com/
//@version=5
indicator(title='GRV-MFI', shorttitle='GRV-MFI', format=format.price, precision=2, timeframe='')
//mfi 함수 정의
len = input.int(14, minval=1, title='mfi_Length')
src = input(close, 'mfi_Source')
mfi = ta.mfi(src, len)
//mfi 출력
plot(mfi, title='mfi 라인설정', color=color.new(color.white, 50), linewidth=2)
버전 5 파인 스크립트에서는 ta.***라는 함수로 간단하게 지표를 불러올 수 있습니다.
rsi는 (close, 기간=14)로 정의하고 출력해보겠습니다.
plot(차트 위에 rsi를 색상은 노란색, 라인 굵기는 2로 출력합니다.)
6. MFI의 상단선 중간선 하단선 설정하기
//mfi 기준 라인 설정
top = hline(80, title='상단선', color=color.new(color.red, 40), linestyle=hline.style_solid, linewidth=1)
middle = hline(50, title='중간선', color=color.new(color.orange, 40), linestyle=hline.style_dotted, linewidth=1)
bottom = hline(20, title='하단선', color=color.new(color.green, 40), linestyle=hline.style_solid, linewidth=1)
color=color.new(color. 색상, 0~100)
color.new 함수로 색상과 투명도를 설정할 수 있습니다.
linestyle=(hline.style_dotted // hline.style_solid // hline.style_dashed)
라인의 스타일을 설정할 수 있습니다.
linewidth=1
라인 굵기입니다.
7. MFI의 과매도 구간 과매수 구간 색칠하기
//mfi 매도 매수 구간
overbought = plot(80, title='과매수구간1', color=color.new(color.white, 100), editable=false)
oversold = plot(20, title='과매도구간1', color=color.new(color.white, 100), editable=false)
obcolor = plot(mfi > 80 ? mfi : 80, title='과매수구간2', color=color.new(color.red, 100), editable=false)
oscolor = plot(mfi < 20 ? mfi : 20, title='과매도구간2', color=color.new(color.red, 100), editable=false)
fill(overbought, obcolor, color=color.new(color.red, 30), title='과매수구간')
fill(oversold, oscolor, color=color.new(color.blue, 30), title='과매도구간')
editable이라는 함수로 차트 테이블 위에 표시하지 않습니다.(숨김 처리)
fill이라는 함수로 과매도 구간 과매수 구간에 색을 칠해줍니다.
8. 최종 MFI 소스코드
//https://goingrunv.com/
//@version=5
indicator(title='GRV-MFI', shorttitle='GRV-MFI', format=format.price, precision=2, timeframe='')
//mfi 함수 정의
len = input.int(14, minval=1, title='mfi_Length')
src = input(close, 'mfi_Source')
mfi = ta.mfi(src, len)
//mfi 출력
plot(mfi, title='mfi 라인설정', color=color.new(color.white, 50), linewidth=2)
//mfi 기준 라인 설정
top = hline(80, title='상단선', color=color.new(color.red, 40), linestyle=hline.style_solid, linewidth=1)
middle = hline(50, title='중간선', color=color.new(color.orange, 40), linestyle=hline.style_dotted, linewidth=1)
bottom = hline(20, title='하단선', color=color.new(color.green, 40), linestyle=hline.style_solid, linewidth=1)
//mfi 매도 매수 구간
overbought = plot(80, title='과매수구간1', color=color.new(color.white, 100), editable=false)
oversold = plot(20, title='과매도구간1', color=color.new(color.white, 100), editable=false)
obcolor = plot(mfi > 80 ? mfi : 80, title='과매수구간2', color=color.new(color.red, 100), editable=false)
oscolor = plot(mfi < 20 ? mfi : 20, title='과매도구간2', color=color.new(color.red, 100), editable=false)
fill(overbought, obcolor, color=color.new(color.red, 30), title='과매수구간')
fill(oversold, oscolor, color=color.new(color.blue, 30), title='과매도구간')
'파인 스크립트 지표 만들기' 카테고리의 다른 글
파인스크립트로 CCI 지표를 만들어보자 (0) | 2022.07.09 |
---|---|
파인스크립트로 RSI(상대강도지수) 지표를 만들어보자 (0) | 2022.07.09 |
댓글0