첨부 이미지
그림1
5년동안의 최고가에 대비해서 50% 하락한 값과
여기에 RSI가 20을 돌파할때를 매수로 지정 하였습니다.
그런데 5년 최고가 대비 50% 시작하는 첫날의 RSI값을 잘못 인식하는 것인지
첨부한 사진의 데이타보기의 내용ㅇ르 보시면
RSI는 50.33인데 매수 신호가 발생합니다.
아마도 최고가 대비 50%의 첫날과 관련이 있을것 같은데요
어떻게 해결하면 되나요??
-----------------------------
for j=1 To 기간1 {
if bhi5<H[j] Then {
bhi5=H[j];
}
}
yhi5=bhi5*0.5;
if yhi5>c and Crossup(rs,20)) Then {
Buy("매수");
}
-----------------------------
답변 1
예스스탁
예스스탁 답변
2020-12-14 17:20:35
안녕하세요
예스스탁입니다.
1
var : 기간1(200),j(0),bhi5(0),yhi5(0),RS(0);
RS = RSI(20);
for j=1 To 기간1
{
if bhi5<H[j] Then
{
bhi5=H[j];
}
}
yhi5=bhi5*0.5;
Plot1(RS);
RSI함수가 내부적으로 수식에서 필요한 봉갯수 이후부터 계산되게 되어 있는데
해당 for문과 함께있는 있는 RS 지표식을 그려보시면
for문에 의해 기간1로 지정한 봉수 이후부터 계산하게 됩니다.
그러므로 별도로 RSI로만 계산된 값과 다를수 있습니다.
혹은 아래와 같이 시스템식에서 메세지로그로 출력해서 디버깅창에서
신호위치의 값을 확인해 보실수도 있습니다.
if yhi5>c and Crossup(rs,20)) Then
{
Buy("매수");
MessageLog("RS %.2f",RS);
}
2
위 부분을 해결하시려면 2가지 방법이 있습니다.
RSI값이 계산시작봉이후에 시간에 경과함에 따라 점점 값이 같아지므로
차트에 봉을 많이 띄우시는 방법이 있고
아니시면 아래와 같이 별도로 RSI값을 계산하셔도 됩니다.
var : 기간1(1200),j(0),bhi5(0),yhi5(0);
for j=1 To 기간1
{
if bhi5<H[j] Then
{
bhi5=H[j];
}
}
yhi5=bhi5*0.5;
Inputs: Length(20);
Variables: Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),RS(0);
If Index == Length AND Length > 0 Then Begin
UpSum = 0;
DownSum = 0;
For Counter = 0 To Length - 1 Begin
UpAmt = C[Counter] - C[Counter+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
End;
UpAvg = UpSum / Length;
DownAvg = DownSum / Length;
End
Else
If Index > length AND Length > 0 Then Begin
UpAmt = C[0] - C[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg[1] * (Length - 1) + UpAmt) / Length;
DownAvg = (DownAvg[1] * (Length - 1) + DownAmt) / Length;
End;
If UpAvg + DownAvg <> 0 Then
RS = 100 * UpAvg / (UpAvg + DownAvg);
Else
RS = 0;
Plot1(rs);
즐거운 하루되세요
> 여유의공간 님이 쓴 글입니다.
> 제목 : 고점 대비 하락한 선과 비교시 RSI 값의 오류 해결방법 문의입니다.
> 5년동안의 최고가에 대비해서 50% 하락한 값과
여기에 RSI가 20을 돌파할때를 매수로 지정 하였습니다.
그런데 5년 최고가 대비 50% 시작하는 첫날의 RSI값을 잘못 인식하는 것인지
첨부한 사진의 데이타보기의 내용ㅇ르 보시면
RSI는 50.33인데 매수 신호가 발생합니다.
아마도 최고가 대비 50%의 첫날과 관련이 있을것 같은데요
어떻게 해결하면 되나요??
-----------------------------
for j=1 To 기간1 {
if bhi5<H[j] Then {
bhi5=H[j];
}
}
yhi5=bhi5*0.5;
if yhi5>c and Crossup(rs,20)) Then {
Buy("매수");
}
-----------------------------