예스스탁
예스스탁 답변
2022-02-24 10:14:38
안녕하세요
예스스탁입니다.
업무상 수식문의는 일정시간이상 요구되는 내용은 저희가 답변을 드리지 않습니다.
이전 여러번의 문의도 시간이 많이 걸리는 내용이지만 저희가 작성을 해드렸습니다.
해당 문의까지만 처리해 드립니다.
1
input : 타주기분(30),n(10),R(5);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),HH(0),LL(0),OO(0),CC(0);
var : ii(0),i1(0),i2(0),tempmax(0),tempi(0);
Array : R1[50](0),M1[50](0),H1[50](0),L1[50](0);
Array : tempR1[50](0),tempM1[50](0),tempH1[50](0),tempL1[50](0),NTHVALUE[50](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
for cnt = 1 to 49
{
R1[cnt] = R1[cnt-1][1];
M1[cnt] = M1[cnt-1][1];
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
}
}
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
{
HH = H;
LL = L;
OO = O;
Condition1 = False;
if Bdate != Bdate[1] Then
{
R1[0] = 0;
M1[0] = 0;
}
}
if H > HH Then
HH = H;
if L < LL Then
LL = L;
CC = C;
if HH-LL > R1[0] Then
{
R1[0] = HH-LL;
Condition1 = true;
}
if Condition1 == true Then
{
M1[0] = (HH+LL)/2;
H1[0] = HH;
L1[0] = LL;
}
if M1[n] > 0 Then
{
for ii = 0 to 49
{
tempR1[ii] = R1[ii];
tempM1[ii] = M1[ii];
tempH1[ii] = H1[ii];
tempL1[ii] = L1[ii];
}
For i1 = 1 to n
{
tempmax = -1;
For i2 = 1 to n
{
if TempH1[i2] <= DayOpen+R and TempL1[i2] >= DayOpen-R and
tempR1[i2] >= tempmax then
{
tempmax = tempR1[i2];
tempi = i2;
}
}
NTHVALUE[i1] = tempM1[tempi];
tempR1[tempi] = -1;
}
if NTHVALUE[1] > 0 Then
Plot1(NTHVALUE[1]);
Else
NoPlot(1);
if NTHVALUE[2] > 0 Then
Plot2(NTHVALUE[2]);
Else
NoPlot(2);
if NTHVALUE[3] > 0 Then
Plot3(NTHVALUE[3]);
Else
NoPlot(3);
}
}
2
input : 타주기분(30),n(10),R(5);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),HH(0),LL(0),OO(0),CC(0);
var : ii(0),i1(0),i2(0),tempmax(0),tempi(0);
Array : R1[50](0),M1[50](0),H1[50](0),L1[50](0);
Array : tempR1[50](0),tempM1[50](0),tempH1[50](0),tempL1[50](0),NTHVALUE[50](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
for cnt = 1 to 49
{
R1[cnt] = R1[cnt-1][1];
M1[cnt] = M1[cnt-1][1];
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
}
}
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
{
HH = H;
LL = L;
OO = O;
Condition1 = False;
if Bdate != Bdate[1] Then
{
R1[0] = 0;
M1[0] = 0;
}
}
if H > HH Then
HH = H;
if L < LL Then
LL = L;
CC = C;
if HH-LL > R1[0] Then
{
R1[0] = HH-LL;
Condition1 = true;
}
if Condition1 == true Then
{
M1[0] = (OO+CC)/2;
H1[0] = HH;
L1[0] = LL;
}
if M1[n] > 0 Then
{
for ii = 0 to 49
{
tempR1[ii] = R1[ii];
tempM1[ii] = M1[ii];
tempH1[ii] = H1[ii];
tempL1[ii] = L1[ii];
}
For i1 = 1 to n
{
tempmax = -1;
For i2 = 1 to n
{
if TempH1[i2] <= DayOpen+R and TempL1[i2] >= DayOpen-R and
tempR1[i2] >= tempmax then
{
tempmax = tempR1[i2];
tempi = i2;
}
}
NTHVALUE[i1] = tempM1[tempi];
tempR1[tempi] = -1;
}
if NTHVALUE[1] > 0 Then
Plot1(NTHVALUE[1]);
Else
NoPlot(1);
if NTHVALUE[2] > 0 Then
Plot2(NTHVALUE[2]);
Else
NoPlot(2);
if NTHVALUE[3] > 0 Then
Plot3(NTHVALUE[3]);
Else
NoPlot(3);
}
}
3
input : 타주기분(30),n(10),R(5);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),HH(0),LL(0),OO(0),CC(0);
var : ii(0),i1(0),i2(0),tempmax(0),tempi(0);
Array : R1[50](0),M1[50](0),H1[50](0),L1[50](0);
Array : tempR1[50](0),tempM1[50](0),tempH1[50](0),tempL1[50](0),NTHVALUE[50](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
for cnt = 1 to 49
{
R1[cnt] = R1[cnt-1][1];
M1[cnt] = M1[cnt-1][1];
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
}
}
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
{
HH = H;
LL = L;
OO = O;
Condition1 = False;
if Bdate != Bdate[1] Then
{
R1[0] = 0;
M1[0] = 0;
}
}
if H > HH Then
HH = H;
if L < LL Then
LL = L;
CC = C;
if HH-LL > R1[0] Then
{
R1[0] = HH-LL;
Condition1 = true;
}
if Condition1 == true Then
{
M1[0] = (OO+CC)/2;
H1[0] = max(CC,OO);
L1[0] = Min(CC,OO);
}
if M1[n] > 0 Then
{
for ii = 0 to 49
{
tempR1[ii] = R1[ii];
tempM1[ii] = M1[ii];
tempH1[ii] = H1[ii];
tempL1[ii] = L1[ii];
}
For i1 = 1 to n
{
tempmax = -1;
For i2 = 1 to n
{
if TempH1[i2] <= DayOpen+R and TempL1[i2] >= DayOpen-R and
tempR1[i2] >= tempmax then
{
tempmax = tempR1[i2];
tempi = i2;
}
}
NTHVALUE[i1] = tempM1[tempi];
tempR1[tempi] = -1;
}
if NTHVALUE[1] > 0 Then
Plot1(NTHVALUE[1]);
Else
NoPlot(1);
if NTHVALUE[2] > 0 Then
Plot2(NTHVALUE[2]);
Else
NoPlot(2);
if NTHVALUE[3] > 0 Then
Plot3(NTHVALUE[3]);
Else
NoPlot(3);
}
}
즐거운 하루되세요
> 원칙투자자 님이 쓴 글입니다.
> 제목 : 지표A, 지표B, 지표C의 (수정)작성 부탁드립니다.
> 담당자님, 안녕하세요.
작성해주신 지표 수식을 잘 활용하고 있습니다.
거듭 감사드립니다.
담당자님게서 작성해 주신 (변경전) 지표A, 지표B, 지표C에 아래의 제약조건을 추가(수정)한
변경후 지표의 작성을 부탁드립니다.
제일 하단에는 담당자님께서 작성해주신 (변경전) 지표A, 지표B, 지표C의 수식을 기재하였습니다.
===========================================================
===========================================================
<지표 A>
(3분봉 차트에서 사용하되 30분봉 기준의 시세를 연산하는 지표입니다)
(변경전 요건)
1) 각 일자별 (고가-저가) 값이 최대인 30분봉 중 (D-1)일 부터 소급하여
과거 n일(n=10) 기간 중 (고가-저가) 값이 큰 상위 3개의 30분봉을 총 3개 선택하고
2) 위에서 선택된 상위 3개의 30분봉('고가, 저가'의 값)으로 각각의 '(고가+저가)/2'를 계산하여
그 값을 각각 3개의 수평선 라인으로 표시
(수정후 요건)
[추가제약 조건 A] (당일 시가 + 5.0)~(당일 시가-5.0)의 범위 내에
30분봉의 고가, 저가가 모두 위치한 과거 n일(n=10) 기간의 30분봉 중에서
1) 각 일자별 (고가-저가)가 최대인 30분봉 중 (D-1)일 부터 소급하여
과거 n일(n=10) 기간 중 (고가-저가) 값이 큰 상위 3개의 30분봉을 총 3개 선택하고
2) 위에서 선택된 상위 3개의 30분봉('고가, 저가'의 값)으로 각각의 '(고가+저가)/2'를 계산하여
그 값을 각각 3개의 수평선 라인으로 표시하는 지표하는 지표로의 수정을 부탁드립니다.
즉, [ (당일 시가 + 5.0) < 각 일자별 30분봉 고가 < (당일 시가-5.0)
and (당일 시가 + 5.0) < 각 일자별 30분봉 저가 < (당일 시가-5.0)]인 30분봉 중에서
1)의 30분봉을 선택하고 연산을 진행하는 것입니다.
[추가제약 조건 A] 예시
(1) -> (1), (2), (4), (5)는 선택 대상(선택 pool)에서 제외
고 (2)
저 고
-----------------------------------------------------(당일 시가+5.0)
저 (3)
고 -> (3)에 해당하는 30분봉만 위 연산 과정 1)과 2)를 수행
저 고
--------------------------------------------------------(당일 시가-5.0)
저 고
(4) 저
(5)
============================================================
<지표 B>
(3분봉 차트에서 사용하되 30분봉 기준의 시세를 연산하는 지표입니다)
(변경전 요건)
1) <지표A>와 동일
2) 위에서 선택된 상위 3개의 30분봉에서 그 봉에 해당하는 각각의 '(종가+시가)/2'를 계산하여
그 값을 각각 수평선 라인으로 표시
(수정후 요건)
[추가제약 조건] (당일 시가 + 5.0)~(당일 시가-5.0)의 범위 내에
30분봉의 고가, 저가가 모두 위치한 과거 n일 기간의 30분봉 중에서 (-> A와 동일)
1) <지표A>와 동일
2) 위 1)에서 선택된 상위 3개의 30분봉에서 그 봉에 해당하는 각각의 '(종가+시가)/2'를 계산하여
그 값을 각각 수평선 라인으로 표시하는 지표로의 수정을 부탁드립니다.
===========================================================
<지표 C>
(3분봉 차트에서 사용하되 30분봉 기준의 시세를 연산하는 지표입니다)
(변경전 요건)
1) (고가-저가)를 ABS(시가-종가)로 적용하는 것 이외에는 <지표A>와 동일
2) (고가-저가)를 ABS(시가-종가)로, '(고가+저가)/2'를 '(시가+종가)/2'로 적용 이외에는 <지표A>와 동일
(수정후 요건)
[추가제약 조건 C] (당일 시가 + 5.0)~(당일 시가-5.0)의 범위 내에
30분봉의 시가, 종가가 모두 위치한 과거 n일 기간의 30분봉 중에서
1) (고가-저가)를 ABS(시가-종가)로 적용하는 것 이외에는 <지표A>와 동일
2) (고가-저가)를 ABS(시가-종가)로, '(고가+저가)/2'를 '(시가+종가)/2'로 적용 하는 것 이외에는
<지표A>과 동일하고, 제약조건C가 추가된 지표로의 수정을 부탁드립니다.
[추가제약 조건 C] 예시
(1) -> (1), (2), (4), (5)는 선택 대상(선택 pool)에서 제외
시 종 (2)
종 시 시 종
--------------------------------------------------------------------------(당일 시가+5.0)
종 시 (3)
시 종 -> (3)의 30분봉만 위 연산 과정 1)과 2)를 수행
종 시 시 종
-----------------------------------------------------------------------------(당일 시가-5.0)
종 시 시 종
(4) 종 시
(5)
위와 같이 지표A, B, C 수식의 수정을 부탁드립니다.
담당자님 노고와 답변에 미리
감사드립니다.
코로나 시국에 건강도 잘 챙기시기 바랍니다.
===========================================================
===========================================================
===========================================================
담당자님이 작성해주신
(변경전) <지표 A>
input : 타주기분(30),n(10);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),HH(0),LL(0);
var : ii(0),i1(0),i2(0),tempmax(0),tempi(0);
Array : R1[50](0),M1[50](0);
Array : tempR1[50](0),tempM1[50](0),NTHVALUE[50](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
for cnt = 1 to 49
{
R1[cnt] = R1[cnt-1][1];
M1[cnt] = M1[cnt-1][1];
}
}
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
{
HH = H;
LL = L;
Condition1 = False;
if Bdate != Bdate[1] Then
{
R1[0] = 0;
M1[0] = 0;
}
}
if H > HH Then
HH = H;
if L < LL Then
LL = L;
if HH-LL > R1[0] Then
{
R1[0] = HH-LL;
Condition1 =true;
}
if Condition1 == true Then
M1[0] = (HH+LL)/2;
if M1[n] > 0 Then
{
for ii = 0 to 49
{
tempR1[ii] = R1[ii];
tempM1[ii] = M1[ii];
}
For i1 = 1 to n
{
tempmax = -1;
For i2 = 1 to n
{
if (tempR1[i2] >= tempmax ) then
{
tempmax = tempR1[i2];
tempi = i2;
}
}
NTHVALUE[i1] = tempM1[tempi];
tempR1[tempi] = -1;
}
Plot1(NTHVALUE[1]);
Plot2(NTHVALUE[2]);
Plot3(NTHVALUE[3]);
}
}
=============================================================
담당자님이 작성해주신
(변경전) <지표 B>
input : 타주기분(30),n(10);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),HH(0),LL(0),OO(0),CC(0);
var : ii(0),i1(0),i2(0),tempmax(0),tempi(0);
Array : R1[50](0),M1[50](0);
Array : tempR1[50](0),tempM1[50](0),NTHVALUE[50](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
for cnt = 1 to 49
{
R1[cnt] = R1[cnt-1][1];
M1[cnt] = M1[cnt-1][1];
}
}
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
{
HH = H;
LL = L;
OO = O;
Condition1 = False;
if Bdate != Bdate[1] Then
{
R1[0] = 0;
M1[0] = 0;
}
}
if H > HH Then
HH = H;
if L < LL Then
LL = L;
CC = C;
if HH-LL > R1[0] Then
{
R1[0] = HH-LL;
Condition1 = true;
}
if Condition1 == true Then
M1[0] = (OO+CC)/2;
if M1[n] > 0 Then
{
for ii = 0 to 49
{
tempR1[ii] = R1[ii];
tempM1[ii] = M1[ii];
}
For i1 = 1 to n
{
tempmax = -1;
For i2 = 1 to n
{
if (tempR1[i2] >= tempmax ) then
{
tempmax = tempR1[i2];
tempi = i2;
}
}
NTHVALUE[i1] = tempM1[tempi];
tempR1[tempi] = -1;
}
Plot1(NTHVALUE[1]);
Plot2(NTHVALUE[2]);
Plot3(NTHVALUE[3]);
}
}
=============================================================
담당자님이 작성해주신
(변경전) <지표 C>
input : 타주기분(30),n(10);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),OO(0),CC(0);
var : ii(0),i1(0),i2(0),tempmax(0),tempi(0),tR1(0),tM1(0),di(0);
Array : R1[50](0),M1[50](0);
Array : tempR1[50](0),tempM1[50](0),NTHVALUE[50](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
di = 0;
for cnt = 1 to 49
{
R1[cnt] = R1[cnt-1][1];
M1[cnt] = M1[cnt-1][1];
}
}
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
{
OO = O;
CC = C;
di = di+1;
tR1 = R1[0][1];
tM1 = M1[0][1];
if Bdate != Bdate[1] Then
{
R1[0] = 0;
M1[0] = 0;
}
}
CC = C;
if di == 1 then
{
R1[0] = abs(OO-CC);
M1[0] = (OO+CC)/2;
}
if di > 1 then
{
if abs(OO-CC) >= R1[0] Then
{
R1[0] = abs(OO-CC);
M1[0] = (OO+CC)/2;
}
Else
{
R1[0] = tR1;
M1[0] = tM1;
}
}
if M1[n] > 0 Then
{
for ii = 0 to 49
{
tempR1[ii] = R1[ii];
tempM1[ii] = M1[ii];
}
For i1 = 1 to n
{
tempmax = -1;
For i2 = 1 to n
{
if (tempR1[i2] >= tempmax ) then
{
tempmax = tempR1[i2];
tempi = i2;
}
}
NTHVALUE[i1] = tempM1[tempi];
tempR1[tempi] = -1;
}
Plot1(NTHVALUE[1]);
Plot2(NTHVALUE[2]);
Plot3(NTHVALUE[3]);
}
}
=============================================================