커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

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

아래 추세선 수식에 추세선 꼭지와 꼭지 사이의 캔들갯수를 포함하는 수식으로 수정해주세요감사합니다===========================================================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
47
글번호 232562
지표
답변완료

문의드립니다.

시가 위이고 20이평선을 아래서 위로 돌파 할 때 매수 20이평선을 위에서 아래로 돌파 하면 매도 청산시가 아래이고 20이평선을 위에서 아래로 돌파 할 때 매도20이평선 아래에서 위로 돌파 발생 하면 매수 청산매매 수량을 입력할 수 있도록 부탁드립니다.
프로필 이미지
선물대장
2026-06-24
44
글번호 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
40
글번호 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
31
글번호 232554
종목검색
답변완료

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

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

에구머니 님에 의해서 삭제되었습니다.

프로필 이미지
에구머니
2026-06-23
10
글번호 232551
시스템
답변완료

문의드립니다.

(1 번 경우 부탁: 20이평선을 돌파하는 경우)시가 위이고 20이평선을 아래서 위로 돌파 할 때 매수 20이평선 위에서 무조건 음봉 발생 하면 매도 청산시가 아래이고 20이평선을 위에서 아래로 돌파 할 때 매도20이평선 아래에서 무조건 양봉 발생 하면 매수 청산매매 수량을 입력할 수 있도록 부탁드립니다.(2번 경우 부탁: 20이평선을 돌파가 아니라 20이평선 위 아래 위치하고 있는 경우)시가 위이고 20이평선 위에 있으면서 음봉에서 양봉으로 전환 될 때 매수 매수 후 무조건 음봉 발생 하면 매도 청산시가 아래이고 20이평선 아래서 양봉 매도 20이평선 아래에서 무조건 양봉 발생 하면 매수 청산매매 수량을 입력할 수 있도록 부탁드립니다.
프로필 이미지
선물대장
2026-06-23
32
글번호 232542
시스템
답변완료

문의 드립니다.

안녕하세요. 주식 차트에 많은 도움을 주셔서 감사 드립니다. 기준은 - RSI(5)>=70 이며, - 현재가격이 아래 2개 라인을 돌파하거나, 2개 라인 위에 위치한 종목 검색식을 부탁 드립니다. (가) 라인.P = (C - C(1)) / C * 100;AP = avg(P, 25);V1 = (highest(AP, 14) + lowest(AP, 14)) / 2;GM = eavg(V1, 7);EV = eavg(C, 7);if(AP >= GM, EV, 0);(나) 라인. 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)감사합니다. 좋은 하루 보내세요.
프로필 이미지
ikksoo
2026-06-23
42
글번호 232541
종목검색
답변완료

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

안녕하세요^^영웅문 신호수식을 종목검색으로 부탁드립니다sig1 = crossup(c,eavg(c,240));sig2 = v >= avg(v,20) * 3;sig3 = v >= 500000;sig4 = (c/c(1)-1)*100 >= 10;sig5 = (c/o-1)*100 >= 8;sig1 and sig2 and sig3 and sig4 and sig5지표변수con1 = 240con2 = 3con3 = 500000con4 = 10con5 = 8
프로필 이미지
감땡
2026-06-23
39
글번호 232540
종목검색