커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식변환부탁드립니다.

.
프로필 이미지
키움증권
2026-05-05
82
글번호 231873
종목검색
답변완료

데이트레이딩 수식을 오버나잇 수식으로 변경(국내선물 거래용)

아래 수식으로 전략실행차트(주간)를 사용하고 있습니다.데이트레이딩용이며 end of day는 151500 입니다.데이트레이딩 수식을 오버나잇으로 하고 싶습니다.더불어 전략실행차트를 복합으로 변경하여 사용하고 싶습니다.복합으로 하면 야간장에서도 실행되므로 오버나잇 리스크에 대응할 수 있습니다.요청1 - 복합으로 세팅된 전략차트이므로 오버나잇하려면 아래 수식에서 end of day만 삭제하면 되는 것인지요?요청2- 데이트레이딩에서 설정된 진입시간을 복합 전략차트에서도 사용할 수 있게 수식을 변경해 주십시요. 데이트레이딩 수식에서 b1(진입명)은 첫번째 한번만 진입하고 , 두번째 진입부터는 b2(진입명)로 계속 반복진입합니다. 이 프로세스는 복합 전략차트 오버나잇에서도 동일하게 수행되야 합니다. 복합전략차트에서 오버나잇하면서 미결제가 청산되어 포지션이 없이 다음날 주간장이 개시되었을 때 거래 시작시간(for b1)을 input으로 조정하고 싶습니다. ex) input : 진입시간(084500) ; // 오전 8시45분 부터 b1 거래 시작 1번, 이후 b2 거래 반복 ex) input : 진입시간(180000) ; // 오후 6시 부터 b1 거래 시작 1번, 이후 b2 거래 반복 ex) input : 진입시간(010000) ; // 오전 1시 부터 b1거래 시작 1번, 이후 b2 거래 반복요청3- 진입제한시간, 거래횟수, 누적패수 내용은 삭제하여 주십시요. 항상 고맙습니다.*********************************************************************************************************************// ==================================================// [입력 변수 설정]// ==================================================input : 최대(999999),최소(700);input : 진입시간(084500),진입제한시간(100000);input : 거래횟수(5),누적패수(5);input : b1(2.25),진입눌림1(0.25),진입돌파1(0.25);input : 경과봉(0);input : b2(3.50),진입눌림2(0.50),진입돌파2(0.50);input : als(4.5),atr1(0),atr2(5.5);input : bls(5.5),btr1(0),btr2(6.5);input : eod(151500);// ==================================================// [변수 선언]// ==================================================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);// ==================================================// [일자 변경 시 손실 카운트 초기화]// ==================================================if bdate != bdate[1] Then loss = 0;// ==================================================// [직전 트레이드 손실 시 누적 패수 증가]// ==================================================if TotalTrades > TotalTrades[1] and PositionProfit(1) < 0 Then loss = loss+1;// ==================================================// [진입 가능 시간 조건 ON]// ==================================================if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then Tcond = true;// ==================================================// [진입 제한 시간 이후 조건 OFF]// ==================================================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; // ================================================== // [1차 진입 로직]// ================================================== if MarketPosition == 0 and entry == 0 Then{ // --- 1차 진입 시작 조건 --- if E1 == 0 and C >= LL+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-진입눌림1 Then{ E1 = 2; i1 = index; S1 = H1; // 돌파 기준 고점 } } // --- 시작점 이탈 시 패턴 초기화 --- if E1 >= 1 and L < V1 Then{ E1 = 0; LL = L; } // --- 1차 매수 진입 --- if loss < 누적패수 and E1 == 2 and index > i1 and C >= S1+진입돌파1 and Tcond and 최대 >= C and C >= 최소 Then{ buy("b1"); } } // ================================================== // [체결 발생 시 패턴 리셋]// ================================================== if TotalTrades > TotalTrades[1] Then{ E1 = 0; LL = L; } // ---------------------------------------------- // [최저가 재갱신 보호]// ---------------------------------------------- if L < LL Then LL = L; // ================================================== // [2차 진입 로직]// ================================================== if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ // --- 2차 진입 시작 조건 --- if E1 == 0 and C >= LL+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-진입눌림2 Then{ E1 = 2; i1 = index; S1 = H1; } } // --- 시작점 이탈 시 패턴 초기화 --- if E1 >= 1 and L < V1 Then{ E1 = 0; LL = L; } // --- 2차 매수 진입 --- if dayindex>=경과봉 and loss < 누적패수 and E1 == 2 and index > i1 and C >= S1+진입돌파2 and Tcond and 최대 >= C and C >= 최소 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); }}SetStopEndofday(eod);
프로필 이미지
목마와숙녀
2026-05-05
118
글번호 231872
시스템
답변완료

데이트레이딩 수식을 오버나잇 수식으로 변경(예스스팟 신호발생용)

아래수식은 주간용 전략실행차트 수식입니다.end of day는 151500 이며 데이트레이딩용 수식입니다. - 진입프로세스 b1(진입명)이 첫번째로 한번만 진입하고, b2(진입명)가 두번째 부터 반복하여 진입합니다. ex) 다섯번 거래한다면 b1,b2,b2,b2,b2아래 데이트레이딩 수식을 오버나잇으로 변경하고 복합용 전략실행차트에서 사용코자 합니다.하지만, 위클리옵션 만기일에는 오버나잇을 멈추고 장종료 5분전인 151500에 청산해야 합니다.이것을 가능하게 할 수식으로 수정하여 주십시요.수식은 2개로 분류하여 사용할 예정입니다. - 월요일 만기용 - 목요일 만기용 변경된 수식에서도 진입프로세스는 주간 전략수식과 동일합니다. ex) 다섯번 거래한다면 b1,b2,b2,b2,b2변경된 수식에서 진입제한시간,거래횟수,누적패수 내용은 삭제하여 주십시요.요청수식1 - 월요일 만기용 (복합 전략실행차트 ) 금요일 084500부터 진입 허용,금요일과 주말 오버나잇 다음주 월요일 151500에 종료(위클리옵션 월요일 만기)요청수식2- 목요일 만기용 (복합 전략실행차트 ) 화요일 084500부터 진입 허용,화요일과 수요일 오버나잇 목요일 151500에 종료(위클리옵션 목요일 만기) 항상 고맙습니다.******************************************************************************************************************************// ==================================================// [입력 변수 설정]// ==================================================input : 최대(999999),최소(700);input : 진입시간(084500),진입제한시간(100000);input : 거래횟수(5),누적패수(5);input : b1(2.25),진입눌림1(0.25),진입돌파1(0.25);input : 경과봉(0);input : b2(3.50),진입눌림2(0.50),진입돌파2(0.50);input : als(4.5),atr1(0),atr2(5.5);input : bls(5.5),btr1(0),btr2(6.5);input : eod(151500);// ==================================================// [변수 선언]// ==================================================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);// ==================================================// [일자 변경 시 손실 카운트 초기화]// ==================================================if bdate != bdate[1] Then loss = 0;// ==================================================// [직전 트레이드 손실 시 누적 패수 증가]// ==================================================if TotalTrades > TotalTrades[1] and PositionProfit(1) < 0 Then loss = loss+1;// ==================================================// [진입 가능 시간 조건 ON]// ==================================================if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then Tcond = true;// ==================================================// [진입 제한 시간 이후 조건 OFF]// ==================================================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; // ================================================== // [1차 진입 로직]// ================================================== if MarketPosition == 0 and entry == 0 Then{ // --- 1차 진입 시작 조건 --- if E1 == 0 and C >= LL+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-진입눌림1 Then{ E1 = 2; i1 = index; S1 = H1; // 돌파 기준 고점 } } // --- 시작점 이탈 시 패턴 초기화 --- if E1 >= 1 and L < V1 Then{ E1 = 0; LL = L; } // --- 1차 매수 진입 --- if loss < 누적패수 and E1 == 2 and index > i1 and C >= S1+진입돌파1 and Tcond and 최대 >= C and C >= 최소 Then{ buy("b1"); } } // ================================================== // [체결 발생 시 패턴 리셋]// ================================================== if TotalTrades > TotalTrades[1] Then{ E1 = 0; LL = L; } // ---------------------------------------------- // [최저가 재갱신 보호]// ---------------------------------------------- if L < LL Then LL = L; // ================================================== // [2차 진입 로직]// ================================================== if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ // --- 2차 진입 시작 조건 --- if E1 == 0 and C >= LL+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-진입눌림2 Then{ E1 = 2; i1 = index; S1 = H1; } } // --- 시작점 이탈 시 패턴 초기화 --- if E1 >= 1 and L < V1 Then{ E1 = 0; LL = L; } // --- 2차 매수 진입 --- if dayindex>=경과봉 and loss < 누적패수 and E1 == 2 and index > i1 and C >= S1+진입돌파2 and Tcond and 최대 >= C and C >= 최소 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); }}SetStopEndofday(eod);
프로필 이미지
목마와숙녀
2026-05-03
124
글번호 231865
시스템
답변완료

수정문의

트레이딩뷰의 Pro RSI Calculator인데 이를 바탕으로 종가가1. 0봉에 종가가 가격차트에 표시된 RSI(14)의 "중간선을 돌파(Crossup)"하는 봉을 검색.(종가>중간선이 아님)2.별도로, "슈퍼트렌드 돌파 후 0~ 4봉에 종가가 상단선돌파"하는 것을 검색하려 합니다. (0봉에 상단선돌파 & 4봉전 슈퍼트렌드돌파 or " & 3 " or " & 2 " or " & 1 " or " & 0 " )(CrossUp(c,supertrend)로 기 작성해주신 수식이 있으나 위의 "4봉전~0봉전 돌파" 때문에 합성해 사용하기가 어렵습니다.) eL=2*LenRSI-1;gR=if(C-C(1)>0,C-C(1),0);lR=if(C(1)-C>0,C(1)-C,0);gE=eavg(gR,eL);lE=eavg(lR,eL);x1=(LenRSI-1)*(lE*LowPct/(100-LowPct)-gE);bL=if(x1>=0,C+x1,C+x1*(100-LowPct)/LowPct);x2=(LenRSI-1)*(lE*UppPct/(100-UppPct)-gE);bH=if(x2>=0,C+x2,C+x2*(100-UppPct)/UppPct);bM=(bH+bL)/2;bMH=(bH+bM)/2;bML=(bM+bL)/2;cUL=if(C(1)<bL(1) and C>=bL,1,0);cDH=if(C(1)>bH(1) and C<=bH,1,0);cUM=if(Crossup(C, bM),1,0);cDM=if(C(1)>bM(1) and C<=bM,1,0);Crossup(C, bM)지표변수 LenRSI 14, UppPct 70, LowPct 30, FM 5
프로필 이미지
ksks
2026-05-03
135
글번호 231864
종목검색
답변완료

검색결과 차이 문의

안녕하세요. 첨부 파일을 보시면..같은 수식을 파워종목검색과 종목검색으로 찾으면 검색 결과가 다르게 나와서요.두 수식 모두 검색에 필요한 최소 기간을 500봉으로 했어요. 파워종목검색에는 모든 종목이 검색되는데, 종목검색에는 몇 가지가 빠져 있습니다. 제가 놓치는 부분이 어떤 부분인지 알려주시면 좋겠습니다.늘 감사드려요.좋은 하루 보내세요.
프로필 이미지
이루나라
2026-05-02
84
글번호 231863
종목검색
답변완료

변환 부탁합니다.

안녕하세요. 키움식 신호수식 인데 변환좀 부탁 드립니다.환절기에 꽃가루가 많이 날리는데 알레르기에 조심 하시고 건강하세요.A=(O(1)+C(1))/2;O(1)<C(1) and crossdown(C,A)감사합니다.
프로필 이미지
사냥꾼
2026-05-02
82
글번호 231862
시스템
답변완료

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

1. 후행스팬이 볼린저밴드 상단선 돌파할때 0봉전 ~ 5 봉전까지의 모든 종목 검색식 부탁드려요.2. 단순 20 이평이 단순 60이평을 돌파후 , " 첫 발생" 하는 " MACD 골든크로스 OR MACD 0선 돌파" 종목 검색식 부탁드려요.3. 단순 20 이평이 단순 60이평을 돌파후 , " 첫 발생" 하는 " MACD 골든크로스 OR MACD 0선 돌파" 종목을 0봉전~5봉전까지 종목 검색식 부탁드려요.4. BWI (40,2) "상승 전환" OR "연속상승" 일때 종목 검색식 부탁드려요.5. BWI (40,2) "상승 전환" OR "연속상승" 일때 0봉전~5봉전 까지의 종목 검색식 부탁드려요6. BWI (40, 2) 와 BWI (60,2) 가 1% 이하로 수렴할때 종목 검색식 부탁드려요--------------------------------------------------------------------------------------------7. 아래의 수식을 참조하여 , 0봉전~5봉전 까지의 종목 검색식 부탁드려요.8. 아래의 수식을 참조하여 , "강조" 부탁드려요 ----아래----x=sum(((h+l+c)/3)*v);z=valuewhen(1, date = date(1) , X(1));x1=sum(v);z1=valuewhen(1, date = date(1) , X1(1));VWAP=(x-z)/(x1-z1);WOP = avg(VWAP, wopPeriod);VWAPPO = (C - WOP)/WOP*100;ITS = avg(C, itsPeriod);OVER = avg(WOP, overPeriod);Vegeta = (ITS - OVER)/OVER*100;CROSSUP(VWAPPO, 0) && Vegeta > Vegeta(1) && C>O지표변수 wopPeriod 120 itsPeriod 60 overPeriod 60
프로필 이미지
일지매7
2026-05-02
140
글번호 231861
종목검색
답변완료

수식 수정 부탁 드립니다

안녕 하세요수식 수정 문의 드립니다VWAP BB 지표input : 기간(20),D1(1),D2(2),D3(3);AA = (H+L+C)/3;BB = AA * V;X1 = Sum(BB, 기간);X2 = Sum(V, 기간);Var1 = X1 / X2;Var2 = A + D1 * stdev(A, 기간); Var3 = A + D2 * stdev(A, 기간);Var4 = A + D3 * stdev(A, 기간);Var5 = A - D1 * stdev(A, 기간);Var6 = A - D2 * stdev(A, 기간);Var7 = A - D3 * stdev(A, 기간);Plot1(var1,"중심");plot2(var2,"상단1");plot3(var3,"상단2");Plot4(var4,"상단3");plot5(var5,"하단1");plot6(var6,"하단2");Plot7(var7,"하단3");항상 감사 합니다
프로필 이미지
s1017051
2026-05-01
106
글번호 231859
지표
답변완료

문의 합니다^^*

아래예스지표를 차트에 plot1(1)일때 음영표시(색상노랑색) plot1(0)일때는 음영표시가 안되도록 수식을 변경요청드립니다..첨부파일은 형식이 이렇다고 이해를 돕기 위해 샘플로 보내드립니다... 5월 가정의 달 입니다..항상 고맙고 감사드립니다...var : BB(0),EV(0);BB=BollBandUp(20,2);EV=EnvelopeUp(20,3);if crossup(BB,EV) and C>BB and C>EV ThenPlot1(1);ElsePlot1(0);
프로필 이미지
서민순
2026-05-01
106
글번호 231858
지표