커뮤니티
참조 스토캐스틱 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");
다음글
이전글