커뮤니티

예스랭귀지 Q&A

글쓰기

[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내

안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
프로필 이미지
예스스탁
2026-02-27
1209
글번호 230811
지표
답변완료

지표 부탁드립니다.

1. 이격도 20 이격도 60 기준선 100 (이격도 20, 60 같이 지표 표현) 이격도 지표 부탁드려요
프로필 이미지
일지매7
2025-12-19
127
글번호 229188
지표
답변완료

조건검색색식 부탁드립니다

안녕하세요아래수식은 키움에서 쓰고 있는 A수식선 인데요항상 전일자 기준으로 1분봉에서 지수60이평선을 캔들고가가 아래 A수식선을 골든크로스 할때를 성과검증을 위해 특정 시간과 분( 예를들어 2025년11월18일 9시23분)을 변수입력창에 입력하여 종목들이 검색되는 검색식을 알려주시면 감사하겠습니다 ^^ 더 좋은 방법도 부탁드립니다^^ 감사합니다상 = Valuewhen(1, Highest(V, 기간)==V,H);하 = Valuewhen(1, Highest(V, 기간)==V,L);시 = Valuewhen(1, Highest(V, 기간)==V,O);종 = Valuewhen(1, Highest(V, 기간)==V,C);(상+하)/2
프로필 이미지
감땡
2025-12-19
141
글번호 229185
종목검색
답변완료

수식 문의 드립니다

프로그램 수식 문의 드립니다. 1) 매수: 5이평선 상향시 매수 1510시 매수 청산2) 매도 : 5이평선 하향시 매도 1510시 매도 청산
프로필 이미지
기관장
2025-12-19
84
글번호 229177
시스템
답변완료

검색식 문의 드립니다. _( _ _)_

항상 도와주심에 감사드립니다._(_ _)_아래의 수식은 지난번에 알려주신 상한가 5봉전에 상한가+와 520골든크로스 나온 종목을 0봉전에서 시가 ,몸통중심, 종가를 각각 돌파하는 종목 검색식 내용인데 검색이 되지 않습니다. 확인 좀 부탁드립니다.그리고 10봉전에서 6봉전까지 상한가가 2번 나오고(마지막 상한가 종가가 첫 상한가보다 더 커야 합니다) 0봉전에 1~4봉전 최고음봉시가를 돌파하는 종목 검색식, 최저음봉시가를 돌파하는 검색식 도 부탁드립니다. 번거롭게 해서 죄송합니다. 2-1 시가돌파 var : 상한가(0), UpLimit(0); var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0); if date >= 19981207 then { if date < 20050328 && CodeCategory() == 2 then UpLimit = (BP[0] * 1.12); Else if date >= 20050328 and date < 20150615 Then UpLimit = (BP[0] * 1.15); Else UpLimit = (BP[0] * 1.30); if CodeCategory() == 2 then { if date >= 20030721 then { up1 = int(UpLimit/100+0.00001)*100; up2 = int(UpLimit/100+0.00001)*100; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/10+0.00001)*10; up7 = int(UpLimit/1+0.00001)*1; } } Else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } if CodeCategory() == 1 || CodeCategory() == 2 then { if sdate < 20101004 Then{ If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up6); } Else{ If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up7); } } else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF 상한가 = up6; } } var1 = ma(C,5); var2 = ma(C,20); Condition1 = H == 상한가 and CrossUp(var1,var2); if Condition1 == true Then { value1 = O; value2 = (C+O)/2; value3 = C; } if Condition1[5] == true and CrossUp(C,value1) Then Find(1); 2-3 몸통중심돌파 var : 상한가(0), UpLimit(0); var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0); if date >= 19981207 then { if date < 20050328 && CodeCategory() == 2 then UpLimit = (BP[0] * 1.12); Else if date >= 20050328 and date < 20150615 Then UpLimit = (BP[0] * 1.15); Else UpLimit = (BP[0] * 1.30); if CodeCategory() == 2 then { if date >= 20030721 then { up1 = int(UpLimit/100+0.00001)*100; up2 = int(UpLimit/100+0.00001)*100; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/10+0.00001)*10; up7 = int(UpLimit/1+0.00001)*1; } } Else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } if CodeCategory() == 1 || CodeCategory() == 2 then { if sdate < 20101004 Then{ If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up6); } Else{ If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up7); } } else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF 상한가 = up6; } } var1 = ma(C,5); var2 = ma(C,20); Condition1 = H == 상한가 and CrossUp(var1,var2); if Condition1 == true Then { value1 = O; value2 = (C+O)/2; value3 = C; } if Condition1[5] == true and CrossUp(C,value2) Then Find(1); 2-2 종가돌파 var : 상한가(0), UpLimit(0); var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0); if date >= 19981207 then { if date < 20050328 && CodeCategory() == 2 then UpLimit = (BP[0] * 1.12); Else if date >= 20050328 and date < 20150615 Then UpLimit = (BP[0] * 1.15); Else UpLimit = (BP[0] * 1.30); if CodeCategory() == 2 then { if date >= 20030721 then { up1 = int(UpLimit/100+0.00001)*100; up2 = int(UpLimit/100+0.00001)*100; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/10+0.00001)*10; up7 = int(UpLimit/1+0.00001)*1; } } Else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } if CodeCategory() == 1 || CodeCategory() == 2 then { if sdate < 20101004 Then{ If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up6); } Else{ If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up7); } } else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF 상한가 = up6; } } var1 = ma(C,5); var2 = ma(C,20); Condition1 = H == 상한가 and CrossUp(var1,var2); if Condition1 == true Then { value1 = O; value2 = (C+O)/2; value3 = C; } if Condition1[5] == true and CrossUp(C,value3) Then Find(1);
프로필 이미지
한칼부르스
2025-12-19
281
글번호 229174
종목검색
답변완료

종목 검색식 부탁드립니다.

안녕하세요. 수고 하십니다.종목 검색 수식어 부탁드립니다.
프로필 이미지
치치야
2025-12-19
77
글번호 229173
종목검색
답변완료

분봉 복합차트에서 주간장과 야간장 구별 방법

안녕하세요. 주간장과 야간장의 대응 로직을 다르게 적용하려고 합니다. 그래서 주간장 야간장 구별을 해야 하는데, 아래 방법을 써 봤으나 되질 않습니다.If Bdate[1] <> Bdate Then 야간장 로직 적용ElseIf Time[1] < 080000 And 080000 <= Time Then 주간장 로직 적용특히 데이터 문제인지 어떤 날들은 야간장 데이터가 자정까지 밖에 없는 경우도 있어 적용이 어긋납니다. 방법이 있을까요?조언 부탁드립니다.
프로필 이미지
다니엘87
2025-12-19
172
글번호 229171
시스템
답변완료

시스템 식 부탁 드립니다

코스피 선물 적용 예정입니다 1.선현물 베이시스 가 3연속 증가 하는 경우 매수 2.선현물 베이시스가 4연속 감소 하는 경우 매도 3,선현물 베이시스가 안 변하는 경우 베이시스 감소로 간주헤서 매수,매도식 각각 새로 작성한다
프로필 이미지
우리상향
2025-12-19
112
글번호 229169
시스템
답변완료

함수에서 다수의 변수 처리 방법

보통 입력 파라메터를 read-only 변수로 주고 결과값을 3가지 타입 중에 하나로 해서 하나의 결과값만 받는 기본적인 함수 사용법말고, 함수 안에서 여러 값들로 여러 변수를 한꺼번에 처리해주어서 모듈화를 시키고 싶은데, 살펴보다보니 ref타입으로 함수 파라메터를 선언해주면, 외부에서 해당 변수를 지정해주면 해당 변수의 값을 함수안에서 수정하고 함수가 호출이 리턴이 되고 나면 해당 여러 변수들은 모두 다 수정된 값이 함수 외부에서 수정된 상태로 읽을 수 있는 것이 맞을 지요? 예를 들어서 10개의 값을 입력 변수로 지정하고, 그것들로 5개의 변수값을 계산 및 처리하고 싶을 때의 함수 선언 방법과 사용예를 부탁 드리거나, 아니면 기존 질의 응답 내용 중에 참조할 만한 글이 있다면 해당 내용의 글번호 알려주시면 참고하여 적용해 보도록 하겠습니다.아 그리고 거기에 더해서, 참조데이타나 시고저종 등의 시리즈 변수 같은 것들을 넘겨서 함수 내에서 처리하고 싶을 땐, 역시 함수 선언과 사용을 어떻게 하면 되는 지도 문의 드립니다.언제나 노고에 감사드립니다~
프로필 이미지
온고지신
2025-12-19
157
글번호 229168
사용자 함수
답변완료

종목검색식 부탁드립니다

1. 보조지표 "이격도"에서, "20이격도 와 60이격도 "가 " 기준선 100이하 에서," 서로 0.5% 이내로 붙어있는 (수렴) 종목검색식 부탁드립니다. (변수로부탁드립니다)2. 보조지표 " 이격도"에서, "20이격도와 60 이격도" 가 "기준선 100 이상 에서," 서로 0.5% 이내로 붙어있는(수렴) 종목검색식 부탁드려요 (변수로 부탁드려요)3. 보조지표 이격도 에서 20 이격도와 60이격도가 "기준선 100 이하에서" 각각 (20 이격, 60 이격) 전일보다 상승한 종목검색식 부탁드려요.4. 보조지표 이격도 에서 20 이격도와 60 이격도 가 "기준선 100 이상에서" 각각 (20이격,60이격) 전일보다 상승한 종목검색식 부탁드려요.5. 이격도 에서 20 이격도 가 전일보다 상승한 종목 검색식 부탁드려요6. 이격도 에서 20 이격도가 기준선 100을 돌파한 종목 검색식 부탁드려요
프로필 이미지
일지매7
2025-12-19
120
글번호 229167
종목검색