예스스탁
예스스탁 답변
2020-11-04 17:01:30
안녕하세요
예스스탁입니다.
분자나 분모가 0이면 0으로 처리가 되게 되어 있습니다.
일정기간 하락이 없으면 100으로 처리하고자 하시면 아래와 같이 변경해 사용하시기 바랍니다.
Input: Period(14) , 하단(20) , 상단(80);
var : MoneyFlow(0);
value1 = H + L + C;
value4 = V * value1 / 3;
if value1 > value1[1] then
value2 = value4;
else
value2 = 0;
if value1 < value1[1] then
value3 = value4;
else
value3 = 0;
if AccumN(value3, Period) == 0 Then
MoneyFlow = 100;
else
MoneyFlow = 100 - 100 / (1 + (AccumN(value2, Period) / AccumN(value3, Period)));
Plot1(MoneyFlow, "MFI");
PlotBaseLine1 (하단 , "하단기준선");
PlotBaseLine2 (상단 , "상단기준선");
즐거운 하루되세요
> 하운드독 님이 쓴 글입니다.
> 제목 : MFI 지표 수식의 문제 (분모가 0인숫자인식)
> 표제건 관련하여,
오류? 가 발생하여 원인분석을 해보니
계산식중 분모가 0이 되어 MFI가 95에서 => 0으로 변하는 현상이 발생합니다.
즉, 가격이 주어진 기간PERIOD(14) 동안 쉬지않고 올라갈경우,
분모인 AccumN(value3, Period))가 0이되면서 문제가 발생하네요.
MFI가 떨어지려면, 지난 기간대비 가격이 떨어져야 하는데
오히려 오르고 있는 상황에서 0이 되버리는 상황이 벌어지니
수정이 필요해 보입니다.
하이투자증권 사용중인데,
타 증권사(미래에셋대우) MFI로 확인해보니,
사진에 표시된지점의 MFI를 100으로표시하는군요.
분모가 0인 숫자는 엄밀히 "0"이 아니라, 무한대인데,
무한대로 표시할수 없으니, 0으로 변환한것 같군요.
분모가 0인숫자를 어떻게 인식하나요?
MFI 함수를 포함하여 MESSAGELOG 로 보면 문제가 뭔지 보이네요.
"Input: Period(14) , 하단(20) , 상단(80);
var : MoneyFlow(0),aa(0) ;
MoneyFlow = MFI(Period);
# mfi 함수 임시 사용
Var : value1(0), value2(0), value3(0), value4(0);
value1 = H + L + C;
value4 = V * value1 / 3;
if value1 > value1[1] then
value2 = value4;
else
value2 = 0;
if value1 < value1[1] then
value3 = value4;
else
value3 = 0;
aa = 100 - 100 / (1 + (AccumN(value2, Period) / AccumN(value3, Period)));
messagelog(" %.3f %.f %.2f %.2f %.2f %.f" ,value3,AccumN(value3, Period), AccumN(value2, Period) / AccumN(value3, Period) ,AccumN(value2, Period) );
Plot1(MoneyFlow, "MFI");
PlotBaseLine1 (하단 , "하단기준선");
PlotBaseLine2 (상단 , "상단기준선");