커뮤니티

참조 스토캐스틱 RSI 문의입니다.

프로필 이미지
큰상
2018-11-06 11:12:10
221
글번호 123395
답변완료
수고하십니다. 해외선물 달러 인덱스(data2) 참조 하려고합니다. 예스글로벌 에서 오일 및 나스닥 및 S@P500 에서는 나오는데 골드에서 데이터가 안나옵니다. 수식은 아래와 같습니다. 봉수는 기본 480틱, 참조 20틱입니다. var: RSIPeriod(14),sto1(14); var: Sma1(0),Sma2(0),Sma3(0),StochRSI(0); Var: 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),WR(0),UA(0),DB(0),Para(0); if data2(date)!=data2(date[1]) then { gap = data2(Open)-data2(Close[1]); sumGap = sumGap+gap; } GO = data2(O) - sumGap; GH = data2(H) - sumGap; GL = data2(L) - sumGap; GC = data2(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");
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-11-07 10:11:44

안녕하세요 예스스탁입니다. 식을 참조데이타 이용에 맞게 수정을 했습니다 var: RSIPeriod(14),sto1(14); var: Sma1(0,data2),Sma2(0,data2),Sma3(0,data2),StochRSI(0,data2); Var: RSIcount(0,data2),DownAmt(0,data2),UpAmt(0,data2),UpSum(0,data2); var: DownSum(0,data2),UpAvg(0,data2),DownAvg(0,data2),RSIv(0,data2); var: sumGap(0,data2),gap(0,data2),GO(0,data2),GH(0,data2),GL(0,data2),GC(0,data2); if data2(date != date[1]) then { gap = data2(Open-Close[1]); sumGap = sumGap+gap; } GO = data2(O) - sumGap; GH = data2(H) - sumGap; GL = data2(L) - sumGap; GC = data2(C) - sumGap; If data2(index == RSIPeriod 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 data2(index > RSIPeriod 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 = data2(lowest(Sma1,sto1)); Sma3 = data2(Highest(Sma1,sto1)); StochRSI = ((Sma1-Sma2)/(Sma3-Sma2))*100; Plot1(StochRSI, "StochRSI"); 즐거운 하루되세요 > 큰상 님이 쓴 글입니다. > 제목 : 참조 스토캐스틱 RSI 문의입니다. > 수고하십니다. 해외선물 달러 인덱스(data2) 참조 하려고합니다. 예스글로벌 에서 오일 및 나스닥 및 S@P500 에서는 나오는데 골드에서 데이터가 안나옵니다. 수식은 아래와 같습니다. 봉수는 기본 480틱, 참조 20틱입니다. var: RSIPeriod(14),sto1(14); var: Sma1(0),Sma2(0),Sma3(0),StochRSI(0); Var: 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),WR(0),UA(0),DB(0),Para(0); if data2(date)!=data2(date[1]) then { gap = data2(Open)-data2(Close[1]); sumGap = sumGap+gap; } GO = data2(O) - sumGap; GH = data2(H) - sumGap; GL = data2(L) - sumGap; GC = data2(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");