커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3374
글번호 230811
답변완료
예스종목검색으로 변환요쳥합니다...
아래는 키움 신호검색 200일 신고가 신호수식입니다...이것을 신고가 첫봉(일봉기준) 예스 종목검색으로 요청합니다..highest(C(1), 200) < C
2025-11-05
199
글번호 227683
답변완료
익절 이후 익절가격 돌파할 경우만 거래 계속
익절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);//영업일변경if bdate != bdate[1] Then{ //손실횟수 초기화 0 loss = 0; //연속손실횟수 초기화 0 consecLoss = 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;} 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 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); }}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-05
249
글번호 227682
답변완료
장시작부터 15분간의 최고가를 넘어서는 종목검색식을 만들고 싶은데 알려주세요
장시작 부터 15분간의 최고가를 구하고 현재가가 최고가를 넘어서면 검색되는 종목검색식을 만들고 싶은데 ////////////////////////////////////////////////////////////////// 예스트레이더 예스랭귀지 조건검색식// 09:00:00~09:16:00 양봉 여부 모니터링용 출력 추가////////////////////////////////////////////////////////////////Input: StartTime(90000), // 09시 00분 00초 EndTime(91500); // 09시 15분 00초Vars: OpenVal(0), highVal(0), CloseVal(0); // 지정 시간 구간 내 시가, 종가 구함OpenVal = TimeOpen(StartTime, EndTime);CloseVal = TimeClose(StartTime, EndTime);highVal = TimeHigh(StartTime, EndTime);// 조건 충족 시 종목 검색 신호 발생if Close>highVal and CloseVal>OpenVal Then Find(CloseVal);뭐가 잘못되서 2000~2200 까지의 값만 나올까요?
2025-11-05
266
글번호 227681
답변완료
문의드립니다
**data2 이평선참고해서 data1증액매수식인데요.1.이평선골든크로스이후에Inputs: FastMovAvg(12), SlowMovAvg(26), MACDMovAvg(9);Variables: XMACD(0);If Crossup(MACD(FastMovAvg, SlowMovAvg), EMA(MACD(FastMovAvg, SlowMovAvg), MACDMovAvg)[1]) Then Buy ("MACD");위수식을 추가로입력하고싶습니다.--원래수식 --inputs : P1(5),P2(20),RSILength(10), OverSold(30),OverBought(70);input : 첫진입금액(1000000),A(10);var : m1(0,Data2),m2(0,Data2), R(0,Data1);var : TT(0,Data1),T1(0,Data1),entry(0,Data1),mm(0,data1),vol(0,Data1);m1 = Data2(ma(C,P1));m2 = Data2(ma(C,P2));R = data1(RSI(RSILength));If Data2(m1 > m2) and Crossup(R, OverSold) Then{ if TotalTrades == 0 Then mm = 첫진입금액; Else mm = mm*(1+A/100); Buy("B",OnClose,Def,Floor(Floor(mm/C)/10)*10);}if data2(crossup(ma(c,5),ma(c,20))) Then{ if TotalTrades == 0 Then mm = 첫진입금액; Else mm = mm*(1+A/100); Buy("B2",OnClose,Def,Floor(Floor(mm/C)/10)*10);}if Data2(CrossDown(m1,m2)) or Crossup(R, OverBought) Then Sell("S");
2025-11-05
224
글번호 227676
답변완료
거래량관련 종목검색식을 만들고 싶은데 잘 안됩니다 도와주세요
파워종목검색에 쓸 종목검색을 추가하고 싶은데 필요한 부분을 gpt에게 물어도 엉뚱한 답만 나오네요원하는 종목 검색 조건상대거래량 = 장시작(9시00분01초)부터 검색하는 시점까지의 거래량/오늘 제외 전일부터 14일동안의 장시작부터 같은시각까지의 거래량의 평균1. 상대거래량이 100% 이상인 종목 검색2, 상대거래량 랭킹을 만들어서 상위20위권만 종목 검색이렇게 만들고 싶은데 잘 안됩니다 도와주세요
2025-11-05
398
글번호 227673
답변완료
문의드립니다.
답변해 주신 아래 수식에서 나스닥 10분봉 초기자본 1만달러로 시작하는 수식으로 변경 그리고 아래수식을 시스템에 적용을 하면 최초에 한번 만 매수가 일어나고 그 이후에는 매매가 안일어나는 것 같습니다.수정을 부탁드립니다.//////////////////////////////// 최초 자본 100만원 10분봉 매매에서 무포지션시 무조건 70% 매수하고요. 30% 현금이고요. 매수 투자분: 현금 비율이 70:30 되도록 투자비율 리밸런싱을 합니다. 투자매수에서 10% 수익이 나면 77:30 비율이 되면 비율이 70: 30 되도록 투지매수 이익분을 처분하고 반대로 투자매수에서 10% 손실이 나면 63:30 비율이 되면 비율이 70: 30 되도록 현금을 투자합니다. 수식을 부탁드립니다. 시스템답변 1예스스탁 예스스탁 답변2025-11-04 09:18:57 안녕하세요 예스스탁입니다. input : 자본(1000000); var : MM(0),vol(0),Cash(0),diff(0); MM = 자본+NetProfit; if MarketPosition == 0 and Index > 5 Then { vol = Floor((MM*0.7)/C); Buy("B",OnClose,Def,vol); Cash = MM-(Vol*C); } if MarketPosition == 1 Then { var1 = C*CurrentContracts; var2 = (var1+Cash)*0.7; if var1 >= var2 Then { diff = Floor(abs(var1-var2)/C); if diff > 0 Then { ExitLong("bx",OnClose,Def,"",diff,2); Cash = Cash + (diff*C); } } Else { diff = Floor(abs(var1-var2)/C); if diff > 0 Then { Buy("bb",OnClose,Def,diff); Cash = Cash - (diff*C); } } } 즐거운 하루되세요
2025-11-05
382
글번호 227664
답변완료
종목 검색식 부탁드립니다.
1. 아래의 예스트레이더 수식에, "0봉전 ~10봉전까지의 모든종목" 을 추가하여 수정 부탁드려요. -아래--- Input: ConvPeriod1(8), BasePeriod1(19), SpanPeriod1(33), ConvPeriod2(9), BasePeriod2(26), SpanPeriod2(52); Vars: Conv1(0), Base1(0), Span1_1(0), Span1_2(0), Cloud1_Upper(0), Cloud1_Lower(0), Conv2(0), Base2(0), Span2_1(0), Span2_2(0), Cloud2_Upper(0), Cloud2_Lower(0), BullishCross(false), BearishCross(false); // 반일목 계산 Conv1 = (Highest(H, ConvPeriod1) + Lowest(L, ConvPeriod1)) / 2; Base1 = (Highest(H, BasePeriod1) + Lowest(L, BasePeriod1)) / 2; Span1_1 = (Conv1 + Base1) / 2; Span1_2 = (Highest(H, SpanPeriod1) + Lowest(L, SpanPeriod1)) / 2; if Span1_1 < Span1_2 then { Cloud1_Upper = Span1_1; Cloud1_Lower = Span1_2; } else { Cloud1_Upper = Span1_2; Cloud1_Lower = Span1_1; } // 정일목 계산 Conv2 = (Highest(H, ConvPeriod2) + Lowest(L, ConvPeriod2)) / 2; Base2 = (Highest(H, BasePeriod2) + Lowest(L, BasePeriod2)) / 2; Span2_1 = (Conv2 + Base2) / 2; Span2_2 = (Highest(H, SpanPeriod2) + Lowest(L, SpanPeriod2)) / 2; if Span2_1 < Span2_2 then { Cloud2_Upper = Span2_1; Cloud2_Lower = Span2_2; } else { Cloud2_Upper = Span2_2; Cloud2_Lower = Span2_1; } // 돌파 조건 BullishCross = CrossUp(Cloud1_Upper, Cloud2_Upper); // 상향 돌파 BearishCross = CrossDown(Cloud1_Lower, Cloud2_Lower); // 하향 돌파 // 검색 조건 if BullishCross then { Find(1); // 상향 돌파 종목 검색 } /* 하향 돌파 종목도 검색하려면 아래 주석 해제 if BearishCross then { Find(1); }*/
2025-11-05
210
글번호 227659
답변완료
아래의 트레이디이뷰 수식을 변환부탁드립니다.
//@version=4study("ATR Breakouts", overlay=true)per = input(50, title="Length")aper = input(20, title="Atr Length")LongEntry = ema(close, per) + 2 * atr(aper)LongStopLoss = ema(close, per) + atr(aper)ShortEntry = ema(close, per) - 2 * atr(aper)ShortStopLoss = ema(close, per) - atr(aper)plot(LongEntry, "Long Entry Threshold", color=color.green, style=plot.style_line)plot(LongStopLoss, "Long Stop Loss", color=color.blue, style=plot.style_line)plot(ShortEntry, "Short Entry Threshold", color=color.red, style=plot.style_line)plot(ShortStopLoss, "Short Stop Loss", color=color.black, style=plot.style_line)
2025-11-05
194
글번호 227658
답변완료
종목검색식 부탁드립니다
아래수식 변환 부탁드립니다감사합니다%%%%%%%%%%%%%%%%%%%M1 = ma(C, 기간);E1=M1>M1[1];Es = AccumN(E1,10) == 10;D1 = M1 < M1[1] && M1[1] > M1[2];H1 = Es[1] && D1;S1=Valuewhen(1, H1, M1[1]);
2025-11-04
177
글번호 227656