커뮤니티
수식부탁합니다
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");