커뮤니티

예스랭귀지 Q&A

글쓰기

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

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

종목검색식 문의

글번호 227653 에서 " 위 그림과 같이 아이원플러스, 모니터랩은 그 이후에도 만족한 날짜가 있습니다. 즉 30일중 여러날 만족하면 가장최근 날짜가 결과값으로 표시됩니다." 라는 답변을 받았습니다. 그렇다면 30일치 검색을 하였을때, 종목이 각 다른 날에 중첩되어 검색이 되더라도 검색된 날 각 표시가 되게 할 수 는 없을까요? 예를 들어 오늘을 기준으로 30일치를 한번에 검색할때 11월 1일에 삼성전자가 검색이 되고11월 5일에도 삼성전자가 검색이 된다면, 글번호 227653에서 제가 작성한 식으로는 11월 5일 삼성전자만 표시가 됩니다. 제가 원하는 것은 11월 1일에도 삼성전자가 나오고, 11월 5일에도 삼성전자가 나오게 하는 것입니다. (중복일시 가장 최근에 검색된 것만 검색된 날짜만 표시되는 것이 아닌 ! ) 모든 날짜에 표시가 되게 할 수 있도록 아래 수식을 변경해주시면 감사하겠습니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/* 조건식 변환본 (최근 30일치 자동검색 버전) 원식: A and B and C and ((D and E and F and G and H) or (M and J and K)) and N and O and P and Q*/var : A(false), B(false), Cc(false), Dd(false), Ee(false), Ff(false);var : Gg(false), Hh(false), Mm(false), Jj(false), Kk(false);var : Nn(false), Oo(false), Pp(false), Qq(false);var : d(false);var : VALUE1(0);/* A: 1봉전 종가대비 0봉전 고가등락률 15% 이상 */A = (H - C[1]) / C[1] * 100 >= 15;/* B: 0봉전 시가 < 0봉전 종가 */B = O < C;/* C: [일]거래대금(일:백만) 20000이상 999999999이하 → 원단위로 변환: 20000000000 ~ 999999999000000*/Cc = m >= 20000000000 and m <= 999999999000000;/* D: [일]3봉전 5봉 평균거래량 100000이상 999999999이하 */Dd = ma(V,5)[3] >= 100000 and ma(V,5)[3] <= 999999999;/* E: 1봉전 종가대비 0봉전 종가등락률 29.65% 이하 */Ee = (C - C[1]) / C[1] * 100 <= 29.65;/* F: 3봉전 종가대비 2봉전 종가등락률 29.65% 이하 */Ff = (C[2] - C[3]) / C[3] * 100 <= 29.65;/* G: 2봉전 시가 < 2봉전 종가 */Gg = O[2] < C[2];/* H: 3봉전 종가대비 2봉전 고가등락률 15% 이상 */Hh = (H[2] - C[3]) / C[3] * 100 >= 15;/* M: [일]4봉전 5봉 평균거래량 100000이상 999999999이하 */Mm = ma(V,5)[4] >= 100000 and ma(V,5)[4] <= 999999999;/* J: 3봉전 시가 < 3봉전 종가 */Jj = O[3] < C[3];/* K: 4봉전 종가대비 3봉전 고가등락률 15% 이상 */Kk = (H[3] - C[4]) / C[4] * 100 >= 15;/* N: 1봉전 종가대비 0봉전 종가등락률 29.65% 이하 */Nn = (C - C[1]) / C[1] * 100 <= 29.65;/* O: 2봉전 종가대비 1봉전 종가등락률 29.65% 이하 */Oo = (C[1] - C[2]) / C[2] * 100 <= 29.65;/* P: 3봉전 종가대비 2봉전 종가등락률 29.65% 이하 */Pp = (C[2] - C[3]) / C[3] * 100 <= 29.65;/* Q: 4봉전 종가대비 3봉전 종가등락률 29.65% 이하 */Qq = (C[3] - C[4]) / C[4] * 100 <= 29.65;/* 최종식 */d = A and B and Cc and ( (Dd and Ee and Ff and Gg and Hh) or (Mm and Jj and Kk) ) and Nn and Oo and Pp and Qq;/* 조건 충족일 기록 */if d then VALUE1 = sDate;/* 최근 30일 내 조건이 한 번이라도 발생한 종목만 출력 */if CountIf(d == true, 30) >= 1 then Find(VALUE1);
프로필 이미지
마을
2025-11-05
273
글번호 227685
종목검색
답변완료

종목검색되게 조건검색식 부탁드립니다

조건검색식 코드수식 부탁드립니다 1.일목구름수치값 : ShortPeriod 40 ,midPeriod 125, Longperiod 250 (첨부한 구름대는 26일 앞당긴 구름입니다(현재캔들위치와 구름색깔이 양운인지 바로알수있게 해놨슴) 2. 반드시 양운구름안으로 한번은 캔들이 들어갔다가 캔들이 양운위로 나오는 순간 or 돌파완료시 검색식에 나타나게 해주세요. (최근 5일 내 캔들이 구름 안에 들어간 적이 있고,오늘(또는 최근 1일) 종가가 구름 상단을 돌파할 때 종목이 포착되게 해주고,5일 평균대비 거래량도 150% 급증종목이면 좋겠습니다)
프로필 이미지
해피럭키
2025-11-05
232
글번호 227684
종목검색
답변완료

예스종목검색으로 변환요쳥합니다...

아래는 키움 신호검색 200일 신고가 신호수식입니다...이것을 신고가 첫봉(일봉기준) 예스 종목검색으로 요청합니다..highest(C(1), 200) < C
프로필 이미지
서민순
2025-11-05
166
글번호 227683
종목검색
답변완료

익절 이후 익절가격 돌파할 경우만 거래 계속

익절1이 발생하면 다음 거래는 익절1 가격을 돌파해야 거래를 계속하는 수식으로 수정바랍니다.익절2가 발생하면 마찬가지로 익절2가를 돌파해야 거래를 계속하는 수식으로 수정바랍니다.아래 수식은 익절 발생과 상관없이 조건을 만족하면 거래를 수행합니다.항상 고맙습니다.******************************************************************************************************************************input : 진입시간(084500),진입제한시간(150000);input : 거래횟수(5),누적패수(5),연속패수(3),누적패수조정(4);input : b1(1),진입눌림1(2),진입돌파1(3);input : b2(2),진입눌림2(3),진입돌파2(4);input : als(550),atr1(0),atr2(315);input : bls(480),btr1(0),btr2(730);input : b1lock(120000),익절1(330);input : b2lock(140000),익절2(590);var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0),V1(0);var : Tcond(false);var : loss(0),consecLoss(0),패수(0);//영업일변경if bdate != bdate[1] Then{ //손실횟수 초기화 0 loss = 0; //연속손실횟수 초기화 0 consecLoss = 0; //패수는 누적패수 패수 = 누적패수;}//청산발생if TotalTrades > TotalTrades[1] Then{ //손실이면 if PositionProfit(1) < 0 Then { //loss 1씩 증가 loss = loss+1; //consecLoss 1씩 증가 consecLoss = consecLoss+1; //consecLoss이 3이면 패수를 누적패수에서 누적패수조정으로 변경 if consecLoss == 연속패수 Then { 패수 = 누적패수조정; } } Else //손실이 아니면 consecLoss으로 초기화 consecLoss = 0;} if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then Tcond = true; if (sdate != sdate[1] and stime >= 진입제한시간) or (sdate == sdate[1] and stime >= 진입제한시간 and stime[1] < 진입제한시간) Then Tcond = false; if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then{ T1 = TotalTrades; E1 = 0; LL = L; } if stime >= 진입시간 then{ if L < LL Then LL = L; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 Then{ if E1 == 0 and C >= LL+PriceScale*B1 Then{ E1 = 1; H1 = H; i1 = index; V1 = LL; //시작점 종가 } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; #저가가 시작봉종가보다 클때만 눌림체크 if L >= V1 and L <= H1-PriceScale*진입눌림1 Then{ E1 = 2; i1 = index; S1 = H1; } } //시작점 종가보다 낮은 가격이 발생하면 초기화 if E1 >= 1 and L < V1 Then{ E1 = 0; LL = L; } if loss < 패수 and E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파1 and Tcond == true Then{ buy("b1"); } } if TotalTrades > TotalTrades[1] Then{ E1 = 0; LL = L; } if L < LL Then LL = L; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C >= LL+PriceScale*B2 Then{ E1 = 1; H1 = H; i1 = index; V1 = LL; //시작점 종가 } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; #저가가 시작봉종가보다 클때만 눌림체크 if L >= V1 and L <= H1-PriceScale*진입눌림2 Then{ E1 = 2; i1 = index; S1 = H1; } } //시작점 종가보다 낮은 가격이 발생하면 초기화 if E1 >= 1 and L < V1 Then{ E1 = 0; LL = L; } if loss < 패수 and loss < 누적패수 and E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파2 and Tcond == true Then{ buy("b2"); } } } if MarketPosition== 1 Then{ if IsEntryName("b1") == true Then { SetStopLoss(als,PointStop); SetStopTrailing(atr2,atr1,PointStop,1); } Else if IsEntryName("b2") == true Then { SetStopLoss(bls,PointStop); SetStopTrailing(btr2,btr1,PointStop,1); } Else { SetStopLoss(0); SetStopTrailing(0,0); }}if marketposition() == 1 and IsEntryName("b1") == true and stime<b1lock Then ExitLong("익절1",Atlimit,EntryPrice+익절1);if marketposition() == 1 and IsEntryName("b2") == true and stime<b2lock Then ExitLong("익절2",Atlimit,EntryPrice+익절2);SetStopEndofday(151500);
프로필 이미지
목마와숙녀
2025-11-05
175
글번호 227682
시스템
답변완료

장시작부터 15분간의 최고가를 넘어서는 종목검색식을 만들고 싶은데 알려주세요

장시작 부터 15분간의 최고가를 구하고 현재가가 최고가를 넘어서면 검색되는 종목검색식을 만들고 싶은데 ////////////////////////////////////////////////////////////////// 예스트레이더 예스랭귀지 조건검색식// 09:00:00~09:16:00 양봉 여부 모니터링용 출력 추가////////////////////////////////////////////////////////////////Input: StartTime(90000), // 09시 00분 00초 EndTime(91500); // 09시 15분 00초Vars: OpenVal(0), highVal(0), CloseVal(0); // 지정 시간 구간 내 시가, 종가 구함OpenVal = TimeOpen(StartTime, EndTime);CloseVal = TimeClose(StartTime, EndTime);highVal = TimeHigh(StartTime, EndTime);// 조건 충족 시 종목 검색 신호 발생if Close>highVal and CloseVal>OpenVal Then Find(CloseVal);뭐가 잘못되서 2000~2200 까지의 값만 나올까요?
프로필 이미지
성공한럭키홍홍
2025-11-05
195
글번호 227681
종목검색
답변완료

문의드립니다

**data2 이평선참고해서 data1증액매수식인데요.1.이평선골든크로스이후에Inputs: FastMovAvg(12), SlowMovAvg(26), MACDMovAvg(9);Variables: XMACD(0);If Crossup(MACD(FastMovAvg, SlowMovAvg), EMA(MACD(FastMovAvg, SlowMovAvg), MACDMovAvg)[1]) Then Buy ("MACD");위수식을 추가로입력하고싶습니다.--원래수식 --inputs : P1(5),P2(20),RSILength(10), OverSold(30),OverBought(70);input : 첫진입금액(1000000),A(10);var : m1(0,Data2),m2(0,Data2), R(0,Data1);var : TT(0,Data1),T1(0,Data1),entry(0,Data1),mm(0,data1),vol(0,Data1);m1 = Data2(ma(C,P1));m2 = Data2(ma(C,P2));R = data1(RSI(RSILength));If Data2(m1 > m2) and Crossup(R, OverSold) Then{ if TotalTrades == 0 Then mm = 첫진입금액; Else mm = mm*(1+A/100); Buy("B",OnClose,Def,Floor(Floor(mm/C)/10)*10);}if data2(crossup(ma(c,5),ma(c,20))) Then{ if TotalTrades == 0 Then mm = 첫진입금액; Else mm = mm*(1+A/100); Buy("B2",OnClose,Def,Floor(Floor(mm/C)/10)*10);}if Data2(CrossDown(m1,m2)) or Crossup(R, OverBought) Then Sell("S");
프로필 이미지
2685up
2025-11-05
185
글번호 227676
시스템
답변완료

거래량관련 종목검색식을 만들고 싶은데 잘 안됩니다 도와주세요

파워종목검색에 쓸 종목검색을 추가하고 싶은데 필요한 부분을 gpt에게 물어도 엉뚱한 답만 나오네요원하는 종목 검색 조건상대거래량 = 장시작(9시00분01초)부터 검색하는 시점까지의 거래량/오늘 제외 전일부터 14일동안의 장시작부터 같은시각까지의 거래량의 평균1. 상대거래량이 100% 이상인 종목 검색2, 상대거래량 랭킹을 만들어서 상위20위권만 종목 검색이렇게 만들고 싶은데 잘 안됩니다 도와주세요
프로필 이미지
성공한럭키홍홍
2025-11-05
310
글번호 227673
종목검색
답변완료

문의드립니다.

답변해 주신 아래 수식에서 나스닥 10분봉 초기자본 1만달러로 시작하는 수식으로 변경 그리고 아래수식을 시스템에 적용을 하면 최초에 한번 만 매수가 일어나고 그 이후에는 매매가 안일어나는 것 같습니다.수정을 부탁드립니다.//////////////////////////////// 최초 자본 100만원 10분봉 매매에서 무포지션시 무조건 70% 매수하고요. 30% 현금이고요. 매수 투자분: 현금 비율이 70:30 되도록 투자비율 리밸런싱을 합니다. 투자매수에서 10% 수익이 나면 77:30 비율이 되면 비율이 70: 30 되도록 투지매수 이익분을 처분하고 반대로 투자매수에서 10% 손실이 나면 63:30 비율이 되면 비율이 70: 30 되도록 현금을 투자합니다. 수식을 부탁드립니다. 시스템답변 1예스스탁 예스스탁 답변2025-11-04 09:18:57 안녕하세요 예스스탁입니다. input : 자본(1000000); var : MM(0),vol(0),Cash(0),diff(0); MM = 자본+NetProfit; if MarketPosition == 0 and Index > 5 Then { vol = Floor((MM*0.7)/C); Buy("B",OnClose,Def,vol); Cash = MM-(Vol*C); } if MarketPosition == 1 Then { var1 = C*CurrentContracts; var2 = (var1+Cash)*0.7; if var1 >= var2 Then { diff = Floor(abs(var1-var2)/C); if diff > 0 Then { ExitLong("bx",OnClose,Def,"",diff,2); Cash = Cash + (diff*C); } } Else { diff = Floor(abs(var1-var2)/C); if diff > 0 Then { Buy("bb",OnClose,Def,diff); Cash = Cash - (diff*C); } } } 즐거운 하루되세요
프로필 이미지
종호
2025-11-05
188
글번호 227664
시스템
답변완료

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

1. 아래의 예스트레이더 수식에, "0봉전 ~10봉전까지의 모든종목" 을 추가하여 수정 부탁드려요. -아래--- Input: ConvPeriod1(8), BasePeriod1(19), SpanPeriod1(33), ConvPeriod2(9), BasePeriod2(26), SpanPeriod2(52); Vars: Conv1(0), Base1(0), Span1_1(0), Span1_2(0), Cloud1_Upper(0), Cloud1_Lower(0), Conv2(0), Base2(0), Span2_1(0), Span2_2(0), Cloud2_Upper(0), Cloud2_Lower(0), BullishCross(false), BearishCross(false); // 반일목 계산 Conv1 = (Highest(H, ConvPeriod1) + Lowest(L, ConvPeriod1)) / 2; Base1 = (Highest(H, BasePeriod1) + Lowest(L, BasePeriod1)) / 2; Span1_1 = (Conv1 + Base1) / 2; Span1_2 = (Highest(H, SpanPeriod1) + Lowest(L, SpanPeriod1)) / 2; if Span1_1 < Span1_2 then { Cloud1_Upper = Span1_1; Cloud1_Lower = Span1_2; } else { Cloud1_Upper = Span1_2; Cloud1_Lower = Span1_1; } // 정일목 계산 Conv2 = (Highest(H, ConvPeriod2) + Lowest(L, ConvPeriod2)) / 2; Base2 = (Highest(H, BasePeriod2) + Lowest(L, BasePeriod2)) / 2; Span2_1 = (Conv2 + Base2) / 2; Span2_2 = (Highest(H, SpanPeriod2) + Lowest(L, SpanPeriod2)) / 2; if Span2_1 < Span2_2 then { Cloud2_Upper = Span2_1; Cloud2_Lower = Span2_2; } else { Cloud2_Upper = Span2_2; Cloud2_Lower = Span2_1; } // 돌파 조건 BullishCross = CrossUp(Cloud1_Upper, Cloud2_Upper); // 상향 돌파 BearishCross = CrossDown(Cloud1_Lower, Cloud2_Lower); // 하향 돌파 // 검색 조건 if BullishCross then { Find(1); // 상향 돌파 종목 검색 } /* 하향 돌파 종목도 검색하려면 아래 주석 해제 if BearishCross then { Find(1); }*/
프로필 이미지
일지매7
2025-11-05
149
글번호 227659
종목검색