커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1515
글번호 230811
답변완료
문의
아래수식은익절 1 또는 익절2가 발생하면 그 다음 진입은 익절1 또는 익절2를 돌파하면 진입해달는 요청에 답변을 주신 수식입니다.수식을 확인해 보니 익절 1 이후 첫번째 진입하는 경우만 익절 1을 돌파하면 진입하고 두번째나 세번째 진입은 익절1 가격을 돌파하지 않아도 진입하는 현상이 발생합니다. 두번째나 세번째 진입도 익절1을 돌파할 때만 진입이 가능한 수식으로 수정바랍니다. 익절 2 이후 첫번째 진입하는 경우만 익절 2를 돌파하면 진입하고 두번째나 세번째 진입은 익절2 가격을 돌파하지 않아도 진입하는 현상이 발생합니다. 두번째나 세번째 진입도 익절2를 돌파할 때만 진입이 가능한 수식으로 수정바랍니다. 한마디로 익절이하에서는 진입하지 않는 수식을 원합니다.수식은 진입과정에서 익절1 (b1)은 한 번만 발생하고 익절2(b2)는 반복해서 발생합니다.일단 익절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),익절가(0);//영업일변경if bdate != bdate[1] Then{ //손실횟수 초기화 0 loss = 0; //연속손실횟수 초기화 0 consecLoss = 0; //패수는 누적패수 패수 = 누적패수; //익절1이나 익절2가 발생하면 청산가격 저장할 변수 익절가 = 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; //청산 시 익절1이나 익절2이면 익절가에 청산가격 저장 if IsExitName("익절1",1) == true or IsExitName("익절2",1) == true Then 익절가 = ExitPrice(1); Else // 아니면 익절가 = 0; //익절가는 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 and (익절가 == 0 or (익절가 > 0 and C > 익절가)) Then //익절가가 0이거나 익절가가 0보다크면 종가가 익절가보다 커야 함 { 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-12
206
글번호 227928
답변완료
종목검색식 부탁드립니다
아래수식의 변환을 부탁드립니다$$$$$$$$$$$$$$$$$$$$$$$$$$$$$HH=Highest(H,기간);LL=Lowest(L,기간);Mid=(HH+LL)/2;Hs=(HH+Mid)/2;Ls=(LL+Mid)/2;Hv=sum(if(C>=Hs,V,0),기간);Lv=sum(if(C<=Ls,V,0),기간);Mv=sum(if(C>Ls && C<Hs,V,0),기간);Maxv=Max(Hv,Mv,Lv);S1=if(Maxv==Hv,Hs,if(Maxv==Mv,Mid,Ls)); // 기간(20)CrossUp(C,S1)감사합니다
2025-11-12
146
글번호 227927
답변완료
아래의 트레이디이뷰 수식을 변환부탁드립니다.
//@version=6indicator("Trend Filter (2-pole) [BigBeluga]", overlay = true)// INPUTS ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{int length = input.int(20, "Length")float damping = input.float(0.9, "Damping", minval = 0.1, maxval = 1.0, step = 0.01)int ris_fal = input.int(5, "Rising and Falling")float bands = input.float(1.0, "Bands", step = 0.1, minval = 0.5)color up_col = input.color(color.lime, "↑", inline = "color")color dn_col = input.color(color.red, "↓", inline = "color")color __col = input.color(color.yellow, "〜", inline = "color")bool bar_col = input.bool(false, "BarColor", inline = "Features")bool signals = input.bool(false, "Signals", inline = "Features")// }// CALCULATIONS――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{atr = ta.atr(200) * bands//@function Two-pole filter//@param src (series float) Source data (e.g., price)//@param length (float) Length of the filter (higher value means smoother output)//@param damping (float) Damping factor for the filter//@returns (series float) Filtered valuemethod two_pole_filter(float src, int length, float damping) => // Calculate filter coefficients float omega = 2.0 * math.pi / length float alpha = damping * omega float beta = math.pow(omega, 2) // Initialize the filter variables var float f1 = na var float f2 = na // Update the filter f1 := nz(f1[1]) + alpha * (src - nz(f1[1])) f2 := nz(f2[1]) + beta * (f1 - nz(f2[1])) f2tp_f = close.two_pole_filter(length, damping)var rising = 0var falling = 0up = tp_f > tp_f[2]dn = tp_f < tp_f[2]if up rising += 1 falling := 0if dn rising := 0 falling += 1color = up ? color.from_gradient(rising, 0, 15, __col, up_col) : dn ? color.from_gradient(falling, 0, 15, __col, dn_col) : __col// }// PLOT ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{plot(tp_f, "Two-Pole Filter", color = color, linewidth = 3)plotshape(falling >= ris_fal ? tp_f + atr : na, "Falling", shape.circle, location.absolute, color = color)plotshape(rising >= ris_fal ? tp_f - atr : na, "Rising", shape.circle, location.absolute, color = color)bool sig_up = ta.crossover(rising, ris_fal) and barstate.isconfirmed and signalsbool sig_dn = ta.crossover(falling, ris_fal) and barstate.isconfirmed and signalsplotshape(sig_dn ? tp_f[1] + atr : na, "Falling", shape.triangledown, location.absolute, color = color, size = size.tiny, offset = -1)plotshape(sig_up ? tp_f[1] - atr : na, "Rising", shape.triangleup, location.absolute, color = color, size = size.tiny, offset = -1)barcolor(bar_col ? color : na)// }
2025-11-12
241
글번호 227926
답변완료
검색식과 종목검색식 부탁 드립니다
아래의 case에 대한 종목검색식 부탁 드립니다.경우1) 최근 몇 일내(변수) 15% 이상(변수)의 양봉이 발생하고, 거래량은 반대로 평균 거래량의 10%(변수)이거나, 거래량 5일 이동평균보다 작은 종목의 검색이 가능할까요? 경우2) 예를 들어 최근의 10일(변수) 기준으로 할때 - 캔들의 몸통의 길이가 전일대비 20%이상 길지만 거래량은 최소 200%이상(변수) 이거나 아니면 반대의 경우의 종목을 검색 가능한지요?
2025-11-11
166
글번호 227924
답변완료
문의 드립니다.
늘~~ 도움에 감사드립니다.종목 검출이 되지 않아다음 수식에 무슨 문제가 있는 건지 궁금합니다.원본아래의 수식을 종목검색식으로 부탁드림니다.TEMA50 상승이 TEMA50 하락을 돌파 종목검색식을 부탁 드립니다.input : len(20); var : A(0),Ema1(0),Ema2(0),Ema3(0),B(0); A=wma(2*WMa(c,len/2) - WMa(c,len), floor(sqrt(len))); Plot1(A,"HMA 상승"); if A[1] > A Then var2 = A; Plot2(var2,"HMA 하락"); EMA1=Ema(c,50); EMA2=Ema(EMA1,50); EMA3=Ema(EMA2,50); B = 3*EMA1-3*EMA2+EMA3; plot3(B,"TEMA 상승"); if B[1] > B Then var4 = B; plot4(var4,"TEMA 하락");변환본var : Ema1(0),Ema2(0),Ema3(0),B(0);EMA1=Ema(c,50); EMA2=Ema(EMA1,50); EMA3=Ema(EMA2,50); B = 3*EMA1-3*EMA2+EMA3; if CrossUp(B,var4) Then Find(1);
2025-11-11
171
글번호 227923
답변완료
문의 드립니다
진입한 총액수의 30 30 40프로 3분할 청산을 트레일링으로 청산하는 식 부탁드립니다.
분할청산
2025-11-11
135
글번호 227921
답변완료
문의드립니다
종목a 차트에서 종목b차트를 참조하여서 볼린저밴드를 표현할려고 하는데, 상한선, 하단선이 표기가 안됩니다.도움 바랍니다.감사합니다.Input : Period1(5),Period2(20),Period3(50), MultiD0(2);VARS : rs0(0,Data2),rs1(0,Data2),rs1up(0,Data2),rs1dn(0,Data2);rs0 = C/Data2(c);rs1 = ma(rs0,Period1);rs1up = rs1 + MultiD0 * STD(rs0, Period1);rs1dn = rs1 - MultiD0 * STD(rs0, Period1);Plot1(rs1dn, "rs1dn");Plot2(rs1up, "rs1up");Plot3(rs1, "rs1");
2025-11-11
146
글번호 227920
답변완료
종목검색되게 조건검색식 부탁드립니다
1) 볼밴하단선 수치값 : 20 2 2)최저거래량선 A1= V < lowest(V(1), Period); ValueWhen(1,A1,C) 지표값 Period 120 (요청사항)①우선 캔들이 초록선 위에있다가 캔들이 초록선밑으로 내려오면서 ②볼밴 20 2.5 하단선을 터치후 or 하단선밑으로 빠졌다가 ③다시 초록선에 캔들이 종가에 양봉으로 붙거나 or 양봉돌파시(이때 RSI(14) 값은 40이상) 종목검색되게 부탁좀 드리겠습니다 2)A=MA(C,120); B=(A+AVGIF(C-A,-1,0.0)-2*STDEVIF(C-A,-1,0.0)); // 가격박스하단선 D=(B*1); AA=BBandsdown(95,2); // 볼밴하단선 CrossUp(C,D) && CrossUp(C,AA)
2025-11-11
212
글번호 227919
답변완료
검토 부탁 드립니다.
아래 227788번 검토 부탁 드립니다.
2025-11-11
158
글번호 227918