커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

지표변환 및 종목검색식

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/// © veryfid//@version=4study("Volatility Oscillator", resolution = "")length = input(100)spike = close - openx = stdev(spike,length)y = stdev(spike,length) * -1plot(spike, color = color.white, linewidth = 2, title = "Spike Line")p1 = plot(x, "Upper Line")p2 = plot(y, "Lower Line")plot(0, color= color.gray, title= "Zero Line")plot(spike, color= color.blue, style=plot.style_area, transp=80, title = "Spike Fill")osc2 = spikelbR = 5lbL = 5rangeUpper =60rangeLower = 5plotBull = input(title="Plot Bullish", defval=true)plotHiddenBull = input(title="Plot Hidden Bullish", defval=false)plotBear = input(title="Plot Bearish", defval=true)plotHiddenBear = input(title="Plot Hidden Bearish", defval=false)delay_plot_til_closed = input(title="Delay diversion plot until candle is closed (don't repaint)", defval=false)bearColor = color.redbullColor = color.greenhiddenBullColor = color.new(color.green, 80)hiddenBearColor = color.new(color.red, 80)textColor = color.whitenoneColor = color.new(color.white, 100)repaint = (not(delay_plot_til_closed) or barstate.ishistory or barstate.isconfirmed)plFound = na(pivotlow(osc2, lbL, lbR)) ? false : truephFound = na(pivothigh(osc2, lbL, lbR)) ? false : true_inRange(cond) => bars = barssince(cond == true) rangeLower <= bars and bars <= rangeUpper//------------------------------------------------------------------------------// Regular Bullish// Osc: Higher LowoscHL = osc2[lbR] > valuewhen(plFound, osc2[lbR], 1) and _inRange(plFound[1])// Price: Lower LowpriceLL = low[lbR] < valuewhen(plFound, low[lbR], 1)bullCond = plotBull and priceLL and oscHL and plFound and repaintplotshape( bullCond ? osc2[lbR] : na, offset=-lbR, title="Regular Bullish Label", text="R", style=shape.labelup, location=location.absolute, color=bullColor, textcolor=textColor, transp=0 )//------------------------------------------------------------------------------// Hidden Bullish// Osc: Lower LowoscLL = osc2[lbR] < valuewhen(plFound, osc2[lbR], 1) and _inRange(plFound[1])// Price: Higher LowpriceHL = low[lbR] > valuewhen(plFound, low[lbR], 1)hiddenBullCond = plotHiddenBull and priceHL and oscLL and plFound and repaintplotshape( hiddenBullCond ? osc2[lbR] : na, offset=-lbR, title="Hidden Bullish Label", text="H", style=shape.labelup, location=location.absolute, color=bullColor, textcolor=textColor, transp=0 )//------------------------------------------------------------------------------// Regular Bearish// Osc: Lower HighoscLH = osc2[lbR] < valuewhen(phFound, osc2[lbR], 1) and _inRange(phFound[1])// Price: Higher HighpriceHH = high[lbR] > valuewhen(phFound, high[lbR], 1)bearCond = plotBear and priceHH and oscLH and phFound and repaintplotshape( bearCond ? osc2[lbR] : na, offset=-lbR, title="Regular Bearish Label", text="R", style=shape.labeldown, location=location.absolute, color=bearColor, textcolor=textColor, transp=0 )//------------------------------------------------------------------------------// Hidden Bearish// Osc: Higher HighoscHH = osc2[lbR] > valuewhen(phFound, osc2[lbR], 1) and _inRange(phFound[1])// Price: Lower HighpriceLH = high[lbR] < valuewhen(phFound, high[lbR], 1)hiddenBearCond = plotHiddenBear and priceLH and oscHH and phFound and repaintplotshape( hiddenBearCond ? osc2[lbR] : na, offset=-lbR, title="Hidden Bearish Label", text="H", style=shape.labeldown, location=location.absolute, color=bearColor, textcolor=textColor, transp=0 )//barcolor(color = spike > 0 ? color.green : color.red )트레이딩 뷰 지표의 Volatility Oscillator지표입니다1. 지표변환2. 종목검색 : spike Line이 Upper Line 돌파
프로필 이미지
기도니
2026-07-02
1328
글번호 232643
지표
답변완료

1차 거래 (익절시 2차 거래 허용)

아래수식은데이트레이딩용이며하루 맥스 2회까지 거래하는 수식입니다.요청사항거래는 기본으로 1차만 하되,1차 진입이 익절 _ SetStopProfittarget(gl1,PointStop) 로 청산되었을 경우에만2차 거래를 허용하고 싶습니다.즉, 기본 1차 거래(익절시 2차 거래 허용)아래 수식에 반영하여 주십시요.항상 고맙습니다.*********************************************************************************************input : 진입시간(090000),진입제한시간(100000);input : 거래횟수(2);input : 수량1(1),b1(20),진입눌림1(0),진입돌파1(0);input : 수량2(1),b2(40),진입눌림2(0),진입돌파2(0);input : ls1(1000),tr1(2000),gl1(4000);input : ls2(1500),tr2(3000),gl2(6000);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);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+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; } if E1 == 2 and index > i1 and C >= S1+진입돌파1 and Tcond == true Then{ Buy("b1",OnClose,Def,수량1); } } 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+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; } if E1 == 2 and index > i1 and C >= S1+진입돌파2 and Tcond == true Then{ Buy("b2",OnClose,Def,수량2); } }if MarketPosition== 1 Then{ if IsEntryName("b1") == true Then { SetStopLoss(ls1,PointStop); SetStopTrailing(tr1,0,PointStop,1); SetStopProfittarget(gl1,PointStop); } Else if IsEntryName("b2") == true Then { SetStopLoss(ls2,PointStop); SetStopTrailing(tr2,0,PointStop,1); SetStopProfittarget(gl2,PointStop); } Else { SetStopLoss(0); SetStopTrailing(0,0); SetStopProfittarget(0); }}SetStopEndofday(eod);}
프로필 이미지
목마와숙녀
2026-07-01
573
글번호 232642
시스템
답변완료

시믈레이션 차트 조회가 최대한 얼마의 기간을 할 수 있나요?

시믈레이션 차트 조회를 활용 하다 보니 조회 가능한 기간이 짧아 활용에 불편 함이 있습니다.시믈레이션 차트기간을 늘려 볼수 있는 방법은 없는지요?
프로필 이미지
너무조아
2026-07-01
439
글번호 232640
지표
답변완료

진입필터

데이트레이딩data1 PLUS삼성전자선물단일종목2X인버스 1분차트진입필터 요청 if 진입이전 하이로우가 2000원 이상이면 진입중지 and 진입수식 then buy();위 수식 완성 바랍니다.항상 고맙습니다.
프로필 이미지
목마와숙녀
2026-07-01
207
글번호 232639
시스템
답변완료

예스 종목검색으로 변환 부탁드립니다..^^*

아래첨부 사진은 영웅문 조건검색입니다...이것을 예스트레이더 종목검색으로 요청드립니다...항상 감사합니다...^^*
프로필 이미지
서민순
2026-07-01
206
글번호 232638
종목검색
답변완료

문의 드립니다.

안녕하세요 평소 많은 도움 주심에 감사 드립니다. 아래 신호 수식에 대한 종목 검색식을 부탁 드립니다. 중최고가=최고값(고가,20);중최저가=최저값(저가,20);경계=(중최고가+중최저가)/2-(중최고가-중최저가)*배분1;경계1=crossup(종가, 경계)&& 종가>시가*배분2;경계2=crossdown(c, 경계);기준봉=valuewhen(1, 경계1 or 경계2, 시가);기준봉1=crossup(종가, 기준봉);기준봉2=crossdown(종가, 기준봉);결과기준=valuewhen(1, 기준봉1 or 기준봉2, 시가);결과기준1=crossup(종가, 결과기준);결과기준2=crossdown(종가, 결과기준);A=valuewhen(1, 결과기준1 or 결과기준2, 시가);M5=eavg(C,5);M10=eavg(C,10);M20=eavg(C,20);M60=eavg(C,60);M120=eavg(C,120);M240=eavg(C,240);M480=eavg(C,480);BH=BBandsUp(20,2);BC=BBandsC(20,2);평균=((M5*2)+(M10*2)+(M20*3)+(M60*2)+(M120*3)+(M240*2)+(M480*2)+(BH*1)+(BC*1)) / 18;평균라인=Tema(평균, 5, 지수);B=평균라인 + 20*stdev(평균라인,5);AA=sar(0.02,0.2);C>=A && CROSSUP(C,B) && AA<=C감사합니다.
프로필 이미지
ikksoo
2026-07-01
507
글번호 232636
종목검색
답변완료

시스템식 검토부탁드립니다.

ai 랑 아래와 같은 질문과 응답을 받았는데 습니다.ai에게 질문20이평에서 119 이평까지 100개의 이평의 방향을 통계로 산출하고 이평이 상승하는 숫자만큼 매수하는 전략을 만들어 주세요 예를 들어 이평통계값이 100이면 100개매수 90으로줄면 10개청산하고 90개매수유지 이평통계값이 60으로 변경되면 30개청산하고 60개매수유지 통계값이 85로 증가하면 25개매수해서 85개매수유지하는 전략입니다ai답변// 20~119 이평 방향 기반 가변 포지션 전략// 입력/변수 선언Input : MinPeriod(20), MaxPeriod(119);Var : i(0), period(0), countUp(0), desiredQty(0), curQty(0);Array : maArr[120](0); // 각 기간별 이동평균 저장// 각 기간별 이동평균 계산 및 상승(전봉 대비) 카운트countUp = 0;For period = MinPeriod To MaxPeriod{ // 이동평균 계산 maArr[period] = MA(C, period); // 상승 여부: 현재 MA가 전봉 MA보다 큰 경우 If maArr[period] > maArr[period][1] Then countUp = countUp + 1;}// 목표 보유수량desiredQty = countUp;// 현재 보유 수량(내장변수 사용)curQty = CurrentContracts;// 포지션 조정 로직If desiredQty > curQty Then{ // 부족한 만큼 매수 Buy("MA_Buy", onclose, Def, desiredQty - curQty);}Else If desiredQty < curQty Then{ // 초과분 청산 (부분청산 옵션 사용) // 진입명은 빈문자열로 두고, 수량옵션 1로 전체중 지정수량 청산 ExitLong("MA_Reduce", onclose, Def, "", curQty - desiredQty, 1);}// 안전: 무포지션에서 desiredQty==0 인 경우 아무 동작 없음///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////질문내용입니다.첫째 위의 전략이 잘 작성되었는지 검토부탁드립니다.둘째 전략적용을 할때 피라미딩설정에서 허용안함, 다른진입신호만 허용, 모든진입신호허용 중 어느항목에 체크해야하는지 와 진입횟수수량은 20 기본값으로 해야하는지알려주세요셋째 기본거래수량 셋팅에서 동일수량진입,고정자산기준진입중 어느항목에 체크해야하는지 알려주세요
프로필 이미지
e편한신호
2026-07-01
967
글번호 232634
시스템
답변완료

종목검색식으로 변환 부탁드려요.

// 종목검색식: BBandsUp+EMA 기반 변환 검색식// 제목: BBandsUp_EMA_변환Input : 기간(60), 승수(1), 이평(120);Var : A(0), A1(0), SS1(0), SS2(0), SS1_25(0), SS2_25(0), signal(0), plotSignal(0);Var : TxID(0);// 볼린저 밴드 상단A = BollBandUp(기간, 승수);// 지수이동평균(EMA)A1 = EMA(C, 이평);// SS1, SS2 계산 (참조기간 고저 기반)SS1 = (Highest(H,9) + Lowest(L,9) + Highest(H,26) + Lowest(L,26)) / 4;SS2 = (Highest(H,52) + Lowest(L,52)) / 2;// 25봉 전 값 참조 (검색식에서는 과거값 참조 허용 범위 고려)SS1_25 = SS1[25];SS2_25 = SS2[25];// 조건식: 변환 조건 만족 시 signal=1If SS1_25 <= C And SS2_25 <= C And (CrossUp(A, A1) Or (A1 * 1.03 >= A And A1 <= A And CrossUp(C, A))) Then signal = 1;Else signal = 0;// 플롯용 값 대신 검색식에서는 Signal 위치(가격)를 계산If signal == 1 Then plotSignal = Low - (ATR(14) * 0.2);Else plotSignal = plotSignal[1];// 텍스트는 화면 출력용이므로 검색결과 표시에만 사용: Find(1) 호출 필수If signal == 1 Then{ // 텍스트 객체 관리는 지표와 달리 검색 결과 리턴에 영향 없으므로 간결히 처리 If TxID <> 0 Then { Text_Delete(TxID); TxID = 0; } TxID = Text_New(sDate, sTime, plotSignal, "▲"); Text_SetColor(TxID, Lime); Text_SetSize(TxID, 18); Text_SetFont(TxID, "Arial Bold"); // 검색 결과 반환 Find(1);}
프로필 이미지
성찰
2026-07-01
819
글번호 232633
종목검색
답변완료

문의 드립니다

var : TT77(0),TT78(0), H77(0),HH77(0),L77(0),LL77(0);var : TL44(0),TL45(0),TL46(0),TL47(0),TL48(0);#########################3if CrossUp((c-채널2돌파트리거틱값*PriceScale) ,(value84[채널2이전봉비교값])) Then { TL_Delete(TL44); TL_Delete(TL45); TL_Delete(TL46); TL_Delete(TL47); TL_Delete(TL48);TT77 = 1;TT78 = 0;L77 = 0;//데드구간 최저가 초기값LL77 = 0;//골드봉 고가H77 = H;//골드구간 최고가 초기값HH77 = H;//골드봉고가 + 폭var35 = H77[1]+abs(H77[1]-LL77[2])*3; ######//골드봉고가 + 폭var34 = H77[1]+abs(H77[1]-LL77[2])*2; ######//골드봉고가 + 폭var33 = H77[1]+abs(H77[1]-LL77[2]); ######//골드봉고가 + 폭var32 = H77[1]; ######//골드봉고가 - 폭var31 = LL77[1];TL44 = TL_New(sdate[1],stime[1],var31,sdate,stime,var31); TL_SetExtright(TL44,true);### TL_SetExtLEFT(TL4,true);### TL_SetSize(TL44,4); TL_SetColor(TL44,RED); TL_SetStyle(TL44,4);TL45 = TL_New(sdate[1],stime[1],var32,sdate,stime,var32); TL_SetExtright(TL45,true);### TL_SetExtLEFT(TL4,true);### TL_SetSize(TL45,4); TL_SetColor(TL45,RED); TL_SetStyle(TL45,4);TL46 = TL_New(sdate[1],stime[1],var33,sdate,stime,var33); TL_SetExtright(TL46,true);### TL_SetExtLEFT(TL4,true);### TL_SetSize(TL46,4); TL_SetColor(TL46,RED); TL_SetStyle(TL46,4);TL47 = TL_New(sdate[1],stime[1],var34,sdate,stime,var34); TL_SetExtright(TL47,true);### TL_SetExtLEFT(TL4,true);### TL_SetSize(TL47,4); TL_SetColor(TL47,RED); TL_SetStyle(TL47,4);TL48 = TL_New(sdate[1],stime[1],var35,sdate,stime,var35); TL_SetExtright(TL48,true);### TL_SetExtLEFT(TL4,true);### TL_SetSize(TL48,8); TL_SetColor(TL48,RED); TL_SetStyle(TL48,4);}###########################if CrossDown((c-채널2돌파트리거틱값*PriceScale) ,(value84[채널2이전봉비교값])) Then { TL_Delete(TL44); TL_Delete(TL45); TL_Delete(TL46); TL_Delete(TL47); TL_Delete(TL48);TT77 = 0;TT78 = 1;//골드봉 고가H77 = 0;//골드구간 최고가 초기값HH77 = 0;//데드봉 저가L77 = L;//데드구간 최저가 초기값LL77 = L;//드드봉저가 + 폭//골드봉고가 + 폭var40 = L77[1]+abs(L77[1]-HH77[2])*3; ######//골드봉고가 + 폭var39 = L77[1]+abs(L77[1]-HH77[2])*2; ######//골드봉고가 + 폭var38 = L77[1]+abs(L77[1]-HH77[2]); ######//골드봉고가 + 폭var37 = L77[1]; ######//골드봉고가 - 폭var36 = HH77[1];TL44 = TL_New(sdate[1],stime[1],var36,sdate,stime,var36); TL_SetExtright(TL44,true);### TL_SetExtLEFT(TL4,true);### TL_SetSize(TL44,4); TL_SetColor(TL44,RED); TL_SetStyle(TL44,4);TL45 = TL_New(sdate[1],stime[1],var37,sdate,stime,var37); TL_SetExtright(TL45,true);### TL_SetExtLEFT(TL4,true);### TL_SetSize(TL45,4); TL_SetColor(TL45,RED); TL_SetStyle(TL45,4);TL46 = TL_New(sdate[1],stime[1],var38,sdate,stime,var38); TL_SetExtright(TL46,true);### TL_SetExtLEFT(TL4,true);### TL_SetSize(TL46,4); TL_SetColor(TL46,RED); TL_SetStyle(TL46,4);TL47 = TL_New(sdate[1],stime[1],var39,sdate,stime,var39); TL_SetExtright(TL47,true);### TL_SetExtLEFT(TL4,true);### TL_SetSize(TL47,4); TL_SetColor(TL47,RED); TL_SetStyle(TL47,4);TL48 = TL_New(sdate[1],stime[1],var40,sdate,stime,var40); TL_SetExtright(TL48,true);### TL_SetExtLEFT(TL4,true);### TL_SetSize(TL48,8); TL_SetColor(TL48,RED); TL_SetStyle(TL48,4);}#############################//골드구간 최고가if TT77 == 1 Then {if H > HH77 ThenHH77 = H;}//데드구간 최저가if TT78 == 1 Then {if L < LL77 ThenLL77 = L;}##############################################################################매수신호 발생시 그 봉의 고점값과 매도신호 유지동안의 저점값의 폭 만큼의 수평선을 5개 그려주고반대로 매도 신호 발생시는 이전의 수평선은 전부 지우고, 매도 신호 발생 시점의 저점값과 매수 신호 유지동안의 고점값의 폭 만큼의 수평선으 5개그려주는 수식 입니다.어디가 문제인지 그려지지가 않읍니다검토해 주시면 감사 하겠읍니다 감사 합니다
프로필 이미지
야할라
2026-06-30
304
글번호 232632
지표