커뮤니티
수식 변환 좀 부탁드립니다.
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()은 ()의 조건이 성립하면 그 이후의 지나간 봉의 갯수를 의미하는데요 예스랭귀지에서는 어떻게 변환해야하는지 알려주십세요...
그럼 좋은 하루되세요.
다음글
이전글