커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1846
글번호 230811
답변완료
지표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]);
}
}
=============================================================
2022-02-23
1288
글번호 156658
답변완료
부탁 드립니다.
변환부탁 드립니다.
미리 감사 드립니다.
tavg(c,p);
2022-02-23
1224
글번호 156657
답변완료
문의 드립니다.
매수 조건
1) 5 20 60 120 이평선 정배열이면서
2) MACD 기준선 0선을 아래에서 위로 돌파 한 후 10틱 아래서 매수 진입
손절은 10틱
익절은 20틱으로 한다
매도 조건
1) 5 20 60 120 이평선 역배열이면서
2) MACD 기준선 0선을 위에서 아래로 돌파 한 후 10틱 위에서 매도 진입
손절은 10틱
인절은 20틱으로 한다
부탁드립니다^^
2022-02-23
1019
글번호 156650
노블레스 님에 의해서 삭제되었습니다.
2022-02-23
1
글번호 156649
노블레스 님에 의해서 삭제되었습니다.
2022-02-23
0
글번호 156648
답변완료
질문합니다.
스팟에는 eval이란 함수가 있던데
랭귀지에서는 비슷한 함수가 없나요?
참조데이터를 많이 써서
변경될때마다 변경해줘야하는 불편함이 있어서요.
참조데이터 갯수 변경시에 함수로 만들어쓰고 싶어서요.
혹시 eval같은 함수 업데이트 할 수 있나 건의드립니다.
2022-02-23
1016
글번호 156647
david200 님에 의해서 삭제되었습니다.
2022-02-23
0
글번호 156640
답변완료
수식 문의드립니다
조금전 알려주신 수식이 제가 원하던 값과 차이가 있어서요...
제가 설명을 잘못한듯요.ㅜㅜ
일봉 macd(12,24) > 0 이고 60분봉 macd(24,48) > 0 두 조건 만족시 매수
일봉 macd(12,24) < 0 일때 혹은 60분봉 macd(24,48) < 0 이중 한 조건이라도 만족시 매도
이렇게 식을 만들고 싶습니당.
번거롭게 해서 죄송합니다.
좋은 하루 보내세요~^^
2022-02-23
1199
글번호 156636
답변완료
수식
안녕하세요.
하기 수식 부탁드립니다. Plot로 부탁드립니다.
당일 시초봉을 기준으로 60캔들 단위로 고점저점중심 부탁드립니다.
감사합니다.
2022-02-23
1398
글번호 156634