커뮤니티

수식 변환 좀 부탁드립니다.

프로필 이미지
예그리나
2015-06-18 16:31:03
145
글번호 87384
답변완료
원식은 아래와 같습니다. data:=CLOSE; lenRSI:=3; lenStreak:=2; WildersRSI:=RSI(data, lenRSI); ch:=ROC(1); up=BarsSince(ch<=0); dn=BarsSince(ch>=0); StreakRSI=RSI(up-dn, lenStreak); 보시는 것처럼 예스랭귀지로 변환하는데 2가지 문제가 있습니다. 1. 보통 rsi는 종가를 기본으로 하는데 그 대신이 원하는 데이타값을 넣어서 RSI를 구해야한다는것과 2. 영웅문의 BarsSince()은 ()의 조건이 성립하면 그 이후의 지나간 봉의 갯수를 의미하는데요 예스랭귀지에서는 어떻게 변환해야하는지 알려주십세요... 그럼 좋은 하루되세요.
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-06-18 17:50:57

안녕하세요 예스스탁입니다. Input : lenRSI(3); var : CH(0),UPv(0),Dnv(0),data(0),StreakRSI(0); Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),RSIV(0); CH = PROC(1); if CH <= 0 Then Upv = 0; UPv = UPv+1; if CH >= 0 Then Dnv = 0; Dnv = Dnv+1; data = upv-dnv; If CurrentBar == 1 AND lenRSI > 0 Then Begin UpSum = 0; DownSum = 0; For Counter = 0 To lenRSI - 1 Begin UpAmt = data[Counter] - data[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; End; UpAvg = UpSum / lenRSI; DownAvg = DownSum / lenRSI; End Else If CurrentBar > 1 AND lenRSI > 0 Then Begin UpAmt = data[0] - data[1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpAvg = (UpAvg[1] * (lenRSI - 1) + UpAmt) / lenRSI; DownAvg = (DownAvg[1] * (lenRSI - 1) + DownAmt) / lenRSI; End; If UpAvg + DownAvg <> 0 Then RSIv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIv = 0; StreakRSI = RSIV; plot1(StreakRSI); PlotBaseLine1(30, "기준선1"); PlotBaseLine2(70, "기준선2"); 즐거운 하루되세요 > 예그리나 님이 쓴 글입니다. > 제목 : 수식 변환 좀 부탁드립니다. > 원식은 아래와 같습니다. data:=CLOSE; lenRSI:=3; lenStreak:=2; WildersRSI:=RSI(data, lenRSI); ch:=ROC(1); up=BarsSince(ch<=0); dn=BarsSince(ch>=0); StreakRSI=RSI(up-dn, lenStreak); 보시는 것처럼 예스랭귀지로 변환하는데 2가지 문제가 있습니다. 1. 보통 rsi는 종가를 기본으로 하는데 그 대신이 원하는 데이타값을 넣어서 RSI를 구해야한다는것과 2. 영웅문의 BarsSince()은 ()의 조건이 성립하면 그 이후의 지나간 봉의 갯수를 의미하는데요 예스랭귀지에서는 어떻게 변환해야하는지 알려주십세요... 그럼 좋은 하루되세요.