커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1507
글번호 230811
답변완료
문의 드립니다.
안녕하세요 요청 사항에 대하여 친절하게 회신 주셔서 항상 감사드립니다. RSI(5)가 70 이상일때, 현재 가격(또는 캔들)이 아래의 1번 라인과 2번라인을 동시에 같이 돌파하는 종목의 검색식을 부탁 드립니다. 1번라인 ( ZLMA ).myEMA = eavg(C, 기간);correction = C + (C - myEMA);eavg(correction, 기간)지표조건 ( 기간 : 15 )2번라인.A=avg(c,17);ATR=avg(max(max(h-L,abs(c(1)-h)),abs(c(1)-L)),17);B=ATR*2;D=A+B;E=Bbandsup(17,2);e1=crossup(E,D);e2=crossdown(E,D);e3=crossdown(c,E);valuewhen(1,e1 or e2 or e3,o)감사합니다.
2025-12-19
189
글번호 229194
답변완료
종목검색식 부탁드립니다
M = BBandsUP(20, 2);LL = Lowest(M, 기간);HH = Highest(M, 기간);NL = Valuewhen(1, M<LL(1),M);Valuewhen(1,BarsSince(M<LL(1))==(기간-k),NL);CrossUp(C,NL)기간 :10M:2종목검색식 부탁드립니다
2025-12-19
151
글번호 229193
답변완료
종목검색식 요청드립니다.
아래와 같이 요청드립니다.1. 주봉의 10이평선을 일봉에 표시하는 지표수식2. N봉이내에 1번 라인을 돌파(종가기준)한 종목을 검색하는 검색식항상 많은 도움에 감사드립니다.
2025-12-19
115
글번호 229189
답변완료
지표 부탁드립니다.
1. 이격도 20 이격도 60 기준선 100 (이격도 20, 60 같이 지표 표현) 이격도 지표 부탁드려요
2025-12-19
149
글번호 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
172
글번호 229185
답변완료
수식 문의 드립니다
프로그램 수식 문의 드립니다. 1) 매수: 5이평선 상향시 매수 1510시 매수 청산2) 매도 : 5이평선 하향시 매도 1510시 매도 청산
2025-12-19
124
글번호 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
372
글번호 229174
답변완료
종목 검색식 부탁드립니다.
안녕하세요. 수고 하십니다.종목 검색 수식어 부탁드립니다.
2025-12-19
102
글번호 229173
답변완료
분봉 복합차트에서 주간장과 야간장 구별 방법
안녕하세요. 주간장과 야간장의 대응 로직을 다르게 적용하려고 합니다. 그래서 주간장 야간장 구별을 해야 하는데, 아래 방법을 써 봤으나 되질 않습니다.If Bdate[1] <> Bdate Then 야간장 로직 적용ElseIf Time[1] < 080000 And 080000 <= Time Then 주간장 로직 적용특히 데이터 문제인지 어떤 날들은 야간장 데이터가 자정까지 밖에 없는 경우도 있어 적용이 어긋납니다. 방법이 있을까요?조언 부탁드립니다.
2025-12-19
212
글번호 229171