예스스탁
예스스탁 답변
2020-04-24 10:16:21
안녕하세요
예스스탁입니다.
RSI함수는 차트의 과거봉의 갯수에 따라 값이 달라지게 됩니다.
분봉에서 일봉을 구현하면 일봉차트에서 많은 봉을 조회하고 보시는값과
다르게 됩니다. 이용에 참고하시기 바랍니다.
1
Input : Length(9);
var : cnt(0),SigSum(0),count2(0),RSIsig(0);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
var : idx(0), PreUpAvg(0), preDownAvg(0),RSIV(0);
Array : C1[100](0);
if Bdate != Bdate[1] Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
PreUpAvg = UpAvg[1];
preDownAvg = DownAvg[1];
idx = idx + 1;
}
C1[0] = C;
If idx == Length+2 Then
{
UpSum = 0;
DownSum = 0;
For Counter = 0 To Length - 1
{
UpAmt = C1[Counter] - C1[Counter+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
}
UpAvg = UpSum / Length;
DownAvg = DownSum / Length;
}
If idx > Length+2 Then
{
UpAmt = C1[0] - C1[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpAvg = (PreUpAvg * (Length - 1) + UpAmt) / Length;
DownAvg = (preDownAvg * (Length - 1) + DownAmt) / Length;
}
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
plot1(RSIv,"RSI");
PlotBaseLine1(30, "기준선 30");
PlotBaseLine2(70, "기준선 70");
2
Input : Length(14);
var : cnt(0),SigSum(0),count2(0),RSIsig(0);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
var : idx(0), PreUpAvg(0), preDownAvg(0),RSIV(0);
Array : C1[100](0);
if Bdate != Bdate[1] Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
PreUpAvg = UpAvg[1];
preDownAvg = DownAvg[1];
idx = idx + 1;
}
C1[0] = C;
If idx == Length+2 Then
{
UpSum = 0;
DownSum = 0;
For Counter = 0 To Length - 1
{
UpAmt = C1[Counter] - C1[Counter+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
}
UpAvg = UpSum / Length;
DownAvg = DownSum / Length;
}
If idx > Length+2 Then
{
UpAmt = C1[0] - C1[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpAvg = (PreUpAvg * (Length - 1) + UpAmt) / Length;
DownAvg = (preDownAvg * (Length - 1) + DownAmt) / Length;
}
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
if crossup(RSIV,30) Then
buy();
if CrossDown(RSIV,70) Then
sell();
3
Input : Period(14);
Var : value1(0), value2(0),RSIY(0);
value1 = C - C[1];
if value1 > 0 Then
{
value2 = value1;
}
Else
{
value1 = 0;
value2 = C[1]-C;
}
RSIY = AccumN(value1, Period) / AccumN(value2, Period) * 100;
plot1(RSIY,"RSI");
PlotBaseLine1(30, "기준선 30");
PlotBaseLine2(70, "기준선 70");
4
Input : Period(14);
Var : RSIY(0),cnt(0);
value1 = 0;
value2 = 0;
for cnt = 0 to Period-1
{
var1 = DayClose(cnt)-DayClose(cnt+1);
if var1 > 0 Then
value1 = value1 + var1;
value2 = value2 + abs(var1);
}
RSIY = value1 / value2 * 100;
if crossup(RSIY,30) Then
buy();
if CrossDown(RSIY,70) Then
sell();
즐거운 하루되세요
> 하운드독 님이 쓴 글입니다.
> 제목 : RSI and RSI Y 일봉to 5분봉 (지표 and 시스템)
> 표제건과 같이
예스트레이더 내장 함수인 RSI 와 RSI_Y 2개건에 대해 각각 수식 문의 드립니다.
1-1 RSI (일봉:14) 의 5분봉차트에 --지표-- 표시
1-2 5분봉차트에 RSI (일봉:14) 의 일봉기준으로
30선 crossup 매수, 70선 crossdown 매도 하는 --시스템--
2-1 RSI_Y (일봉:14) 의 5분봉차트에 --지표 --표시
2-2 5분봉차트에 RSI_Y (일봉:14) 의 일봉기준으로
30선 crossup 매수, 70선 crossdown 매도 하는 --시스템 --