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