커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1505
글번호 230811
답변완료
강조 질문드립니다.
안녕하세요~거래량막대기(봉)에 강조 적용하는 방법 문의 드립니다.아래의 강조 코드를 캔들(봉)에 표시하는 것은 잘 되는데요거래량막대기에 강조표시를 하는 방법이 있는지 질문드립니다.input : n(390),BBP(20),Dv(2);var : BBup(0),TL(0);BBup = BollBandUp(BBP,dv);if v > highest(v,n)[1] and C >= O Then{ PlotPaintBar(O,C,"강조",Yellow);}
2026-01-13
333
글번호 229749
답변완료
특정 신호의 진입횟수 제한
안녕하세요아래의 식은 당일 1회만 진입시키기 위해서 사용하려고 하는데, 시뮬레이션 결과 2회 이상의 진입이 일어나는 경우가 빈번합니다.무엇이 잘못되었는지 검증을 해주시면 감사하겠습니다. 챠트는 국내선물 600틱 챠트 기준입니다.var : Scount(0);var : T2(0);if Bdate != Bdate[1] Then T2 = TimeToMinutes(sTime); if Bdate != Bdate[1] Then Scount = 0; if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "매도" Then Scount = Scount+1; if CurrentContracts > CurrentContracts[1] and TotalTrades > TotalTrades[1] and IsEntryName("매도",1) == True Then Scount = Scount+1; if Scount < 1 Thenif H < DayOpen()and (T2 > 0 and TimeToMinutes(Time) > T2 + 30)and (T2 > 0 and TimeToMinutes(Time) < T2 + 360)Then { Sell("매도", AtLimit,DayOpen() - PriceScale *2); } if MarketPosition == -1 Then { if IsEntryName("매도") == true Then { SetStopLoss(0.30,PointStop); ExitShort("매도익절", Atlimit, EntryPrice - Pricescale*20, "매도", 1, 1); } }
2026-01-13
227
글번호 229747
답변완료
파라볼릭 박스상하 대칭
2P보다 큰 박스가 생성되면 (작으면 표시 생략)박스 우측 끝선을 따라 박스 크기의 0.618 , 1 , 1.618 배의 상하 지점에 동그라미 표시.파라볼릭 선 기준이 아니고 박스 기준입니다. 감사합니다.Input : af(0.02), maxAF(0.2);var : T(0),TL(0),B(0),S(0),tx(0),txx(0),HH(0),HD(0),HT(0),LL(0),LD(0),LT(0),box(0);var : B1(0),S1(0),B2(0),S2(0),H1(0),L1(0),H2(0),L2(0);var1 = CSar(af,maxAF);plot1(var1, "CSAR",IFF(c>var1,Red,Green)); if CrossUp(C,var1) Then{ B = var1; T = 1; B1 = B[1]; B2 = B1[1]; HD = sDate; HT = sTime; HH = H; H1 = HH[1]; H2 = H1[1]; if LL > 0 Then box = Box_New(LD,LT,LL,HD,HT,HH); if abs(S-LL) < 1 Then Text_Delete(tx); tx = Text_New(sDate,sTime,HH,NumToStr(abs(HH-B),2)); Text_SetColor(tx,Red); Text_SetSize(tx,22); Text_SetStyle(tx,1,1); Text_SetBold(tx,1); }if CrossDown(C,var1) Then{ S = var1; T = -1; S1 = S[1]; S2 = S1[1]; LD = sDate; LT = sTime; LL = L; L1 = LL[1]; L2 = L1[1]; if HH > 0 Then box = Box_New(HD,HT,HH,LD,LT,LL); if abs(B-HH) < 1 Then Text_Delete(tx); tx = Text_New(sDate,sTime,LL,NumToStr(abs(LL-S),2)); Text_SetColor(tx,Blue); Text_SetSize(tx,22); Text_SetStyle(tx,1,0); Text_SetBold(tx,1); }Else{ if T == 1 Then { if H >= HH Then { HD = sDate; HT = sTime; HH = H; } Text_SetString(tx,NumToStr(abs(HH-B),2)); Text_SetLocation(tx,sDate,sTime,HH); Box_SetEnd(box,HD,HT,HH); if HH < LL+1.5 Then { Box_SetColor(box,Magenta); Box_SetFill(box,true,60); } Else if HH >= LL+1.5 and HH < LL+3.5 Then { Box_SetColor(box,Gray); Box_SetFill(box,true,60); } Else { Box_SetColor(box,Orange); Box_SetFill(box,true,40); } } if T == -1 Then { if L <= LL Then { LD = sDate; LT = sTime; LL = L; } Text_SetString(tx,NumToStr(abs(LL-S),2)); Text_SetLocation(tx,sDate,sTime,LL); Box_SetEnd(box,LD,LT,LL); if LL > HH-1.5 Then { Box_SetColor(box,Lime); Box_SetFill(box,true,80); } Else if LL <= HH-1.5 and LL > HH-3.5 Then { Box_SetColor(box,Cyan); Box_SetFill(box,true,70); } Else { Box_SetColor(box,Cyan); Box_SetFill(box,true,50); } }}
2026-01-13
412
글번호 229745
답변완료
문의드립니다
수고하십니다.Inputs: RSILength(10), OverSold(30), OverBought(70);Input : af(0.02), maxAF(0.2);var : R1(0,Data1);var : S2(0,Data2);R1 = Data2(RSI(RSILength));S2 = data2(SAR(af,maxAF));if Data2(CrossUp(C,S2)) Then Buy("b1");if Data2(C > S2) and data1(Crossup(R1, OverSold)) Then Buy("b2");if Data2(crossdown(C, S2)) or data1(CrossDown(R1, OverBought)) Then ExitLong("bx");위수식에서data2 파라볼매수이후에 data1 매수신호발생이 안나옴니다.다시한번부탁드리니다.1. data2 파라볼매수신호시 data1매수2.data2파라볼매수신호발생 이후에 data1 rsi oscillator bull 매수신호시 data1 매수3.data2파라볼매도 또는 data1 rsi oscillator bull 매도신호시 data1 매도감사합니다
2026-01-13
329
글번호 229744
답변완료
종목 검색식 부탁드립니다.
1. 프로그램 "매도보다 매수가 큰(더 많은)" 종목 검색식 부탁드려요2. 종목 검색식 부탁드려요. M= Macd(12,26); Ms=eavg(M,9); M>Ms 때3. 종목 검색식 부탁드려요. S=StochasticsSlow(12,5); Ss=eavg(S,3); S>Ss 때4. 종목 검색식 부탁드려요. CC=CCi(9); Cs=eavg(CC,12); CC>Cs 때5. 종목 검색식 부탁드려요. M10=ma(C,10); C>M10 때6. 종목 검색식 부탁드려요. R=Rsi(14); Rs=eavg(R,9); R>Rs 때7. 종목 검색식 부탁드려요. Dp =DiPlus(14); Dm=DiMinus(14); Dp>Dm 때
2026-01-13
378
글번호 229743
답변완료
수정문의
input : length(14), period(5),RSIPeriod(20),BBP(20),Dv(3),EmaPeriod(200);var : A(0),B(0),R(0),U(0),E(0), dis(0);dis = (C-Ema(C,200))/ema(C,200)*100;A=LRL(C,Length);B=EMA(EMA(EMA(C,Period),Period),Period);R=RSI(RSIPEriod);U=BollBandUp(BBP,DV);E=Ema(c,EmaPeriod);if CrossUp(R[1],60) and R > 60 andCrossup(C[1],U[1]) anddis<10 andC[1]>C[2]*1.01 ThenFind(1);파워종목검색(3202)에 위 수식을 "BOLL단타-3분봉"이란 제목으로다른 조건없이 단독, 검색기간 500봉으로 넣어 검색했는데 이틀간 한종목도 나오지 않았읍니다. 반면, 많이 오른 종목차트를 직접 보면 조건충족되는 종목이 꽤나 있는데도요.문제가 무엇인지 봐주세요.
2026-01-13
393
글번호 229739
답변완료
보조지표작성 부탁드립니다
늘 많은 도움 감사드립니다.이동평균선 20과 200 두가지로만 설정해서 20이 200을 돌파하면교차하는곳에 빨간점표시되고 반대로 이탈하면 파란색점이 표시되게 해주시면 감사하겠습니다.다시한번 감사드립니다
2026-01-13
191
글번호 229738
답변완료
종목 검색식 부탁드립니다.
1. 다음은 키움지표수식입니다. 참조하여 수식2) 가 기준선 80 위에 있는 모든 종목 검색식 부탁드려요.2. 아래지표를 참조하여, 수식2) 가 기준선 80 위에 있는 " 0봉전~5봉전 까지의 모든 종목" 검색식 부탁드려요. (수식1) A=LinearRegressionValue(C,50,0); A1=LinearRegressionValue(A,50,0); eq= A-A1; z =A+eq; Z1=(Z-lowest(Z,기간1))/(highest(Z,기간1)-lowest(Z,기간1))*100; (수식2) B1=if(eavg(C,12)-eavg(C,26) > eavg(eavg(C,12)-eavg(C,26),9), 1,-1); B2=if(C > avg(C, 20), 1, -1); B3=if((C - C(12)) / C(12) * 100 > 0, 1, -1); B4=if(eavg((C-lowest(L, 5)) / (highest(H, 5) - lowest(L, 5)) * 100, 3)>50, 1, -1); B5=If(CCI(20) > 0,1,-1); B6=If(C > SAR(0.02,0.2),1,-1); B7=If((eavg(sum(((C -L)-(H- C))/ (H-L)*V), 3)-eavg(sum(((C -L)-(H- C))/(H-L)*V), 10))>0,1,-1); A=B1+B2+B3+B4+B5+B6+B7; BB=eavg(A,9); BB1=(BB-lowest(BB,기간1))/(highest(BB,기간1)-lowest(BB,기간1))*100; - 지표조건설정 기간1 : 60- 기준선 20 이하 침체 80 이상 과열------------------------------------------------------------------------------------3. 다음은 키움지표수식입니다. 아래 지표를 참조하여, 수식1) 이 기준선 100 위에 있는 모든 종목 검색식 부탁드려요.4. 아래지표를 참조하여, 수식1) 이 기준선 100 위에 있는 " 0봉전~5봉전 까지의 모든 종목" 검색식 부탁드려요. ----아래-----수식1) /* 변수 정의 */중심 = avg(C, Period);상단 = 중심 + (D1 * stdev(C, Period));하단 = 중심 - (D1 * stdev(C, Period));/* BBPct 계산 */(C - 하단) / (상단 - 하단) * 100*지표조건 Period 60 D1 2*기준선 0 50 100
2026-01-12
422
글번호 229737
답변완료
수식수정 부탁드립니다
2026.01.09자 글번호 229685와 관련된 것으로 일부 지표 수정과 신호검색 수식을 요청드립니다.Input : 가격(C), 단순P1(5), 단순P2(10), 단순P3(20), 지수P1(5), 지수P2(10), 지수P3(20);Input : HL기간(60),저고상승율(0.35),음봉검토기간(5),기준가격(C),이탈경과기간(10),H검토봉수(10),L검토봉수(33),골드표시가격((C+O)/2),골드저가봉수(20);var : Ma5(0),Ma10(0),Ma20(0),eMa5(0),eMa10(0),eMa20(0),HH(0),LL(0);var : 고가위치(Nan),저가위치(nan),상승추세(false),저고변동폭(False);var : 데드1020(False),골드1020(False),음봉10이탈(False),음봉20이탈(False),음봉이탈시가(0),최고이탈시가(0);var : TargetPrice(0),MainCond(False),LLine(0),BS(Nan),CS(Nan),NoBreak(False),FinalCond(False);var: DC(0),DH(0),DL(0),GdC(0),DGL(0);Ma5 = ma(가격,단순P1); #5단순이평Ma10 = ma(가격,단순P2); #10단순이평Ma20 = ma(가격,단순P3); #20단순이평eMa5 = ema(가격,지수P1); #5지수이평eMa10 = ema(가격,지수P2); #10지수이평eMa20 = ema(가격,지수P3); #20지수이평HH = Highest(H,HL기간); #L장기간(60)의 H고가격 표시LL = Lowest(L,HL기간); #L장기간(60)의 L저가격 표시if H == HH Then #키움수식- 고가위치 = BarsSince(H == HH); 변환 고가위치 = 0;Else 고가위치 = 고가위치+1;if L == LL Then #키움수식- 저가위치 = BarsSince(L == LL); 변환 저가위치 = 0;Else 저가위치 = 저가위치+1;상승추세 = 저가위치 > 고가위치;저고변동폭 = (HH - LL) /LL >= 저고상승율/100;데드1020 = CrossDown(Ma10, Ma20);골드1020 = CrossUp(Ma10, Ma20);음봉10이탈 = C < Ma10 && O > Ma10;음봉20이탈 = C < Ma20 && O > Ma20;음봉이탈시가 = iff(음봉20이탈, O, 0); //이탈캔들이면 시가(O), 아니면 0최고이탈시가 = Highest(음봉이탈시가, 음봉검토기간);TargetPrice = iff(C < Ma20, 최고이탈시가, 기준가격); MainCond = 데드1020 && 상승추세 && 저고변동폭 && TargetPrice > 0;if MainCond Then{ LLine = Lowest(L, L검토봉수); BS = 0; CS = 0;}Else BS = BS+1; //데드(MainCond) 발생 후 경과된 봉 수-#키움수식- BarsSince(MainCond); 변환if C < LLine Then //데드 이후 종가가 LLine를 깨면 CS증가시킴 CS = CS+1; NoBreak = CS == 0; #키움수식- CountSince(MainCond, C < Line3) == 0; 변환FinalCond = 골드1020 && NoBreak && BS > 이탈경과기간; // 골드발생 + 저점지지 + 데드발생후 10봉 이상 경과(BS >= 10)#====================================================================if MainCond Then{ DC = TargetPrice; #"기준D20선잉태음봉가격라인" DH = highest(H,H검토봉수); #"기준D기준10봉최고가라인" DL = lowest(L,L검토봉수); #"기준D기준30봉최저가라인"}if finalCond Then{ GdC = 골드표시가격 ; DGL = lowest(L,골드저가봉수);}if DC > 0 Then Plot1(DC, "기준D20선잉태음봉가격라인");if DH > 0 Then Plot2(DH, "기준D기준10봉최고가라인");if DL > 0 Then Plot3(DL, "기준D기준30봉최저가라인");if GdC > 0 Then Plot4(GdC, "골드발생표시가격라인");if DGL > 0 Then Plot5(DGL, "기준D와G사이최저가라인");if 저가위치 > 고가위치 and 저고변동폭 Then plot6(HH, "상승추세율연동H라인");if 저가위치 < 고가위치 and 저고변동폭 Then plot7(LL, "하락추세율연동L라인");가. 지표수정 요청사항 - Plot5(DGL, "기준D와G사이최저가라인"); 와 관련된 것으로 지금처럼 단순히 골드발생시로부터 최근 <골드저가봉수>동안의 최저가를 구하고자 하는게 아니고, <Plot1(DC, "기준D20선잉태음봉가격라인");>발생시점으로부터 <Plot4(GdC, "골드발생표시가격라인");>발생시점 사이에 있는 최저가의 라인을 표시하고자 하는 것입니다. 이 라인은 Plot1과 Plot4의 변동에 따라 계속적으로 변동될 것입니다. 수정 부탁드립니다.나. 신호수식 요청사항 1. MainCond발생으로 생성된 TargetPrice이후 처음으로 발생된 음봉과 이후 이 첫음봉의 고가보다 넢은 위치에서의 양봉후 음봉시에도 매도신호 발생시킴. 단. 종가로 <기준D기준10봉최고가라인> 돌파되면 신호 생성하면 안됨 2. H>TargetPrice && C<TargetPrice인 음봉에 매도신호. 단. 이신호는 TargetPrice발생이후 10봉이내에 발생되어야 하며, 종가로 <기준D기준10봉최고가라인> 돌파되면 신호 생성하면 안됨 3. FinalCond발생이후 첫음봉이면서 고가가 20이평선보다 클때 매도신호. 단,종가로 <기준D기준10봉최고가라인> 돌파하거나 종가로 <기준D기준30봉최저가라인>을 이탈하면 신호발생되면 안됨 4. 1번,2번,3번 신호가 각각 발생한 이후 <기준D기준30봉최저가라인>이나 <기준D와G사이최저가라인>을 종가상 이탈한 후 처음 발생되는 양봉에 매수신호 발생되게 하는 수식 성실히 응대해주심에 항상 감사드립니다
2026-01-12
1006
글번호 229732