예스스탁
예스스탁 답변
2023-04-03 14:23:41
안녕하세요
예스스탁입니다.
input : N1(5),N2(10);#기본차트 기준 n배
Input : Length1(14),Length2(14);
var : cnt(0),didx(0),D1(0),TF1(0),TF2(0),tx(0);
Var : cnt1(0), idx1(0), DownAmt1(0), UpAmt1(0), UpSum1(0), DownSum1(0);
var : UpAvg1(0), DownAvg1(0), PreUpAvg1(0), preDownAvg1(0),RSIV1(0);
Var : cnt2(0), idx2(0), DownAmt2(0), UpAmt2(0), UpSum2(0), DownSum2(0);
var : UpAvg2(0), DownAvg2(0), PreUpAvg2(0), preDownAvg2(0),RSIV2(0);
Array : C1[100](0),C2[100](0);
if Bdate != Bdate[1] Then
{
D1 = sdate;
didx = 0;
}
Else
didx = didx+1;
if D1 > 0 then
{
TF1 = didx%N1;
TF2 = didx%N2;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF1 < TF1[1]) Then
{
for cnt = 99 downto 1
{
C1[cnt] = C1[cnt-1][1];
}
PreUpAvg1 = UpAvg1[1];
preDownAvg1 = DownAvg1[1];
idx1 = idx1 + 1;
}
C1[0] = C;
If idx1 == Length1+2 Then
{
UpSum1 = 0;
DownSum1 = 0;
For cnt1 = 0 To Length1 - 1
{
UpAmt1 = C1[cnt1] - C1[cnt1+1];
If UpAmt1 >= 0 Then
DownAmt1 = 0;
Else{
DownAmt1 = -UpAmt1;
UpAmt1 = 0;
}
UpSum1 = UpSum1 + UpAmt1;
DownSum1 = DownSum1 + DownAmt1;
}
UpAvg1 = UpSum1 / Length1;
DownAvg1 = DownSum1 / Length1;
}
If idx1 > Length1+2 Then
{
UpAmt1 = C1[0] - C1[1];
If UpAmt1 >= 0 Then
DownAmt1 = 0;
Else
{
DownAmt1 = -UpAmt1;
UpAmt1 = 0;
}
UpAvg1 = (PreUpAvg1 * (Length1 - 1) + UpAmt1) / Length1;
DownAvg1 = (preDownAvg1 * (Length1 - 1) + DownAmt1) / Length1;
}
If UpAvg1 + DownAvg1 <> 0 Then
RSIv1 = 100 * UpAvg1 / (UpAvg1 + DownAvg1);
Else
RSIv1 = 0;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF2 < TF2[1]) Then
{
for cnt = 99 downto 1
{
C2[cnt] = C2[cnt-1][1];
}
PreUpAvg2 = UpAvg2[1];
preDownAvg2 = DownAvg2[1];
idx2 = idx2 + 1;
}
C2[0] = C;
If idx2 == Length2+2 Then
{
UpSum2 = 0;
DownSum2 = 0;
For cnt2 = 0 To Length2 - 1
{
UpAmt2 = C2[cnt2] - C2[cnt2+1];
If UpAmt2 >= 0 Then
DownAmt2 = 0;
Else
{
DownAmt2 = -UpAmt2;
UpAmt2 = 0;
}
UpSum2 = UpSum2 + UpAmt2;
DownSum2 = DownSum2 + DownAmt2;
}
UpAvg2 = UpSum2 / Length2;
DownAvg2 = DownSum2 / Length2;
}
If idx2 > Length2+2 Then
{
UpAmt2 = C2[0] - C2[1];
If UpAmt2 >= 0 Then
DownAmt2 = 0;
Else
{
DownAmt2 = -UpAmt2;
UpAmt2 = 0;
}
UpAvg2 = (PreUpAvg2 * (Length2 - 1) + UpAmt2) / Length2;
DownAvg2 = (preDownAvg2 * (Length2 - 1) + DownAmt2) / Length2;
}
If UpAvg2 + DownAvg2 <> 0 Then
RSIv2 = 100 * UpAvg2 / (UpAvg2 + DownAvg2);
Else
RSIv2 = 0;
if CrossUp(RSIV1,30) and RSIV2 < 30 Then
{
tx = Text_New(sDate,sTime,H,"●");
Text_SetStyle(tx,2,1);
Text_SetColor(tx,Red);
}
}
즐거운 하루되세요
> 고성 님이 쓴 글입니다.
> 제목 : rsi 타주기
> rsi 지수가, 100틱 차트와 50틱 차트에서 동시에 30 이하일 때, 50틱 차트의 rsi 지수가 30을 먼저 상향 돌파하면, 10틱 차트에 동그라미 표시. (10틱 차트는 rsi와는 무관. 표시만)
10틱 차트에 안되면 50틱 차트에 동그라미 표시. 감사합니다.