커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1516
글번호 230811
답변완료
전일 종가 대비 N틱을 활용한 방법
전일 종가 대비 몇틱 빠졌는지 올랐는지를 활용해서 매매하고 싶습니다.
5분봉 차트에
data1에 차트에 코스피200선물,
data2에 차트에 코스닥150선물,
각각 전일종가대비 몇틱씩 움직이고 있는지를 계산한 후에 그 값을 data1-data2한 값을 차트에 나타내고 싶습니다
즉,
전일 종가대비 당일 data1의 변동 틱 - 전일 종가대비 당일 data2의 변동 틱
을 차트로 만들고 싶습니다.
예를 들어서,
만약 (data1)코스피가 지금 전일종가 대비 -10틱 빠져있고, 코스닥이 -20틱 빠져있다면
차트에 -10 - (-20) = +10 값이 나오게 부탁드립니다.
5분봉 혹은 1분봉으로 해서 실시간으로도 장기간차트로도 보고싶습니다.
2023-07-22
1299
글번호 170854
답변완료
수식 문의 드립니다.
(1)
S=sum(1);
R=RSI(기간);
U7=Valuewhen(1, CrossUp(R, 기준), S);
D5=Valuewhen(1, CrossDown(R, 기준1), S);
순번조건=U7 < D5;
조건= CountSince(순번조건 && !순번조건(1),
CrossUp(R, 기준))==1;
조건 && !조건(1)
(2)
S=sum(1);
R=RSI(기간);
U7=Valuewhen(1, CrossUp(R, 기준), S);
D5=Valuewhen(1, CrossDown(R,기준1), S);
순번조건=U7 < D5;
조건= CountSince(순번조건 && !순번조건(1),
CrossUp(R, 기준))==1;
A=Valuewhen(1,조건 && !조건(1), O);
CrossUp(C, A)
기간9 기준 30 기준1 50
종목 검색식으로 부탁드립니다. 늘 고맙습니다.
2023-07-23
1115
글번호 170853
답변완료
지표 질문입니다
이번주 주봉 월요일 시가를 표시한다
이번주 주봉 화요일 시가를 표시한다
지난주 주봉 월요일 시가를 표시한다
지난주 주봉 화요일 시가를 표시한다
감사합니다
2023-07-22
1092
글번호 170852
답변완료
수식 부탁드립니다
안녕하세요
항상감사합니다
키움 수식을 예트 지표수식으로 변환부탁드립니다
m1=if(C>=C(1),V,0);//상승
m2=if(C>=C(1),0,V);//하락
m3=sum(m1,10)/sum(m2,10)*100;
m3
2023-07-21
1363
글번호 170851
답변완료
차트에 신호 화살표 표시
차트에 화살표 신호를 하려고 하는데 어떻게 해야 하나요? 아직 미숙해서 뭐가 뭔지 모르겠네요
요일(D) 함수 : 함수명을반드시 요일(D) 로 하셔야 합니다.
M = floor(D/100)%100;
YY = if((M+1-1) == 1 or (M+1-1) == 2, floor(D/10000)-1,floor(D/10000));
YA= floor(YY/100);
YB=YY%100;
MM = if((M+1-1) == 1, 13, if((M+1-1) == 2, 14, M));
DD=D%100;
A=(DD + floor(13*(MM+1)/5)+YB+ floor(YB/4)+floor(YA/4)+YA*5)%7;
if(A==0, 6, A-1)
화살표 수식
wvf = ((highest(C, 22) - low) / highest(C, 22)) * 100;
sDev = 2.0 * stdev(wvf, 20);
midLine = avg(wvf, 20);
upperBand = midLine + sDev;
rangeHigh = (highest(wvf, 50)) * ph;
os = (wvf >= upperBand) or (wvf >= rangeHigh);
ap = (HIGH+LOW+CLOSE)/3;
esa = eavg(ap, 기간1);
d = eavg(abs(ap - esa), 기간1);
ci = (ap - esa) / (0.015 * d);
wt1 = eavg(ci,기간2);
wt2 = avg(wt1,4);
A=Lowest(L, 260, 1);
A1=Lowest(L, 260, 1)*1.25;
A2=요일(DATE);
A3=Valuewhen(1,A2(1)>A2,O);
MO=floor(date/100);
MO1=MO%100;
A4=VALUEWHEN(1, MO1!=MO1(1),O);
wt1(1)<=-53 && (os(1) or os) && wvf(1)>wvf &&
(Crossup(wt1,wt2) or Crossup(wt1,-60) or Crossup(wt1,-53)) && C>O && A1>=C && A<=C && (A3<=C OR A4<=C)
-지표조건설정
기간1 : 10
기간2 : 21
PH : 0.85
이걸 차트에 화살표를 표시하려고 합니다
도와주세요 ㅠㅠ
2023-07-21
1517
글번호 170848
답변완료
함수요청
안녕하세요?
국내선물 1분봉으로 A전략, 5분봉으로 B전략, 10분봉으로 C전략을 하고 있는데
3개의 신호가 동일할 때 진입을 하는 전략을 구상중입니다.
가령 국내선물 1분봉으로 100ma 돌파 완성시 매수, 5분봉으로 60ma 돌파 완성시 매수,
10분봉으로 20m 돌파 완성시 매수하는데
3개 모두 매수신호 생성중이면 1분봉으로 매수를 진입하고 싶습니다.
스크립트를 수정해야 할까요? 참조함수를 쓰지 않고도 가능할까요?
샘플 부탁드립니다.
2023-07-21
1355
글번호 170843
답변완료
82983 추가 문의합니다.
82938 답변 감사합니다!
몇 가지 확인하려고 추가 문의드립니다.
원글에도 답글을 적었는데 혹시 못보실까봐 똑같이 적습니다 ㅠ
1. 첫번째 if문의
"if SwingHigh(1,h,left,right,left+right+1) != -1 and c[right] > mav[right] Then"은
스윙하이 시작점이 20이평 보다 높은 경우를 상정한 것이 같은데,
만약 스윙하이 최고값이 20이평 보다 높은 경우로 변경하려면,
"if SwingHigh(1,h,left,right,left+right+1)!= -1 and SwingHigh(1,h,left,right,left+right+1) > mav[right] Then"으로 변경하면 될까요?
2. sh[0] = h[right]; 부분은 스윙하이 완성시점에서 포착되기 때문에 5봉전 값 = 스윙하이 최고점으로 계산되는 것이죠?
3. 마지막 Else는 스윙하이 완성되지 않고 20이평보다 높을 때 실행 되는 의미인가요?
4. 만약 파워종목검색에서 검색하면 검색주기를 "주"로 두고
"left(5),right(5);"와 "mav = ma(c,20);"의 변수를 각각
"left(3),right(3);"와 "mav = ma(c,10);"으로 변경해서 수식을 적용하면,
주봉에서 주봉 10이평 보다 높고 좌우 3개 봉을 비교한 스윙하이 값으로 변경되는 것이 맞나요?
5. 만약 "SwingHigh(1,h,left,right,left+right+1)"에서 스윙하이 값을 h가 아닌 종가 C나 제가 임의로 지정한 변수로 넣어도 스윙하이 값이 정상 작동하는거죠?
예를 들어,
A = LRL(C, 20);
A1 = LRL(A,20);
eq= A-A1;
ZZ =A+eq;
if SwingHigh(1,zz,left,right,left+right+1) != -1 and c[right] > mav[right] Then
으로 수정하면 고가 스윙하이가 아니라 제가 정한 zl 값으로 스윙하이 값을 구하는건가요?
6. 마지막에 일봉에서 "if Value2 > 0 and Index <= Value2+100 and C >= Value2*1.03 and C <= Value2*0.97 Then" 의 조건검색식을 아래와 같이 수정하면, 일봉 5봉 이내 조건 만족한 경우를 결과로 받는거죠?
con1 = Value2 > 0 and Index <= Value2+100 and C >= Value2*1.03 and C <= Value2*0.97
if countif(con1, 5) > 0 then
Find(1);
질문이 많아서 정말 죄송합니다. 답변 부탁드립니다!
=====================================
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 다시한번 수식 문의드립니다!
> 안녕하세요
예스스탁입니다.
아래 내용 참고하시기 바랍니다.
input : left(5),right(5);
var : mav(0),cnt(0),count(0);
var : sumv(0),sumi(0),avgv(0),sumsqrt(0),stdv(0),ii(0),upv(0),dnv(0);
var : h1(0),h2(0),i1(0),i2(0);
Array : sh[100](0),shi[100](0),hh[100](0),hi[100](0);
mav = ma(c,20);
if SwingHigh(1,h,left,right,left+right+1) != -1 and c[right] > mav[right] Then
{
//전체 발생 횟수
count = count+1;
//스윙하이값과 인덱스 배열에 저장 (최근이 0으로 시작)
For cnt = 99 downto 1
{
sh[cnt] = sh[cnt-1];
shi[cnt] = shi[cnt-1];
}
sh[0] = h[right];
shi[0] = Index[right];
#최소 저장된 값이 2개 이상
if count >= 2 Then
{
#평균
sumv = 0;
sumi = 0;
For cnt = 0 to min(count,100)-1
{
if sh[cnt] > 0 then
{
sumv = sumv + sh[cnt];
sumi = sumi + 1;
}
}
avgv = sumv/sumi;
#표준편차
SumSqrt = 0;
For cnt = 0 To sumi - 1
{
SumSqrt = SumSqrt + (SH[cnt] - Avgv)^2;
}
Stdv = SquareRoot(SumSqrt/sumi);
#표준편차 2배 상하단
upv = avgv+stdv*2;
dnv = avgv-stdv*2;
#기존 저장값 0으로 초기화
For cnt = 0 to 99
{
hh[cnt] = 0;
hi[cnt] = 0;
}
#상하단내 스윙하이만 다른배열에 저장
ii = 0;
For cnt = 0 to count-1
{
//상하단내 스윙하이값만 hh,hi배열에 순서대로 저장
if upv >= sh[cnt] and sh[cnt] >= dnv Then
{
hh[ii] = sh[cnt];
hi[ii] = shi[cnt];
ii = ii +1;
}
}
if ii >= 2 Then
{
nthHighestArray(hh,ii,1,h1,var1);
nthHighestArray(hh,ii,2,h2,Var2);
i1 = hi[var1];
i2 = hi[var2];
value1 = h1 - ((h1 - h2)/(i1 - i2));
}
}
}
Else
{
if value1 > 0 and CrossUp(C,value1) Then
{
Value2 = c;
Value3 = Index;
}
if Value2 > 0 and Index <= Value2+100 and C >= Value2*1.03 and C <= Value2*0.97 Then
Find(1);
}
즐거운 하루되세요
> 민서홧팅 님이 쓴 글입니다.
> 제목 : 다시한번 수식 문의드립니다!
> 늘 친절하신 설명 감사합니다.
수식은 가능하지만,
조건검색 봉수 제한 때문에 어렵다고 말씀하셔서
스윙하이 값을 조정하여 다시 여쭤봅니다.
예스수식 초보자이다 보니,, 스윙하이 값을 배열로 넣는 부분을 어떻게 구성할지 감이 잡히지 않아 여쭤봅니다.
대략 스윙하이 결과를 for문이나 while로 반복해서 array로 넣고, if 조건을 걸면 될 것 같은데, 배열로 넣는 부분에 대한 설명이 어디에서도 찾지 못해서 여쭤봅니다...
조건수식 정의를 순서대로 말씀드리면,
1. 일봉 20일 이동평균보다 종가가 높은 경우의 스윙하이 값들을 배열로 변수에 넣은 다음,
(이 때 스윙하이는 왼쪽 5봉, 오른쪽 5봉을 기준으로 합니다.)
2. 스윙하이 값들 중 표준편차 95% 범위 내의 값으로만 배열을 재정의한 후,
3. 재정의된 스윙하이 값의 최고가와 봉번호, 2번째 고가와 봉번호를 구하고,
4. 최고가 - ((최고가 - 2번째 고가)/(최고가 봉번호 - 2번째 고가 봉번호))와 같이 선형방정식을 변수로 할당하고,
5. 최근 100봉 이내 일일 종가가 선형방정식의 값을 1회 이상 상향돌파한 경우,
6. 금일 종가가 해당 종가의 시가에 3% 범위 내에 수렴하는 종목을 검색하는 검색식이 구현 가능한가요?
스윙하이 값을 배열 형태로 변수에 넣는 것에서 계속 에러가 나서 문의드립니다....
2023-07-21
1459
글번호 170837
답변완료
수식 문의드립니다.
LRL로 종목검색식을 만들었는데, 제대로 만든게 맞는지 확인 부탁드립니다.
LRL을 2번하고 변동폭을 추가해서 조정LRL을 만든 다음,
조정 LRL의 스윙하이, 스윙로우를 구한 후 최고, 최저점의 수렴 구간을 검색하는 것입니다.
input : 기간1(50),left(3),right(3);
var : a(0),a1(0),eq(0),ZL(0), swhzl(0), swlzl(0), level(0);
A = LRL(C,기간1);
A1 = LRL(A,기간1);
eq= A-A1;
ZL =A+eq;
if SwingHigh(1,zl,left,right,left+right+1)!= -1 Then
swhzl = SwingHigh(1,zl,left,right,left+right+1);
if SwingLow(1,zl,left,right,left+right+1)!= -1 Then
swlzl = SwingLow(1,zl,left,right,left+right+1);
level = (swhzl-swlzl)/c;​
if level < 0.25 and (zl-c)/c < 0.03 Then
Find(1);
======
아참, 그리고 혹시 위 수식에서 swlzl[1]은 스윙로우 값의 직전 값으로 결과값이 반환되는 것이 맞나요?
2023-07-21
1322
글번호 170836
답변완료
특정 시간대의 시고저종
안녕하세요 날이 많이 더운데 항상 기운 넘치시길 바라겠습니다
특정 시간대의 시고저종 값을 어레이에 넣어서 사용하고 싶습니다.
ex) OOO[1] 일 경우에는, 어제의 특정 시간대의 오픈 프라이스 값. [2]의 경우 그저께
ex) 장 시작후 30분 봉의 시고저종 등등
시작 및 종료시간은 제가 설정 할수 있도록 부탁드립니다!
항상 감사합니다
2023-07-21
1123
글번호 170835