커뮤니티

수식 문의

프로필 이미지
흑수돌
2023-02-06 13:14:28
523
글번호 166033
답변완료
아래 지표는 하케아쉬에 이평을 넣어 더욱 스무드하게 만든 지표입니다. 문제는, 본 지표를 분봉에 적용할 때, 전일 종가를 반영해서 계산하다 보니 시가봉~n봉까지는 움직임과는 다르게 표현될 때가 있습니다. 이에, 본 수식을 수정하여, 예를 들어, ma5를 적용한다 했을 때, 5째봉까지는 누적으로 이평값을 계산해서 적용하고 5째봉 이후 부터는 쭉 ma5를 적용하고 싶습니다. 즉, 시가가 양봉이면 양봉으로, 음봉이면 음봉으로 표시 시가+2봉 : ma2를 적용 시가+2+3봉 : ma3을 적용 시가+2+3+4봉 : ma4를 적용 시가+2+3+4+5봉 : ma5를 적용 6봉 부터는 종가까지 ma5를 적용하여 뿌려줍니다. -------- 아래 ------------ input : MaPeriod(6),MaPeriod2(2); var : maOpen(0),maClose(0),maLow(0),maHigh(0); var : haOpen(0),haClose(0),haLow(0),haHigh(0); var : ExtMapBuffer5(0),ExtMapBuffer6(0),ExtMapBuffer4(0),ExtMapBuffer3(0),ExtMapBuffer2(0),ExtMapBuffer1(0); var : ExtMapBuffer7(0),ExtMapBuffer8(0); var : r(0),g(0),b(0); if Index == 0 Then { maOpen=Open; maClose=Close; maLow=Low; maHigh=High; } Else { maOpen=(maOpen[1]*(MAperiod-1)+Open)/MAPeriod; maClose=(maClose[1]*(MAperiod-1)+Close)/MAPeriod; maLow=(maLow[1]*(MAperiod-1)+Low)/MAPeriod; maHigh=(maHigh[1]*(MAperiod-1)+High)/MAPeriod; haOpen=(ExtMapBuffer5[1]+ExtMapBuffer6[1])/2; haClose=(maOpen+maHigh+maLow+maClose)/4; haHigh=Max(maHigh, Max(haOpen, haClose)); haLow=Min(maLow, Min(haOpen, haClose)); if (haOpen<haClose) then { r=255; g=94; b=0; ExtMapBuffer7=haLow; ExtMapBuffer8=haHigh; } else { r=92; g=209; b=229; ExtMapBuffer7=haHigh; ExtMapBuffer8=haLow; } ExtMapBuffer5=haOpen; ExtMapBuffer6=haClose; ExtMapBuffer1=WMA(ExtMapBuffer7,MAperiod2); ExtMapBuffer2=WMA(ExtMapBuffer8,MAperiod2); ExtMapBuffer3=WMA(ExtMapBuffer5,MAperiod2); ExtMapBuffer4=WMA(ExtMapBuffer6,MAperiod2); } PlotPaintBar(ExtMapBuffer2,ExtMapBuffer1,ExtMapBuffer3,ExtMapBuffer4,"강조",Rgb(r,g,b));
강조
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-02-07 14:06:18

안녕하세요 예스스탁입니다. input : MaPeriod(6),MaPeriod2(2); var : maOpen(0),maClose(0),maLow(0),maHigh(0); var : haOpen(0),haClose(0),haLow(0),haHigh(0); var : ExtMapBuffer5(0),ExtMapBuffer6(0),ExtMapBuffer4(0),ExtMapBuffer3(0),ExtMapBuffer2(0),ExtMapBuffer1(0); var : ExtMapBuffer7(0),ExtMapBuffer8(0); var : r(0),g(0),b(0); var : sumc(0),sumi(0),mav(0); if Bdate != Bdate[1] Then { sumc = 0; sumi = 0; } sumc = sumc+c; sumi = sumi+1; if sumi <= MaPeriod-1 Then mav = sumc/sumi; Else mav = ma(C,MaPeriod-1); if Index == 0 Then { maOpen=Open; maClose=Close; maLow=Low; maHigh=High; } Else { maOpen=(mav+Open)/2; maClose=(mav+Close)/2; maLow=(mav+Low)/2; maHigh=(mav+High)/2; haOpen=(ExtMapBuffer5[1]+ExtMapBuffer6[1])/2; haClose=(maOpen+maHigh+maLow+maClose)/4; haHigh=Max(maHigh, Max(haOpen, haClose)); haLow=Min(maLow, Min(haOpen, haClose)); if (haOpen<haClose) then { r=255; g=94; b=0; ExtMapBuffer7=haLow; ExtMapBuffer8=haHigh; } else { r=92; g=209; b=229; ExtMapBuffer7=haHigh; ExtMapBuffer8=haLow; } ExtMapBuffer5=haOpen; ExtMapBuffer6=haClose; ExtMapBuffer1=WMA(ExtMapBuffer7,MAperiod2); ExtMapBuffer2=WMA(ExtMapBuffer8,MAperiod2); ExtMapBuffer3=WMA(ExtMapBuffer5,MAperiod2); ExtMapBuffer4=WMA(ExtMapBuffer6,MAperiod2); } PlotPaintBar(ExtMapBuffer2,ExtMapBuffer1,ExtMapBuffer3,ExtMapBuffer4,"강조",Rgb(r,g,b)); 즐거운 하루되세요 > 흑수돌 님이 쓴 글입니다. > 제목 : 수식 문의 > 아래 지표는 하케아쉬에 이평을 넣어 더욱 스무드하게 만든 지표입니다. 문제는, 본 지표를 분봉에 적용할 때, 전일 종가를 반영해서 계산하다 보니 시가봉~n봉까지는 움직임과는 다르게 표현될 때가 있습니다. 이에, 본 수식을 수정하여, 예를 들어, ma5를 적용한다 했을 때, 5째봉까지는 누적으로 이평값을 계산해서 적용하고 5째봉 이후 부터는 쭉 ma5를 적용하고 싶습니다. 즉, 시가가 양봉이면 양봉으로, 음봉이면 음봉으로 표시 시가+2봉 : ma2를 적용 시가+2+3봉 : ma3을 적용 시가+2+3+4봉 : ma4를 적용 시가+2+3+4+5봉 : ma5를 적용 6봉 부터는 종가까지 ma5를 적용하여 뿌려줍니다. -------- 아래 ------------ input : MaPeriod(6),MaPeriod2(2); var : maOpen(0),maClose(0),maLow(0),maHigh(0); var : haOpen(0),haClose(0),haLow(0),haHigh(0); var : ExtMapBuffer5(0),ExtMapBuffer6(0),ExtMapBuffer4(0),ExtMapBuffer3(0),ExtMapBuffer2(0),ExtMapBuffer1(0); var : ExtMapBuffer7(0),ExtMapBuffer8(0); var : r(0),g(0),b(0); if Index == 0 Then { maOpen=Open; maClose=Close; maLow=Low; maHigh=High; } Else { maOpen=(maOpen[1]*(MAperiod-1)+Open)/MAPeriod; maClose=(maClose[1]*(MAperiod-1)+Close)/MAPeriod; maLow=(maLow[1]*(MAperiod-1)+Low)/MAPeriod; maHigh=(maHigh[1]*(MAperiod-1)+High)/MAPeriod; haOpen=(ExtMapBuffer5[1]+ExtMapBuffer6[1])/2; haClose=(maOpen+maHigh+maLow+maClose)/4; haHigh=Max(maHigh, Max(haOpen, haClose)); haLow=Min(maLow, Min(haOpen, haClose)); if (haOpen<haClose) then { r=255; g=94; b=0; ExtMapBuffer7=haLow; ExtMapBuffer8=haHigh; } else { r=92; g=209; b=229; ExtMapBuffer7=haHigh; ExtMapBuffer8=haLow; } ExtMapBuffer5=haOpen; ExtMapBuffer6=haClose; ExtMapBuffer1=WMA(ExtMapBuffer7,MAperiod2); ExtMapBuffer2=WMA(ExtMapBuffer8,MAperiod2); ExtMapBuffer3=WMA(ExtMapBuffer5,MAperiod2); ExtMapBuffer4=WMA(ExtMapBuffer6,MAperiod2); } PlotPaintBar(ExtMapBuffer2,ExtMapBuffer1,ExtMapBuffer3,ExtMapBuffer4,"강조",Rgb(r,g,b));