커뮤니티

이평에 따른 RSI 변화

프로필 이미지
멎진
2024-03-28 16:41:10
892
글번호 178062
답변완료

첨부 이미지

수고 하십니다. 검색 시 이평의 유,무에 따라 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 값 출력