커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

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

아래수식은 주간용 전략실행차트 수식입니다.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
2404
글번호 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
1291
글번호 231864
종목검색
답변완료

검색결과 차이 문의

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

변환 부탁합니다.

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

거래량 분석 좀부탁 드립니다.

ㅇ 6시간단위 그림 입니다.ㅇ 항상 많은 도움에 고맙습니다.ㅇ 시간 단위 가격대별 누적 거래량 좀 부탁 드립니다. (cdv)Input : TickSize(1.0); // 종목 틱사이즈ㅇ 시간단위 변수Array : BidVol[500](0), AskVol[500](0), PriceLevel[500](0);Var : i(0), MyBasePrice(0);// 1. 시간 단위 초기화 (정각이 되면 배열을 새로 시작)// TimeToMinutes(Time) % 60 == 0 은 매 정각을 의미합니다.If CurrentBar == 1 Or (TimeToMinutes(Time) % 60 == 0 And TimeToMinutes(Time) != TimeToMinutes(Time[1])) Then{ MyBasePrice = Floor(C / TickSize) * TickSize; // 이전 시간 데이터 초기화 For i = 0 to 499 { PriceLevel[i] = MyBasePrice + (TickSize * (i - 250)); BidVol[i] = 0; AskVol[i] = 0; }}// 2. 해당 시간 내 실시간 수급 누적 (이미지 c984d3 원리 적용)For i = 0 to 499 { If L <= PriceLevel[i] and H >= PriceLevel[i] Then { // 분봉상 현재가 위치에 수급 배분 If C == PriceLevel[i] Then { BidVol[i] = BidVol[i] + DownVol; // 시장가 매도 (이미지 하늘색) AskVol[i] = AskVol[i] + UpVol; // 시장가 매수 (이미지 분홍색) } }}고맙습니다.
프로필 이미지
요타
2026-05-01
1684
글번호 231856
지표
답변완료

수식 문의

매일 분봉에 적용할 것입니다.오류 정정 부탁드립니다.if NextBarOpen > 0 Then{ Print("D:\\문자Test\\1\\abc.txt","%s", DateToStr(Date) + "|" + TimeToStr(Time) + "|D1=" + NumToStr(Data1(c), 6) + "|D2=" + NumToStr(Data2(c), 6) + "|D3=" + NumToStr(Data3(c), 6) + "|D4=" + NumToStr(Data4(c), 6) + "|D5=" + NumToStr(Data5(c), 6) + "|D6=" + NumToStr(Data6(c), 6) + "|D7=" + NumToStr(Data7(c), 6) );}감사합니다.
프로필 이미지
에구머니
2026-04-30
495
글번호 231850
지표