첨부 이미지
그림1
그림2
수고 하십니다.
검색 시 이평의 유,무에 따라 RSI 값의 변화가 생겨 문의합니다
이평 (MAv = ma(C,Period);)을 넣어도 정상적인 RSI 값이 나오도록 수정 부탁합니다
종목 : MNQ.1
봉 : 3분
날짜 : 24-03-18 07:00:00
~ 24-03-23 23 06:00:00
<<< 정 상 >>>
Input : Period(20), RPeriod(9);
var : MAv(0), Relative(0);
// MAv = ma(C,Period);
Relative = RSI(RPeriod);
MessageLog("RSI=%.2f",Relative);
===> 07:33 봉 부터 정상적인 RSI 값 출력
===========================================
<<< 이 상 >>>
Input : Period(20), RPeriod(9);
var : MAv(0), Relative(0);
MAv = ma(C,Period);
Relative = RSI(RPeriod);
MessageLog("RSI=%.2f",Relative);
===> 08:00 봉 부터 비정상적인 RSI 값 출력
답변 1
예스스탁
예스스탁 답변
2024-03-28 17:15:50
안녕하세요
예스스탁입니다.
1
랭귀지 편집기에서 RSI함수식을 열어보시면
CurrentBar라는 함수가 사용되어 있습니다.
CurrentBar는 수식에서 필요한 최소한의 봉수 이후에 1씩 증가하는 함수입니다.
#var1 = ma(C,20);
Var2 = RSI(9);
Plot1(CurrentBar);
위 지표에서 20이평 주석을 풀어보시면 CurrentBar가
1씩 증가하는 시점이 다른것을 보실 수 있습니다.
수식내 이전값 참조등이 있는 경우 필요한 봉수가 충족되지 못한 상태에서
참조되면 값이 N/A가 발생하므로 해당 함수로 제어하게 됩니다.
이렇게 CurrentBar함수가 사용된 함수식들이 사용된
지표식이나 시스템식등에서 과거봉수를 더 많이 요구하는 함수나 내용이 있으면
해당 영향을 받아 계산을 시작하는 시점이 변경이 되게 됩니다.
RSI와 같이 지정한 봉수이후에는 이전값에 현재값을 가감하는 내용의 함수식들은
계산의 시작점이 달라지므로 차트상 초기에 값이 다르게 되고
일정봉수 이상 경과하면 값이 같아지게 됩니다.
기본으로 제공되는 함수식은 변경할 수 없습니다.
CurrentBar함수를 사용하지 않는 별도의 함수식을 만드셔서 사용하셔야 합니다.
2
아래 RSI2라는 함수를 별도로 만들어 사용하시기 바랍니다.
사용은 RSI와 같습니다.
사용자함수명 : RSI2
반환값형 : 숫자형
Inputs: Length(NumericSimple);
Variables: Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
if Index >= Length+1 Then
{
If Index == Length+1 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+1 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
RSI2 = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSI2 = 0;
}
즐거운 하루되세요
> 멎진 님이 쓴 글입니다.
> 제목 : 이평에 따른 RSI 변화
> 수고 하십니다.
검색 시 이평의 유,무에 따라 RSI 값의 변화가 생겨 문의합니다
이평 (MAv = ma(C,Period);)을 넣어도 정상적인 RSI 값이 나오도록 수정 부탁합니다
종목 : MNQ.1
봉 : 3분
날짜 : 24-03-18 07:00:00
~ 24-03-23 23 06:00:00
<<< 정 상 >>>
Input : Period(20), RPeriod(9);
var : MAv(0), Relative(0);
// MAv = ma(C,Period);
Relative = RSI(RPeriod);
MessageLog("RSI=%.2f",Relative);
===> 07:33 봉 부터 정상적인 RSI 값 출력
===========================================
<<< 이 상 >>>
Input : Period(20), RPeriod(9);
var : MAv(0), Relative(0);
MAv = ma(C,Period);
Relative = RSI(RPeriod);
MessageLog("RSI=%.2f",Relative);
===> 08:00 봉 부터 비정상적인 RSI 값 출력