예스스탁
예스스탁 답변
2022-02-07 12:15:22
안녕하세요
예스스탁입니다.
차트에 지정한 기간의 값을 계산할 만큼 충분한 데이타가 있어야
계산 및 지표출력이 가능합니다.
input : N(20),분(120);
var : cnt(0);
var : Hmaxd(0),Lmaxd(0),Hsumd(0),Lsumd(0),Hmavd(0),Lmavd(0);
var : Hmaxw(0),Lmaxw(0),Hsumw(0),Lsumw(0),Hmavw(0),Lmavw(0);
var : Hmaxm(0),Lmaxm(0),Hsumm(0),Lsumm(0),Hmavm(0),Lmavm(0);
var : Hmaxn(0),Lmaxn(0),Hsumn(0),Lsumn(0),Hmavn(0),Lmavn(0);
Array : WH[100](0),WL[100](0),WC[100](0);
Array : MH[100](0),ML[100](0),MC[100](0);
Array : NH[100](0),NL[100](0),NC[100](0);
if DayClose(N+1) > 0 Then
{
Hmaxd = 0;
Hsumd = 0;
Lmaxd = 0;
Lsumd = 0;
For cnt = 1 to N
{
Hsumd = Hsumd + abs(DayHigh(cnt)-DayClose(cnt+1));
Lsumd = Lsumd + abs(DayLow(cnt)-DayClose(cnt+1));
if cnt == 1 or (cnt > 1 and abs(DayHigh(cnt)-DayClose(cnt+1)) > Hmaxd) Then
Hmaxd = abs(DayHigh(cnt)-DayClose(cnt+1));
if cnt == 1 or (cnt > 1 and abs(DayLow(cnt)-DayClose(cnt+1)) > Lmaxd) Then
Lmaxd = abs(DayLow(cnt)-DayClose(cnt+1));
}
Hmavd = Hsumd/N;
Lmavd = Lsumd/N;
Plot1(DayClose(1)+Hmaxd);
Plot2(DayClose(1)-Lmaxd);
Plot3(DayClose(1)+Hmavd);
Plot4(DayClose(1)-Lmavd);
}
if DayOfWeek(Bdate) < DayOfWeek(Bdate[1]) Then
{
WH[0] = H;
WL[0] = L;
For cnt = 1 to 99
{
WH[cnt] = WH[cnt-1][1];
WL[cnt] = WL[cnt-1][1];
WC[cnt] = WC[cnt-1][1];
}
}
if WH[0] > 0 and H > WH[0] Then
WH[0] = H;
if WL[0] > 0 and L < WL[0] Then
WL[0] = L;
WC[0] = C;
if WC[N+1] > 0 Then
{
Hmaxw = 0;
Hsumw = 0;
Lmaxw = 0;
Lsumw = 0;
For cnt = 1 to N
{
Hsumw = Hsumw + abs(WH[cnt]-WC[cnt+1]);
Lsumw = Lsumw + abs(WL[cnt]-WC[cnt+1]);
if cnt == 1 or (cnt > 1 and abs(WH[cnt]-WC[cnt+1]) > Hmaxw) Then
Hmaxw = abs(WH[cnt]-WC[cnt+1]);
if cnt == 1 or (cnt > 1 and abs(WL[cnt]-WC[cnt+1]) > Lmaxw) Then
Lmaxw = abs(WL[cnt]-WC[cnt+1]);
}
Hmavw = Hsumw/N;
Lmavw = Lsumw/N;
Plot5(WC[1]+Hmaxw);
}
if Bdate > Bdate[1]+30 Then
{
MH[0] = H;
ML[0] = L;
For cnt = 1 to 99
{
MH[cnt] = MH[cnt-1][1];
ML[cnt] = ML[cnt-1][1];
MC[cnt] = MC[cnt-1][1];
}
}
if MH[0] > 0 and H > MH[0] Then
MH[0] = H;
if ML[0] > 0 and L < ML[0] Then
ML[0] = L;
MC[0] = C;
if MC[N+1] > 0 Then
{
HmaxM = 0;
HsumM = 0;
LmaxM = 0;
LsumM = 0;
For cnt = 1 to N
{
HsumM = HsumM + abs(MH[cnt]-MC[cnt+1]);
LsumM = LsumM + abs(ML[cnt]-MC[cnt+1]);
if cnt == 1 or (cnt > 1 and abs(MH[cnt]-MC[cnt+1]) > Hmaxm) Then
Hmaxm = abs(MH[cnt]-MC[cnt+1]);
if cnt == 1 or (cnt > 1 and abs(ML[cnt]-MC[cnt+1]) > Lmaxm) Then
Lmaxm = abs(ML[cnt]-MC[cnt+1]);
}
Hmavm = Hsumm/N;
Lmavm = Lsumm/N;
Plot6(MC[1]+Hmaxm);
}
var : S1(0),D1(0),TM(0),TF(0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%분;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and 분 > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and 분 > 1 and TM >= TM[1]+분) or
(Bdate == Bdate[1] and 분 == 1 and TM > TM[1]) Then
{
nH[0] = H;
nL[0] = L;
For cnt = 1 to 99
{
nH[cnt] = nH[cnt-1][1];
nL[cnt] = nL[cnt-1][1];
nC[cnt] = nC[cnt-1][1];
}
}
if nH[0] > 0 and H > nH[0] Then
nH[0] = H;
if nL[0] > 0 and L < nL[0] Then
nL[0] = L;
nC[0] = C;
if nC[N+1] > 0 Then
{
Hmaxn = 0;
Hsumn = 0;
Lmaxn = 0;
Lsumn = 0;
For cnt = 1 to N
{
Hsumn = Hsumn + abs(nH[cnt]-nC[cnt+1]);
Lsumn = Lsumn + abs(nL[cnt]-nC[cnt+1]);
if cnt == 1 or (cnt > 1 and abs(nH[cnt]-nC[cnt+1]) > Hmaxn) Then
Hmaxn = abs(nH[cnt]-nC[cnt+1]);
if cnt == 1 or (cnt > 1 and abs(nL[cnt]-nC[cnt+1]) > Lmaxn) Then
Lmaxn = abs(nL[cnt]-nC[cnt+1]);
}
Hmavn = Hsumn/N;
Lmavn = Lsumn/N;
Plot7(nC[1]+Hmaxn);
}
}
즐거운 하루되세요
> jdavid 님이 쓴 글입니다.
> 제목 : N일간의 종가대비 최대등락/평균등락 가격표시
> 감사합니다
지난 20일간의 주가 변동 폭을 아래와 같은 방법으로
당일에 표시하고자 합니다.
1. 20일 동안 가장 컸던 고가폭 지표
지난 20일간의 전전일 종가대비
전일 고가의 가격 변동한 값들(X원, Y원..) 중에서
가장 크게 변동한 가격 값(Z원)을 찾아
당일에 전일 종가대비 가장 컸던 고가폭 지표(전일종가+Z원)로 표시
예) 전전일종가가 10,000원이고 전일고가가 11,000원이면
X원은 1,000원
전전전일종가가 12,000원이고 전전일고가가 14,000원이면
Y원은 2,000원...
위와 같이 20일 동안의 값을 구한 다음
기간(20일동안)중 가장 크게 변동한 값 Z원을 찾고(20일 동안의 Z원은 2,000원이라면)
전일종가 13,000원에
가장 크게 변동한 값 Z원 2,000원을 더하여
전일종가대비 기간(20일동안) 가장컸던 고가폭 지표로 표시 15,000원
2. 20일 동안 가장 컸던 저가폭 지표. 1번과 같은 예로...
지난 20일간의 전전일 종가대비
전일 저가의 가격 변동한 값들(X원, Y원..) 중에서
가장 크게 변동한 가격 값(Z원)을 찾아
당일에 전일 종가대비 변동이 가장 컸던 저가폭 지표(전일종가-Z원)로 표시
3. 20일 동안 전일종가대비 평균 고가폭 지표
지난 20일간의 전전일 종가대비
전일 고가의 가격 변동한 값들(X원,Y원...)의
평균 변동 가격 값(Z원)을 찾아
당일에 전일 종가대비 평균고가폭 지표(전일종가+Z원)로 표시
예)
전전일종가가 10,000원이고 전일고가가 11,000원이면
X원은 1,000원
전전전일종가가 12,000원이고 전전일고가가 14,000원이면
Y원은 2,000원
위와 같이 20일 동안의 값을 구한 다음
평균 변동 가격 값 Z원을 찾고[20일동안의 Z원은 1500원이라면, (X원+Y원)/2]
전일종가가 13,000원이라면
전일종가 13,000원에 평균변동가격 값 Z원 1,500원을 더하여
기간(20일동안)중 전일종가대비 평균 고가폭 지표로 표시 14,500원
4. 20일 동안 전일종가대비 평균 고가폭 지표. 3번과 같은 예로...
지난 20일간의 전전일 종가대비
전일 저가의 가격 변동한 값들(X원,Y원...)의
평균 변동 가격 값(Z원)을 찾아
당일에 전일 종가대비 평균저가폭 지표(전일종가-Z원)로 표시
5. 20주 동안 가장 컸던 고가폭 지표. 1번 지표의 주봉단위 지표
6. 20월 동안 가장 컸던 고가폭 지표. 1번 지표의 월봉단위 지표
7. 120분봉에서 20개봉 동안 가장 컸던 고가폭 지표. 1번 지표 응용 분봉단위 지표
예) 120분봉의 전전봉 종가가 10,000원이고 전봉고가가 11,000원이면
X원은 1,000원
전전전봉 종가가 12,000원이고 전전봉 고가가 14,000원이면
Y원은 2,000원...
위와 같이 20봉 동안의 값을 구한 다음
기간(20봉동안)중 가장 크게 변동한 값 Z원을 찾고(20봉동안의 Z원은 2,000원이라면)
전봉종가 13,000원에
가장 크게 변동한 값 Z원 2,000원을 더하여
전봉종가대비 기간(20봉동안) 가장컸던 고가폭 지표로 표시 15,000원
감사합니다.