어제 아래와 같은 키움조건식을 예스랭귀지로 변환해주셨었는데요.
아래 키움조건식의 J항이 1분봉 기준인 경우 어떻게 수정하면 되는지요?
(H or I) and J
H [10분]거래대금(일:백만, 분:천) 50000이상 999999999이하
I [5분]거래대금(일:백만, 분:천) 30000이상 999999999이하
J 신고가:[5분]0봉전 종가가 3봉중 신고가 -> 신고가:[1분]0봉전 종가가 3봉중 신고가
input : ntime(10);
var : S1(0),D1(0),TM(0),TF(0),MM(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%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
mm = 0;
}
mm = mm + m;
if (MM >= 50000000 or M >= 30000000) and C < Highest(H,3)[1] Then
Find(1);
}
답변 3
예스스탁
예스스탁 답변
2021-04-20 09:27:37
안녕하세요
예스스탁입니다.
1
1분봉, 5분봉, 10분봉의 내용이 필요하므로
1분봉 주기에서 5분봉의 거래대금을 별도로 계산해서 구현하셔야 합니다.
수정한 식은 아래와 같습니다.
2
신고가 내용이 조건이 잘못지정되어서 C < Highest(H,3)[1]
C > Highest(H,3)[1]로 변경했습니다.
3
input : ntime1(10),ntime2(5);
var : S1(0),D1(0),TM(0),TF1(0),TF2(0),M1(0),M2(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;
TF1 = TM%ntime1;
#5분봉 거대대금
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime1 > 1 and TF1 < TF1[1]) or
(Bdate == Bdate[1] and ntime1 > 1 and TM >= TM[1]+ntime1) or
(Bdate == Bdate[1] and ntime1 == 1 and TM > TM[1]) Then
{
m1 = 0;
}
m1 = m1 + m;
#10분봉 거래대금
TF2 = TM%ntime2;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime2 > 1 and TF2 < TF2[1]) or
(Bdate == Bdate[1] and ntime2 > 1 and TM >= TM[1]+ntime2) or
(Bdate == Bdate[1] and ntime2 == 1 and TM > TM[1]) Then
{
m2 = 0;
}
m2 = m2 + m;
if (M2 >= 50000000 or M1 >= 30000000) and C > Highest(H,3)[1] Then
Find(1);
}
즐거운 하루되세요
> 강지 님이 쓴 글입니다.
> 제목 : 종목검색식 변환 추가문의드립니다.
> 어제 아래와 같은 키움조건식을 예스랭귀지로 변환해주셨었는데요.
아래 키움조건식의 J항이 1분봉 기준인 경우 어떻게 수정하면 되는지요?
(H or I) and J
H [10분]거래대금(일:백만, 분:천) 50000이상 999999999이하
I [5분]거래대금(일:백만, 분:천) 30000이상 999999999이하
J 신고가:[5분]0봉전 종가가 3봉중 신고가 -> 신고가:[1분]0봉전 종가가 3봉중 신고가
input : ntime(10);
var : S1(0),D1(0),TM(0),TF(0),MM(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%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
mm = 0;
}
mm = mm + m;
if (MM >= 50000000 or M >= 30000000) and C < Highest(H,3)[1] Then
Find(1);
}
빠르게 답변해주셔서 정말 감사합니다. 이제 약간 이해가 되는것같습니다.
만들어 주신 예제처럼 1분봉 기준으로 5분봉과 10분봉을 계산으로 만들어서 하는 방법도 있고, 아니면 1분봉, 5분봉, 10분봉을 각각 파워검색에서 지정하여 쓸 수 있는거죠? 혹시 검색 속도는 어느 방법이 우수할까요?
예스스탁
예스스탁 답변
2021-04-20 11:27:35
안녕하세요
예스스탁입니다.
예 맞습니다. 종목검색은 최대 500봉이 제공됩니다.
해당 봉수이내에서 구할수 있는 타주기값은 수식에서 구현하고
가능하지 않으면 별도의 식으로 작성해 파워검색에서 조합해서 검색하시면 됩니다.
검색속도는 별도로 각각 만드시는게 일반적으로 빠르게 동작합니다.
문의하신 수식의 경우 큰 차이가 없어 1분봉에서 구현하게 작성해 드린식입니다.
즐거운 하루되세요
> 강지 님이 쓴 글입니다.
> 제목 : Re : Re : 종목검색식 변환 추가문의드립니다.
> 빠르게 답변해주셔서 정말 감사합니다. 이제 약간 이해가 되는것같습니다.
만들어 주신 예제처럼 1분봉 기준으로 5분봉과 10분봉을 계산으로 만들어서 하는 방법도 있고, 아니면 1분봉, 5분봉, 10분봉을 각각 파워검색에서 지정하여 쓸 수 있는거죠? 혹시 검색 속도는 어느 방법이 우수할까요?