커뮤니티
문의드립니다.
2014-02-05 14:30:02
166
글번호 72201
안녕하세요,,,새해 복 많이 받으세요~
rsi지표에서요,,,
1. 시간봉 rsi를 분봉에서 볼수 있게 (입력변수가 시간이 되겠지요)
2. 일봉 rsi를 분봉에서 볼수 있게
3. 주봉 rsi를 분봉에서 볼수 있게
해주시면 감사하겠습니다. 맨날 귀찮은 질문을 해드려서 죄송합니다.
답변 2
예스스탁 예스스탁 답변
2014-02-05 16:20:57
안녕하세요
예스스탁입니다.
주차트의 데이터로 타주기의 값을 계산하는 것은
차트의 봉수등의 문제로 값의 차이가 발생할 수 있습니다.
이용에 참고하시기 바랍니다.
1. 60분봉
Inputs:Atime(60), Length(14);
input : sig(10);
var : SigSum(0),count2(0),RSIsig(0);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0), RSI(0);
var : Dindex(0), PreUpAvg(0), preDownAvg(0),cnt1(0),TF(0);
Array : CC[100](0),RSIV[100](0);
if date != date[1] Then;
var1 = TimeToMinutes(stime);
TF = (TimeToMinutes(stime)-var1)%Atime;
if dayindex() == 0 or (TF <= TF[1] and stime > stime[1]) Then{
for cnt1 = 1 to 99{
CC[cnt1] = CC[cnt1-1][1];
}
PreUpAvg = UpAvg[1];
preDownAvg = DownAvg[1];
Dindex = dindex + 1;
}
CC[0] = C;
If Dindex == Length 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
If Dindex > Length Then {
UpAmt = CC[0]-Cc[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
if Dindex <=1 Then {
UpAvg = 1;
DownAvg = 1;
}
Else {
UpAvg = (PreUpAvg * (Length - 1) + UpAmt) / Length;
DownAvg = (preDownAvg * (Length - 1) + DownAmt) / Length;
}
}
If UpAvg + DownAvg <> 0 Then
RSIv[0] = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv[0] = 0;
SigSum = 0;
for count2 = 0 to sig-1{
SigSum = SigSum+RSIv[count2];
}
RSIsig = SigSum/Sig;
plot1(RSI,"RSI");
plot2(RSIsig,"sig");
2. 일봉
Inputs: Length(9);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
var : RSIv(0),didx(0), UpAvg1(0), DownAvg1(0);
if date != date[1] Then{
didx = didx+1;
UpAvg1 = UpAvg[1];
DownAvg1 = DownAvg[1];
}
If didx <= 1 AND Length > 0 Then Begin
UpSum = 0;
DownSum = 0;
For Counter = 0 To Length - 1 Begin
UpAmt = DayClose(Counter) - DayClose(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 didx > 1 AND Length > 0 Then Begin
UpAmt = DayClose(0) - DayClose(1);
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg1 * (Length - 1) + UpAmt) / Length;
DownAvg = (DownAvg1 * (Length - 1) + DownAmt) / Length;
End;
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
plot1(RSIV);
PlotBaseLine1(30, "기준선 30");
PlotBaseLine2(70, "기준선 70");
3. 주봉
Inputs:Length(9);
Variables: Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0), wRSI(0);
var : Dindex(0), PreUpAvg(0), preDownAvg(0),cnt1(0);
Array : CC[100](0);
if DayOfWeek(sdate) <= DayOfWeek(sdate[1]) and sdate > sdate[1] Then{
for cnt1 = 1 to 99{
CC[cnt1] = CC[cnt1-1][1];
}
PreUpAvg = UpAvg[1];
preDownAvg = DownAvg[1];
Dindex = dindex + 1;
}
CC[0] = C;
If Dindex <= Length 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
If Dindex > Length Then {
UpAmt = CC[0]-Cc[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
if Dindex <=1 Then {
UpAvg = 1;
DownAvg = 1;
}
Else {
UpAvg = (PreUpAvg * (Length - 1) + UpAmt) / Length;
DownAvg = (preDownAvg * (Length - 1) + DownAmt) / Length;
}
}
If UpAvg + DownAvg <> 0 Then
wRSI = 100 * UpAvg / (UpAvg + DownAvg);
Else
wRSI = 0;
plot1(wRSI,"RSI");
PlotBaseLine1(30, "기준선 30", gray);
PlotBaseLine2(70, "기준선 70", gray);
즐거운 하루되세요
> 예스매니아 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 안녕하세요,,,새해 복 많이 받으세요~
rsi지표에서요,,,
1. 시간봉 rsi를 분봉에서 볼수 있게 (입력변수가 시간이 되겠지요)
2. 일봉 rsi를 분봉에서 볼수 있게
3. 주봉 rsi를 분봉에서 볼수 있게
해주시면 감사하겠습니다. 맨날 귀찮은 질문을 해드려서 죄송합니다.
예스스탁 예스스탁 답변
2014-02-17 16:48:13
안녕하세요
예스스탁입니다.
다시 작성했습니다.
60분 주기의 RSI입니다.
input : Atime(60),RSIP(9),RSISP(10);
var : rSI2(0),RSIS2(0);
var : RSigSum(0),Rcount2(0),RSIsig(0);
Var : RCounter(0), RDownAmt(0), RUpAmt(0), RUpSum(0), RDownSum(0), RUpAvg(0), RDownAvg(0);
var : RDindex(0), RPreUpAvg(0), RpreDownAvg(0),Rcnt1(0),TF(0);
Array : RC[100](0),RSIV1[100](0);
TF = TimeToMinutes(stime)%Atime;
if dayindex() == 0 or (TF < TF[1] and stime > stime[1]) Then{
for Rcnt1 = 1 to 99{
RC[Rcnt1] = RC[Rcnt1-1][1];
RSIv1[Rcnt1] = RSIv1[Rcnt1-1][1];
}
RPreUpAvg = RUpAvg[1];
RpreDownAvg = RDownAvg[1];
RDindex = Rdindex + 1;
}
RC[0] = C;
If RDindex == RSIP Then Begin
RUpSum = 0;
RDownSum = 0;
For RCounter = 0 To RSIP - 1 Begin
RUpAmt = C[RCounter] - C[RCounter+1];
If RUpAmt >= 0 Then
RDownAmt = 0;
Else Begin
RDownAmt = -RUpAmt;
RUpAmt = 0;
End;
RUpSum = RUpSum + RUpAmt;
RDownSum = RDownSum + RDownAmt;
End;
RUpAvg = RUpSum / RSIP;
RDownAvg = RDownSum / RSIP;
End
If RDindex > RSIP Then {
RUpAmt = RC[0]-Rc[1];
If RUpAmt >= 0 Then
RDownAmt = 0;
Else
{
RDownAmt = -RUpAmt;
RUpAmt = 0;
}
if RDindex <=1 Then {
RUpAvg = 1;
RDownAvg = 1;
}
Else {
RUpAvg = (RPreUpAvg * (RSIP - 1) + RUpAmt) / RSIP;
RDownAvg = (RpreDownAvg * (RSIP - 1) + RDownAmt) / RSIP;
}
}
If RUpAvg + RDownAvg <> 0 Then
RSIv1[0] = 100 * RUpAvg / (RUpAvg + RDownAvg);
Else
RSIv1[0] = 0;
RSI2 = RSIv1[0];
RSigSum = 0;
for Rcount2 = 0 to RSISP-1{
RSigSum = RSigSum+RSIv1[Rcount2];
}
RSIS2 = RSigSum/RSISP;
plot1(RSI2);
plot2(RSIS2);
즐거운 하루되세요
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다.
>
안녕하세요
예스스탁입니다.
주차트의 데이터로 타주기의 값을 계산하는 것은
차트의 봉수등의 문제로 값의 차이가 발생할 수 있습니다.
이용에 참고하시기 바랍니다.
1. 60분봉
Inputs:Atime(60), Length(14);
input : sig(10);
var : SigSum(0),count2(0),RSIsig(0);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0), RSI(0);
var : Dindex(0), PreUpAvg(0), preDownAvg(0),cnt1(0),TF(0);
Array : CC[100](0),RSIV[100](0);
if date != date[1] Then;
var1 = TimeToMinutes(stime);
TF = (TimeToMinutes(stime)-var1)%Atime;
if dayindex() == 0 or (TF <= TF[1] and stime > stime[1]) Then{
for cnt1 = 1 to 99{
CC[cnt1] = CC[cnt1-1][1];
}
PreUpAvg = UpAvg[1];
preDownAvg = DownAvg[1];
Dindex = dindex + 1;
}
CC[0] = C;
If Dindex == Length 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
If Dindex > Length Then {
UpAmt = CC[0]-Cc[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
if Dindex <=1 Then {
UpAvg = 1;
DownAvg = 1;
}
Else {
UpAvg = (PreUpAvg * (Length - 1) + UpAmt) / Length;
DownAvg = (preDownAvg * (Length - 1) + DownAmt) / Length;
}
}
If UpAvg + DownAvg <> 0 Then
RSIv[0] = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv[0] = 0;
SigSum = 0;
for count2 = 0 to sig-1{
SigSum = SigSum+RSIv[count2];
}
RSIsig = SigSum/Sig;
plot1(RSI,"RSI");
plot2(RSIsig,"sig");
2. 일봉
Inputs: Length(9);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
var : RSIv(0),didx(0), UpAvg1(0), DownAvg1(0);
if date != date[1] Then{
didx = didx+1;
UpAvg1 = UpAvg[1];
DownAvg1 = DownAvg[1];
}
If didx <= 1 AND Length > 0 Then Begin
UpSum = 0;
DownSum = 0;
For Counter = 0 To Length - 1 Begin
UpAmt = DayClose(Counter) - DayClose(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 didx > 1 AND Length > 0 Then Begin
UpAmt = DayClose(0) - DayClose(1);
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg1 * (Length - 1) + UpAmt) / Length;
DownAvg = (DownAvg1 * (Length - 1) + DownAmt) / Length;
End;
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
plot1(RSIV);
PlotBaseLine1(30, "기준선 30");
PlotBaseLine2(70, "기준선 70");
3. 주봉
Inputs:Length(9);
Variables: Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0), wRSI(0);
var : Dindex(0), PreUpAvg(0), preDownAvg(0),cnt1(0);
Array : CC[100](0);
if DayOfWeek(sdate) <= DayOfWeek(sdate[1]) and sdate > sdate[1] Then{
for cnt1 = 1 to 99{
CC[cnt1] = CC[cnt1-1][1];
}
PreUpAvg = UpAvg[1];
preDownAvg = DownAvg[1];
Dindex = dindex + 1;
}
CC[0] = C;
If Dindex <= Length 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
If Dindex > Length Then {
UpAmt = CC[0]-Cc[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
if Dindex <=1 Then {
UpAvg = 1;
DownAvg = 1;
}
Else {
UpAvg = (PreUpAvg * (Length - 1) + UpAmt) / Length;
DownAvg = (preDownAvg * (Length - 1) + DownAmt) / Length;
}
}
If UpAvg + DownAvg <> 0 Then
wRSI = 100 * UpAvg / (UpAvg + DownAvg);
Else
wRSI = 0;
plot1(wRSI,"RSI");
PlotBaseLine1(30, "기준선 30", gray);
PlotBaseLine2(70, "기준선 70", gray);
즐거운 하루되세요
> 예스매니아 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 안녕하세요,,,새해 복 많이 받으세요~
rsi지표에서요,,,
1. 시간봉 rsi를 분봉에서 볼수 있게 (입력변수가 시간이 되겠지요)
2. 일봉 rsi를 분봉에서 볼수 있게
3. 주봉 rsi를 분봉에서 볼수 있게
해주시면 감사하겠습니다. 맨날 귀찮은 질문을 해드려서 죄송합니다.