커뮤니티

수식부탁합니다

프로필 이미지
천년대로
2018-06-28 23:38:53
205
글번호 120157
답변완료
안녕하세요> 항상 도움에 감사를 드립니다. 아래의 일봉지표를 5분봉 주기로 변환수식 부탁드립니다. Input : RSIPeriod(14),sto1(14); var : Sma1(0),Sma2(0),Sma3(0),StochRSI(0); Variables: RSIcount(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),RSIv(0); var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0); if date!=date[1] then { gap = Open-Close[1]; sumGap = sumGap+gap; } GO = O - sumGap; GH = H - sumGap; GL = L - sumGap; GC = C - sumGap; If CurrentBar == 1 AND RSIPeriod > 0 Then Begin UpSum = 0; DownSum = 0; For RSIcount = 0 To RSIPeriod - 1 Begin UpAmt = GC[RSIcount] - GC[RSIcount+1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; End; UpAvg = UpSum / RSIPeriod; DownAvg = DownSum / RSIPeriod; End Else If CurrentBar > 1 AND RSIPeriod > 0 Then Begin UpAmt = GC[0] - GC[1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpAvg = (UpAvg[1] * (RSIPeriod - 1) + UpAmt) / RSIPeriod; DownAvg = (DownAvg[1] * (RSIPeriod - 1) + DownAmt) / RSIPeriod; End; If UpAvg + DownAvg <> 0 Then RSIv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIv = 0; Sma1 = RSIV; Sma2 = lowest(Sma1,sto1); Sma3 = Highest(Sma1,sto1); StochRSI = ((Sma1-Sma2)/(Sma3-Sma2))*100; Plot1(StochRSI, "StochRSI"); PlotBaseLine1(20, "기준선20"); PlotBaseLine2(80, "기준선80"); PlotBaseLine3(50, "기준선50");
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-06-29 10:01:48

안녕하세요 예스스탁입니다. 5분봉 주기가 어떤 의미인지 모르겠습니다. 올려주신 식은 일봉지표가 아닙니다. 분봉에서 사용하는 지표이고 단지 수식에 사용하는 값을 갭보정값을 이용하는 수식일 뿐입니다. 수식의 어느부분을 수정해 드려야 할지 모르겠습니다. 즐거운 하루되세요 > 천년대로 님이 쓴 글입니다. > 제목 : 수식부탁합니다 > 안녕하세요> 항상 도움에 감사를 드립니다. 아래의 일봉지표를 5분봉 주기로 변환수식 부탁드립니다. Input : RSIPeriod(14),sto1(14); var : Sma1(0),Sma2(0),Sma3(0),StochRSI(0); Variables: RSIcount(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),RSIv(0); var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0); if date!=date[1] then { gap = Open-Close[1]; sumGap = sumGap+gap; } GO = O - sumGap; GH = H - sumGap; GL = L - sumGap; GC = C - sumGap; If CurrentBar == 1 AND RSIPeriod > 0 Then Begin UpSum = 0; DownSum = 0; For RSIcount = 0 To RSIPeriod - 1 Begin UpAmt = GC[RSIcount] - GC[RSIcount+1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; End; UpAvg = UpSum / RSIPeriod; DownAvg = DownSum / RSIPeriod; End Else If CurrentBar > 1 AND RSIPeriod > 0 Then Begin UpAmt = GC[0] - GC[1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpAvg = (UpAvg[1] * (RSIPeriod - 1) + UpAmt) / RSIPeriod; DownAvg = (DownAvg[1] * (RSIPeriod - 1) + DownAmt) / RSIPeriod; End; If UpAvg + DownAvg <> 0 Then RSIv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIv = 0; Sma1 = RSIV; Sma2 = lowest(Sma1,sto1); Sma3 = Highest(Sma1,sto1); StochRSI = ((Sma1-Sma2)/(Sma3-Sma2))*100; Plot1(StochRSI, "StochRSI"); PlotBaseLine1(20, "기준선20"); PlotBaseLine2(80, "기준선80"); PlotBaseLine3(50, "기준선50");