커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 문의 드립니다

관리자님 노고가 많으십니다.검색 수식 부탁 드립니다.매수 : 1봉전 봉의 종가보다 5% 상향하는종목 즉시매수매수: 1봉전 봉의 시가보다 5% 상향하는종목 즉시매수매수: 방금전 이번 매도 가격보다 5% 이상 상승시 즉시 매수매도: 1봉전 종가보다 5% 하향하는 종목 즉시매도매도: 1봉전 시가보다 5% 하향하는 종목 즉시매도매도: 이번 매수점 대비 수익이 1% 이상인 경우 이번 매수점부터 최고수익대비 40% 하락시 즉시매도매도: 이전1봉전 종가대비 수익이 1% 이상인 경우 이번 매수점부터 최고수익대비 40% 하락시 즉시매도
프로필 이미지
기관장
2026-06-24
161
글번호 232568
시스템
답변완료

문의 드립니다

안녕하세요.현재 KOSPI200 선물 데이터가 5분봉 기준 약 6개월, 1분봉 기준 약 1개월 정도까지만 당일 기준으로 조회되는 것으로 확인되는데혹시 이보다 더 이전 기간의 데이터까지 조회할 수 있는 기능이나 별도 설정 방법이 있는지 문의드립니다.또한 현재 확인되는 데이터가 KRX에서 제공하는 데이터와 일부 상이한 부분이 있어,해당 차이가 데이터 제공 범위, 보정 방식, 또는 시스템상 반영 기준의 차이에서 비롯된 것인지도 함께 확인 부탁드립니다.만약 YesStock 시스템 내에서 더 긴 기간의 과거 데이터 조회가 어렵다면,별도로 과거 KOSPI200 선물 데이터를 확보할 수 있는 방법(예: 외부 데이터 구매, 별도 제공처 이용 등)이 있는지도 안내해주시면 감사하겠습니다.확인 부탁드리겠습니다.감사합니다.
프로필 이미지
풍성매매
2026-06-24
473
글번호 232567
시스템
답변완료

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

안녕하세요 어제 만들어주셨던 검색수식인데요저는 나중에 성과관리 하기위해서 input 로 날짜을 지정해서 검색하길 원합니다바쁘시겠지만 부탁드립니다var : sig1(False),sig2(False),sig3(False),sig4(False),sig5(False);sig1 = crossup(c,Ema(c,240));sig2 = v >= ma(v,20) * 3;sig3 = v >= 500000;sig4 = (c/c[1]-1)*100 >= 10;sig5 = (c/o-1)*100 >= 8;if sig1 and sig2 and sig3 and sig4 and sig5 ThenFind(1);
프로필 이미지
감땡
2026-06-24
219
글번호 232566
종목검색
답변완료

문의 드립니다.

안녕하세요. 수식은 아니고 거래 방식이 가능한지 여부를 문의드립니다.* yeslanguage에서 일봉으로 신호를 내서 yesspot에서 거래 중입니다.* yeslanguage의 매수 신호는 전일자까지의 데이터로 확정이 되고, 신호는 그 가격들로 조합돼서 만들어집니다.(당일 장중의 데이터는 없습니다.)* 여기에 당일 장중의 데이터를 넣으려고 합니다. (예, 당일 장중의 가격을 반영한 실시간 RSI(10)가 50 상승돌파하면 매수)* 이 경우 if(RSI 50 돌파) 조건을 넣으면 장 마감후에 if 문이 성립하므로, 참조(data1)에 1분봉을 넣고 date1 기준의 당일 rsi값(실시간) 및 RSI를 만들기 위한 전일 이전의 데이터(일봉기준)을 spot에서 받습니다. (당일은 실시간 데이터, 전일 이전은 일봉 데이터)* spot에서 RSI 50 돌파여부를 실시간으로 계산해서 RSI 50을 돌파하면 매수합니다.* yeslanguage에서는 일봉기준의 RSI50 돌파 시(if문이니 장마감 후) 매수* 맹점 : yeslanguage에서 장 마감후 RSI50 돌파가 안나오면 매수 신호가 안나오기 때문에 나중에 yesspot으로 자동으로 매도를 할 수 없다.* 보완점 : spot에서 당일 거래 내역을 보관하다가 동시 호가 이전(예, 15:19분)까지 yeslanguage에서 매수신호가 안나오면 yesspot에서 동시호가에 매도.이렇게 하는 게 가능할까요??? 아니면 일봉에서 당일 실시간 데이터를 이용해서 거래(yeslanguage 또는 yesspot)할 수 있는 다른 방법이 있으면 조언 부탁드립니다.감사합니다. 행복한 하루 보내세요./////////////////////////////////////////////////////////////////생각하다가 추가 문의를 드립니다.그런데 data1을 안붙여도 실시간으로 각종 값들이 계속 들어오니까분봉을 붙일 필요 없이 실시간 값들을 가져다가 spot에서 값을 만들고 바로 사용가능한가요?예를 들어 ma5 = (c+c[1]+c[2]+c[3]+c[4])/5 이니 기 확정된 c[1],c[2],c[3],c[4]과 실시간으로 들어오는 c 값을 다 넘겨서spot에서 ma5를 만들고 crossup(c,ma5) 이렇게 하면 당일 장 중 값으로 실시간 지표를 만들고 거래 가능할 것 같습니다.제 생각이 맞는 건지 문의드립니다.감사합니다.
프로필 이미지
깜피
2026-06-24
396
글번호 232563
시스템
답변완료

추세선 꼭지와 꼭지사이의 캔들 갯수를 포함하는 수식으로 수정해주세요

아래 추세선 수식에 추세선 꼭지와 꼭지 사이의 캔들갯수를 포함하는 수식으로 수정해주세요감사합니다===========================================================input : Period(35),선두께(2),기준(-10),p(20);Var:상승색(Turquoise), 하락색(Turquoise),Vpower(0),mav(0),v1(0),v2(0);Var:j(0),T(0);Var: date11(0),date12(0),time11(0),time12(0),TL1(0),TL(0),tl9(0), date21(0),date22(0),time21(0),time22(0),diff(0),diffr(0), date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0),box(0);Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0);Array:r[7](0),fr[7](0),TL2[7](0),TL3[7](0),TX2[7](0),TX3[7](0);For j = 0 To 19{ HiBar[j] = HiBar[j] + 1; LoBar[j] = LoBar[j] + 1;} if H > DayHigh(1) Then T = 1; if L < DayLow(1) Then T = -1;If T == -1 Then{ If T[1] != -1 Then { For j = 18 DownTo 0 { LoVal[j+1] = LoVal[j]; LoBar[j+1] = LoBar[j]; } LoVal[0] = L; LoBar[0] = 0; date11 = date[HiBar[0]]; time11 = stime[HiBar[0]]; Value11 = HiVal[0]; date12 = date[LoBar[0]]; time12 = stime[LoBar[0]]; Value12 = LoVal[0]; TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); TL_SetColor(TL1,하락색); box = Box_New(date11,time11,Value11,date12,time12,Value12); Box_SetColor(box,Blue); Box_SetFill(box,true,100,true); date21 = date[HiBar[0]]; time21 = stime[HiBar[0]]; date22 = date[0]; time22 = stime[0]; for j = 0 to 6 { fr[j] = LoVal[1] + ((HiVal[0] - LoVal[1]) * r[j]); } var1 = Index; Var2 = var1[1]; if var2 > 0 Then { diff = value12; diffr = (value12-value11)/value11*100; TX = Text_New(sDate,sTime,value12,NumToStr(diffr,0)+"%"); Text_SetStyle(tx,1,0); Text_SetColor(tx,Blue); Text_SetSize(tx,12); } } If LoVal[0] > L Then { LoVal[0] = L; LoBar[0] = 0; date12 = date[LoBar[0]]; time12 = stime[LoBar[0]]; Value12 = LoVal[0]; TL_SetEnd(TL1, date12,time12,Value12); date22 = date[0]; time22 = stime[0]; diff = value12; diffr = (value12-value11)/value11*100; TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); var1 = Index; if var2 > 0 Then Box_SetEnd(box,date12,time12,Value12); { Text_SetLocation(tx,sDate,sTime,value12); Text_SetString(tx,NumToStr(diff,0)+"("+NumToStr(diffr,0)+"%)"); } } }If T == 1 Then{ If T[1] != 1 Then { For j = 18 DownTo 0 { HiVal[j+1] = HiVal[j]; HiBar[j+1] = HiBar[j]; } HiVal[0] = H; HiBar[0] = 0; date11 = date[LoBar[0]]; time11 = stime[LoBar[0]]; Value11 = LoVal[0]; date12 = date[HiBar[0]]; time12 = stime[HiBar[0]]; Value12 = HiVal[0]; TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); TL_SetColor(TL1,상승색); box = Box_New(date11,time11,Value11,date12,time12,Value12); Box_SetColor(box,Red); Box_SetFill(box,true,100,true); date31 = date[LoBar[0]]; time31 = stime[LoBar[0]]; date32 = date[0]; time32 = stime[0]; for j = 0 to 5 { fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]); } var1 = Index; Var2 = var1[1]; if var2 > 0 Then { diff = value12; diffr = (value12-value11)/value11*100; TX = Text_New(sDate,sTime,value12,NumToStr(diffr,0)+"%"); Text_SetStyle(tx,2,1); Text_SetColor(tx,Red); Text_SetSize(tx,12); } } If HiVal[0] < H Then { HiVal[0] = H; HiBar[0] = 0; date12 = date[HiBar[0]]; time12 = stime[HiBar[0]]; Value12 = HiVal[0]; TL_SetEnd(TL1, date12,time12,Value12); date32 = date[0]; time32 = stime[0]; diff = value12; diffr = (value12-value11)/value11*100; TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); var1 = Index; if var2 > 0 Then Box_SetEnd(box,date12,time12,Value12); { Text_SetLocation(tx,sDate,sTime,value12); Text_SetString(tx,NumToStr(diff,0)+"("+NumToStr(diffr,0)+"%)"); Text_SetStyle(tx,1,1); } }}if DayHigh() > DayHigh(1) Then v1 = DayHigh();if Daylow() < Daylow(1) Then v2 = Daylow();TL_SetSize(TL1,선두께);TL_SetDrawMode(TL1,0); Text_SetSize(tx,15);Plot5(v1,"전고");plot6(v2,"전저");
프로필 이미지
팔보채
2026-06-24
295
글번호 232562
지표
답변완료

문의드립니다.

시가 위이고 20이평선을 아래서 위로 돌파 할 때 매수 20이평선을 위에서 아래로 돌파 하면 매도 청산시가 아래이고 20이평선을 위에서 아래로 돌파 할 때 매도20이평선 아래에서 위로 돌파 발생 하면 매수 청산매매 수량을 입력할 수 있도록 부탁드립니다.
프로필 이미지
선물대장
2026-06-24
90
글번호 232556
시스템
답변완료

로직 문의

안녕하세요.현재 예스스탁 자동매매를 실계좌에서 운용 중인데 포지션 표시와 관련하여 몇 가지 문의드립니다.1. 현재 사용 중인 전략은 롱 전용 전략입니다. 진입은 아래 코드만 사용하고 있습니다.Buy("LONG_ENTRY");그리고 청산은ExitLong(...)SetStopLoss(...)SetStopProfitTarget(...)만 사용하고 있으며,SellShort(...)Sell(...)ExitShort(...)와 같은 숏 진입 코드는 전혀 사용하지 않고 있습니다.2. 그런데 실시간 계좌 화면에서는* 구분 : 매도* 수량 : 1* 선물매도 1계약 보유와 같이 표시되고 있습니다.질문 1)위 코드 구조에서 예스스탁이 자동으로 신규 매도(숏) 포지션을 생성할 가능성이 있나요?질문 2)ExitLong, SetStopLoss, SetStopProfitTarget에 의해 청산 주문이 나갈 때,일부 상황에서 신규 매도 포지션으로 반전 진입될 가능성이 있나요?질문 3)실계좌 포지션과 MarketPosition 값이 서로 다르게 표시될 수 있나요?예를 들어,실계좌 = 매도 1MarketPosition = 1 또는 0과 같이 동기화가 어긋나는 경우가 있는지 궁금합니다.질문 4)재접속이나 서버 재시작 이후에기존 포지션이 Long에서 Short로 잘못 인식되거나,차트 신호 기준으로 MarketPosition이 재설정되는 경우가 있는지도 확인 부탁드립니다.현재 사용 중인 전략은 롱 전용이므로,실시간 계좌에 "매도 1"이 표시되는 이유가 궁금합니다.제 로직 입니다 // =====================================================// 롱 전용 개선본 v2// - 손절 단순화 (SetStopLoss 단독 사용)// - 진입 조건 완화 (1.005 → 1.002)// - 횡보장 필터 추가 (변동폭 확대)// - ExitLong 중복 제거// - MDD 감소 목표// =====================================================Input : 단기(20), 장기(60);Input : 손절(2.5), 익절(3.7);Input : 최소일변동폭(3.0);Input : 최소수익(3.2);Input : 수익감소(2.0);Input : MFE1(3.0), Lock1(1.2);Input : MFE2(5.0), Lock2(3.3);Input : 시작시간(090000);Input : 종료시간(110000);// [추가] 횡보장 필터용Input : 국면완화(0.995); // 일봉 국면 완화값Input : MA승수(1.000); // 분봉 MA 진입 승수 (기존 1.005 → 완화)Input : 변동폭승수(1.6); // 최소변동폭 승수 (1.0 = 기존 유지)Var : 단기평(0), 장기평(0);Var : Tcond(false);Var : AvgRange(0);Var : bh(0);Var : 일봉단기평(0);Var : 일봉장기평(0);Var : 상승국면(false);Var : 현재MFE율(0);Var : 트레일선(0);Var : 잠금선(0);Var : 최종청산선(0);// =====================================================// 1. 분봉 이동평균// =====================================================단기평 = ma(C, 단기);장기평 = ma(C, 장기);// =====================================================// 2. 일봉 이동평균// =====================================================일봉단기평 =( DayClose(1) + DayClose(2) + DayClose(3) + DayClose(4) + DayClose(5) + DayClose(6) + DayClose(7) + DayClose(8) + DayClose(9) + DayClose(10) + DayClose(11) + DayClose(12) + DayClose(13) + DayClose(14) + DayClose(15) + DayClose(16) + DayClose(17) + DayClose(18) + DayClose(19) + DayClose(20)) / 20;일봉장기평 =( DayClose(1) + DayClose(2) + DayClose(3) + DayClose(4) + DayClose(5) + DayClose(6) + DayClose(7) + DayClose(8) + DayClose(9) + DayClose(10) + DayClose(11) + DayClose(12) + DayClose(13) + DayClose(14) + DayClose(15) + DayClose(16) + DayClose(17) + DayClose(18) + DayClose(19) + DayClose(20) + DayClose(21) + DayClose(22) + DayClose(23) + DayClose(24) + DayClose(25) + DayClose(26) + DayClose(27) + DayClose(28) + DayClose(29) + DayClose(30) + DayClose(31) + DayClose(32) + DayClose(33) + DayClose(34) + DayClose(35) + DayClose(36) + DayClose(37) + DayClose(38) + DayClose(39) + DayClose(40) + DayClose(41) + DayClose(42) + DayClose(43) + DayClose(44) + DayClose(45) + DayClose(46) + DayClose(47) + DayClose(48) + DayClose(49) + DayClose(50) + DayClose(51) + DayClose(52) + DayClose(53) + DayClose(54) + DayClose(55) + DayClose(56) + DayClose(57) + DayClose(58) + DayClose(59) + DayClose(60)) / 60;// =====================================================// 3. 국면 판단// =====================================================상승국면 = false;if 일봉단기평 > 일봉장기평 * 국면완화 then 상승국면 = true;// =====================================================// 4. 최근 5일 평균 변동폭// =====================================================AvgRange =( (DayHigh(1)-DayLow(1)) + (DayHigh(2)-DayLow(2)) + (DayHigh(3)-DayLow(3)) + (DayHigh(4)-DayLow(4)) + (DayHigh(5)-DayLow(5))) / 5;// =====================================================// 5. 날짜 변경 시 진입 허용// =====================================================if sdate != sdate[1] then Tcond = true;// =====================================================// 6. LONG 진입// [변경] MA승수 파라미터화 (1.005 → 최적화 가능)// [변경] 변동폭 조건 승수 추가 (횡보 필터 강화 가능)// =====================================================if stime >= 시작시간 and stime <= 종료시간and Tcond == trueand 상승국면 == true then{ if AvgRange >= 최소일변동폭 * 변동폭승수 then { if 단기평 > 장기평 * MA승수 and C > O then { Buy("LONG_ENTRY"); Tcond = false; } }}// =====================================================// 7. 포지션 보유 중 청산 로직// [변경] ExitLong 중복 제거// SetStopLoss 단독으로 손절 처리// 트레일링 + 수익잠금 유지// =====================================================if MarketPosition == 1 then{ bh = Highest(H, BarsSinceEntry); 현재MFE율 = (bh - EntryPrice) / EntryPrice * 100; 트레일선 = bh * (1 - 수익감소 / 100); 잠금선 = EntryPrice; if 현재MFE율 >= MFE1 then 잠금선 = EntryPrice * (1 + Lock1 / 100); if 현재MFE율 >= MFE2 then 잠금선 = EntryPrice * (1 + Lock2 / 100); 최종청산선 = 트레일선; if 잠금선 > 트레일선 then 최종청산선 = 잠금선; if bh >= EntryPrice * (1 + 최소수익 / 100) then { ExitLong( "LONG_TRAIL", AtStop, 최종청산선 ); }}// =====================================================// 8. 손절 / 익절// [변경] ExitLong AtMarket 손절 제거// SetStopLoss 단독 사용으로 단순화// 충돌 가능성 제거// =====================================================SetStopLoss(손절, PercentStop);SetStopProfitTarget(익절, PercentStop);//////////////////LONG 전용 전략인데 실계좌에 매도 1계약이 잡혀 있습니다. 예스스탁에서 ExitLong이 신규 매도로 전환될 수 있는지 확인 부탁드립니다
프로필 이미지
공급자
2026-06-23
753
글번호 232555
시스템
답변완료

문의 드립니다.

안녕하세요.많은 도움 주셔서 감사 드립니다. 아래 신호에 대한 종목 검색식을 부탁 드립니다. a=ma(c,240);b=(a+avgif(c-a,-1,0.0)-2*stdevif(c-a,-1,0.0));d=(b*k);crossup(c,d)지표조건 k : 1.02감사합니다.
프로필 이미지
ikksoo
2026-06-23
109
글번호 232554
종목검색
답변완료

당일 최저가(최고가)에서 얼마간 되돌림후 최저가(최고가)를 현재봉이 재돌파 로직

붙임 캡처파일과 같이 당일 최저가(최고가)에서 얼마간 되돌림후 최저가(최고가)를 현재봉이 재돌파하는 로직을 부탁드립니다.
프로필 이미지
하날랑
2026-06-23
94
글번호 232552
시스템