커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1685
글번호 230811
답변완료
지표 수식(지표2와 지표3)의 검토 부탁드립니다
지난번 Q&A 75889번에서 작성해 주신 수식을 활용하면서 매매원칙을 연구하고 있습니다.
작성해 주신 지표수식을 연구하고 있는데,
아래 지표1의 경우에는 지표에서 산출된 값과 수기로 계산해 본 값이 정확하게 일치합니다.
그런데, 지표2와 지표3의 시스템 산출 결과는 제가 실제 데이터로 계산한 값과 차이가 납니다.
제가 아무리 수정해보려고 해도 해결할 수가 없어 도움 요청드립니다.
작성해주신 지표2와 지표3이 지난번 Q&A 75889번의 질의 내용과 다른 점이 무엇인지
검토해주시고 Q&A 75889번의 질의 내용과 같이 수정 부탁드립니다.
제가 수기 계산해 본 검증해 본 내용을 엑셀 파일로 첨부하였고
지표를 시뮬레이션 차트에서 실행한 내용(산출된 수치)을 화면 캡쳐하여
엑셀파일의 해당 sheet에 같이 첨부하였습니다.
검증내용 요약은 아래와 같습니다.
자세한 내용은 엑셀파일을 참조하시기 바랍니다.
--------------------------------------------------------------
2021.07.12을 당일(D)로 해서 실행해보면
<지표1 - 시스템> <지표1 - 수기계산> -> 정확하게 일치
425.68 425.68
437.70 437.70
435.68 435.68
<지표2 - 시스템> <지표2 - 수기계산> -> 차이 발생
425.77 425.73
437.77 437.88
435.75 435.80
<지표3 - 시스템> <지표3 - 수기계산> -> 차이 발생
425.73 425.73
438.65 438,75
435.75 435.80
cf. 위 사례 보다 차이가 훨씬 더 큰 경우도 많음.
-----------------------------------------------------------------------------
위와 같이 수정 부탁드립니다.
미리 감사드립니다.
(담당자님의 편의를 위하여
Q&A 75889번의 담당자님 답변내용과 제 질의 내용을
아래에 기재하였습니다.)
==============================================
==============================================
수식작성 Q&A 75889번
담당자님 답변(작성 수식) 및 질의 내용
==============================================
==============================================
작성자 : 예스스탁 작성일 : 2022-02-14 오전 9:35:15 조회수 : 9
지표 Re : 지표 수식(지표1, 지표2, 지표3) 작성 부탁드립니다.
안녕하세요
예스스탁입니다.
올림차순 또는 내림차순으로 지정해 드리기는 어렵습니다.
최근 n일 값을 계산해서 NTHVALUE에 오름차순으로 값이 저장됩니다.
10일 중 가장작은값 3개는 NTHVALUE[8],NTHVALUE[9],NTHVALUE[10]으로 지정해 출력하시면 됩니다.
1
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;
if Bdate != Bdate[1] Then
{
R1[0] = HH-LL;
M1[0] = (HH+LL)/2;
}
}
if H > HH Then
HH = H;
if L < LL Then
LL = L;
if HH-LL > R1[0] Then
{
R1[0] = HH-LL;
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]);
}
}
2
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;
if Bdate != Bdate[1] Then
{
R1[0] = HH-LL;
M1[0] = (HH+LL)/2;
}
}
if H > HH Then
HH = H;
if L < LL Then
LL = L;
CC = C;
if HH-LL > R1[0] Then
{
R1[0] = HH-LL;
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]);
}
}
3
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);
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
{
OO = O;
CC = C;
if Bdate != Bdate[1] Then
{
R1[0] = abs(OO-CC);
M1[0] = (OO+CC)/2;
}
}
CC = C;
if abs(OO-CC) > R1[0] Then
{
R1[0] = abs(OO-CC);
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]);
}
}
즐거운 하루되세요
> 원칙투자자 님이 쓴 글입니다.
> 제목 : 지표 수식(지표1, 지표2, 지표3) 작성 부탁드립니다.
> 담당자님, 안녕하세요.
작성해주신 지표 수식을 너무나 잘 활용하고 있습니다.
거듭 감사드립니다.
(KOSPI200 주가지수 선물) 분봉 차트에서, 예를 들면 3분봉 차트에서
적용하는 지표라고 가정하고 다음과 같은 지표1, 지표2, 지표3 수식의 작성을 부탁드립니다.
===========================================================
===========================================================
<지표 1>
(3분봉 차트에서 적용)
1) 매일의 30분봉(장시작~09:30, 09:30~10:00.....15:30~장마감의 30분 단위 구간)의 (고가-저가) 중에서
각 해당일의 30분 구간 (고가-저가)가 최대인 30분봉(30분 구간)을 각 일자별로 1개씩 선택
(즉, 각 일자별로 그날의 30분봉 중에서 고점과 저점 사이의 봉길이가 최대인 30분봉을 1개씩 선택함)
cf. 어떤 날에 (고가-저가)의 최대값이 같은 봉이 2개 이상이면(즉, 같은 수치의 최대봉이 2개 이상이면)
그 날 가장 먼저 발생한 봉을 선택 또는 담당자님이 정하는 원칙으로 각 일자에서는 1개씩만 선정함.
2) 위에서 계산된 각 일자별 (고가-저가)가 최대인 30분봉 중 (D-1)일 부터 소급하여
과거 n일(n=10) 기간 중 (고가-저가) 값이 큰 상위 3개의 30분봉(30분 구간)을 총 3개 선택
* 당일(D)의 수치(가격)는 계산에 반영(포함)되지 않으며
(D-1)일 부터 (D-10)일 까지의 10일간의 수치(가격)를 반영하여 산출함.
3) 위에서 선택된 상위 3개의 30분봉('고가-저가'의 값)으로 각각의 '(고가+저가)/2'를 계산하여
그 값을 각각 3개의 수평선 라인으로 표시 [=> 최종 결과값은 총 3개의 수평라인 산출]
* [중요] 위의 조건 충족한 당일(D)의 3개 수평라인은 '당일(D)의 장시작 ~ 장마감'의 기간에만 표시함.
(cf. 실시간 차트에서는 당일(D) 장시작 하면서(첫봉 만들어지면서) 바로 라인이 표시되며
그 이후 장중 분봉이 형성되면서 순차적으로 동일한 라인이 장마감까지 표시될 것으로 예상)
또한, 당일 보다 과거 기간에는 당일 조건에 의한 라인은 표시되지 않고 각 해당일의 조건에 의해 선정된
수평라인만 표시되므로 과거 각 일자에 해당하는 차트 구간에도 최대 3개 라인이 표시됨.
(추가 요건1) [중요] 최종 결과물인 수평라인 3개를 plot1, plot2, plot3로 산출할 때,
(최종 수치인 '(고가+저가)/2'를 sort, 정렬하여)
plot1, 2, 3가 최종수치인 '(고가+저가)/2'의 크기대로 올림차순 또는 내림차순이 되도록 배열
(cf. plot1, 2, 3가 [고가-저가]의 크기 순대로의 배열이 아님)
(추가 요건2) n일(n=10) 기간의 수치는 외부입력 변수로 하여 지표속성창에서 변경 입력이 가능 하도록 구현
===============================================================================
(예시)
D-10일 고가 저가 고가-저가 (고가+저가)/2
장시작~09:30 360.00 359.00 1.00
09:30 ~10:00 361.00 358.10 2.90 (=> 선택2) 359.55(-> 당일(D) 구간에 라인 표시)
.....
15:00~ 장마감 360.00 359.60 0.40
----------------------------------------------------------------------------------------
.................
D-7일 고가 저가 고가-저가 (고가+저가)/2
장시작~09:30 358.50 357.00 1.50 (=> 선택3) 357.75(-> 당일(D) 구간에 라인 표시)
09:30 ~10:00 359.20 358.00 1.20
.....
15:00~ 장마감 359.40 359.00 0.40
----------------------------------------------------------------------------------------
.................
D-5일 고가 저가 고가-저가 (고가+저가)/2
장시작~09:30 380.50 376.40 3.60 (=> 선택1) 378.45(-> 당일(D) 구간에 라인 표시)
09:30 ~10:00 378.00 375.00 3.00
.....
15:00~ 장마감 377.00 356.40 0.60
----------------------------------------------------------------------------------------
.................
D-2일 고가 저가 고가-저가 (고가+저가)/2
장시작~09:30 358.40 357.00 1.40 (=> 미선택) 357.70
(D-2일의 최대 30분봉 '고가-저가'값이 상위 3개에 미포함 되므로 1.40은 미선택됨)
09:30 ~10:00 359.10 358.00 1.10
.....
15:00~ 장마감 359.50 359.00 0.50
----------------------------------------------------------------------------------------
.................
D일(당일) 시가 : 361.00
------------------------------------------------------------
<최종 구현되는 결과(plot 1,2,3의 값을 올림차순 또는 내림차순 정렬)>
plot1 : 357.75 plot1 : 378.45
plot2 : 359.55 또는 plot2 : 359.55
plot3 : 378.45 plot3 : 357.75
(올림차순) (내림차순)
============================================================
위와 같이 지표1의 수식 작성을 부탁드립니다.
===========================================================
===========================================================
<지표 2>
(3분봉 차트에서 적용)
1) <지표1>과 동일
2) <지표1>과 동일
3) 위에서 선택된 '고가-저가'의 값이 큰 상위 3개의 30분봉에서 그 봉에 해당하는
각각의 '(종가+시가)/2'를 계산하여 그 값을 각각 수평선 라인으로 표시 [=> 총 3개의 수평라인 산출]
cf. <지표1>과의 차이는 '(고가+저가)/2'가 아니고 선택된 30분봉의 '(종가+시가)/2'를 적용하는 것임.
(추가 요건1) <지표1>과 동일
(추가 요건2) <지표1>과 동일
=============================================================
=============================================================
위와 같이 지표2의 수식 작성을 부탁드립니다.
===========================================================
===========================================================
<지표 3>
(3분봉 차트에서 적용)
1) (고가-저가)를 절대값(종가-시가)로 적용하는 것 이외에는 <지표1>과 동일
2) (고가-저가)를 절대값(종가-시가)로 적용하는 것 이외에는 <지표1>과 동일
3) (고가-저가)를 절대값(종가-시가)로, '(고가+저가)/2'를 '(종가+시가)/2'로 적용 이외에는 <지표1>과 동일
(추가 요건1) plot1, 2, 3가 최종수치인 '(종가+시가)/2'의 크기대로 올림차순 또는 내림차순이 되도록 배열
(추가 요건2) <지표1>과 동일
=============================================================
=============================================================
위와 같이 지표3의 수식 작성을 부탁드립니다.
2022-02-16
785
글번호 156372
답변완료
함수요청
안녕하세요?
전일장(우리시각으로 금일 오전에 마감) 나스닥 지수가 상승 마감했으면
국내선물을 주간장 종가에 매수하고
전일장(우리시각으로 금일 오전에 마감) 나스닥 지수가 하락 마감했으면
국내선물을 종가에 매도하고
야간시장 주간장 시초가에 청산하고자 합니다.
말씀드린 전략대로 정확하지 않더래도 논리가 비슷하게라도 스크립트 작성 부탁드립니다.
2022-02-16
861
글번호 156371
답변완료
수평선
감사합니다.
1. 교차된 가격의 수평선의 우측 연장이 아닌
값이 한봉에만 특정되고 나머지 봉은 N/A로 표시될 때
그 한봉에만 특정된 값을 우측으로 연장하고자 합니다
예)
var: AA(0);
AA = var1;
// var1의 지표값이 특정한 한 봉에서만 출력되고
전봉이나 다음봉의 지표값이 N/A 여서 출력값이 없을 때
출력된 특정한 지표값을 우측으로 수평선으로 출력하는
방법을 알고 싶습니다
if isnan(AA) == false then
?
Plot1(AA, "특정한 한 봉의 지표값");
2022-02-17
1060
글번호 156370
답변완료
장기이평선 돌파
AA=(H+C+L)/3;
BB=AA*V;
cumulative_amount=sum(BB);
cumulative_vol=sum(V);
cumulative_amount/cumulative_vol
위수식은 상장 전체 기간의 평균 이평선입니다.
예스트레이더 종목검색식를 만들고 싶습니다.
도움 부탁드립니다.
2022-02-16
1070
글번호 156364
답변완료
문의드립니다
당일 A지표의 첫봉 값이 나오면
그 수치를 빼서
두번째 봉부터 0 으로 만들고 싶습니다
예)
A 1봉값 100
A 2봉값 110
A 3봉값 120
...
이라면 1봉값을 기억하고
A 2봉값 10
A 3봉값 2
...
2022-02-16
1006
글번호 156363
답변완료
하단 두개의 지표를 만들어 보고 있습니다 .
안녕하세요.
사진파일에서 ,
하단 두개의 지표를 만들어 보고 있습니다 .
만들어 쓰고 있는 하단 지표에는 현재가만 표시될뿐
전봉대비 증감이 표시가 안되서요....
윗단 두개의 지표처럼 ,
하단 지표에
전봉대비 현재가 증감 표시가
되게 하는 식 부탁드립니다 ...
감사합니다
2022-02-16
1206
글번호 156359
정마니 님에 의해서 삭제되었습니다.
2022-02-16
0
글번호 156358
jshwang2 님에 의해서 삭제되었습니다.
2022-02-16
0
글번호 156357
답변완료
75964 추가 질문 드립니다
안녕하세요~
문의드린 부분에 대해 아래와 같이 답변받았습니다
--------------------
1
청산후에 진입이 동일봉에서 발생하는 경우가 있습니다.
랭귀지는 봉완성이 기준이며 모든 사용하는 값과 값저장은 봉완성이 기준입니다.
if B>0 && B == Hcount then HB = rHB;
if S>0 && S == Lcount then LB = rLB;
청산후 같은봉 미완성시에 위 내용으로 HB,LB에 저장되는 것은 아닙니다.
해당 내용을 해결하기 위해서는 최소한 한개봉은 완성이 되어야 하므로
청산이 발생한 봉에서 같이 동일방향 진입이 발생하는 것을 막는 방법뿐이 없습니다.
if MarketPosition <= 0 and Hstate == true then
{
Buy("b1",AtStop,HB,unitP);
Buy("b2",AtStop,HB+0.5*N,unitP);
Buy("b3",AtStop,HB+N,unitP);
Buy("b4",AtStop,HB+1.5*N,unitP);
}
if MarketPosition >= 0 and Lstate == true then
{
Sell("s1",AtStop,LB,unitP);
Sell("s2",AtStop,LB-0.5*N,unitP);
Sell("s3",AtStop,LB-N,unitP);
Sell("s4",AtStop,LB-2.5*N,unitP);
}
-----------------------------------
위와같이 marketposition 0 이하일때 매수, 0 이상일때 매도를 조건으로 넣게되면
피라미딩이 안되지 않나요??
(매수일 경우) 첫번째 진입하면 marketposition이 1이되서 2~4번째 진입이 안될것 같은데 이 부분 확인 부탁드리겠습니다!
감사합니다
2022-02-16
1415
글번호 156356