커뮤니티
수식 문의
2011-08-08 00:36:54
689
글번호 41710
갭보정된 RSI 볼린저밴드 지표의 수식을 구하고 싶습니다.
-------------------------------------------------
RSI + 볼린저밴드
input : RSI_Period(8),BB_Period(20),D1(2);
var : RSIv(0),upv(0),dnv(0);
RSIv = RSI(RSI_Period);
upv = Ma(RSIv,BB_Period) + D1 * std(RSIv,BB_Period);
dnv = ma(RSIv,BB_Period) - D1 * std(RSIv,BB_Period) ;
plot1(RSIV);
plot2(upv);
plot3(dnv);
plot4(RSIV);
PlotBaseLine1(70);
PlotBaseLine2(30);
답변 1
예스스탁 예스스탁 답변
2011-08-08 16:13:16
안녕하세요
예스스탁입니다.
Inputs: RSIPeriod(8),BB_Period(20),D1(2);
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),upv(0),dnv(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;
upv = Ma(RSIv,BB_Period) + D1 * std(RSIv,BB_Period);
dnv = ma(RSIv,BB_Period) - D1 * std(RSIv,BB_Period) ;
plot1(RSIV);
plot2(upv);
plot3(dnv);
PlotBaseLine1(70);
PlotBaseLine2(30);
즐거운 하루되세요
> 흑수돌 님이 쓴 글입니다.
> 제목 : 수식 문의
>
갭보정된 RSI 볼린저밴드 지표의 수식을 구하고 싶습니다.
-------------------------------------------------
RSI + 볼린저밴드
input : RSI_Period(8),BB_Period(20),D1(2);
var : RSIv(0),upv(0),dnv(0);
RSIv = RSI(RSI_Period);
upv = Ma(RSIv,BB_Period) + D1 * std(RSIv,BB_Period);
dnv = ma(RSIv,BB_Period) - D1 * std(RSIv,BB_Period) ;
plot1(RSIV);
plot2(upv);
plot3(dnv);
plot4(RSIV);
PlotBaseLine1(70);
PlotBaseLine2(30);