커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

잘 부탁드립니다

input : n1(10),n2(21),obLevel1(60),obLevel2(53),osLevel1(-60),osLevel2(-53); var : ap(0),esa(0),dd(0),ci(0),tci(0),wt1(0),wt2(0); ap = (h+l+c)/3 ; esa = ema(ap, n1); dd = ema(abs(ap - esa), n1); ci = (ap - esa) / (0.015 * dd); tci = ema(ci, n2); wt1 = tci; wt2 = ma(wt1,4); plot1(0,"0",GRAY); plot2(obLevel1,"obLevel1",red); plot3(osLevel1,"osLevel1",green); plot4(obLevel2,"obLevel2",red); plot5(osLevel2,"osLevel2",green); plot6(wt1,"wt1",green); plot7(wt2,"wt2",red); plot8(wt1-wt2,"wt1-wt2",blue); 1, 0선 아래에서 골드나는 매수 2, -50 -60선 아래서 골드발생만 매수 3, wt1 이 wt2 를 골드 하는 매수 매도 시스템응 부탁 드립니다 ### 언제나 항상 많은 도움 감사드립니다 ### ### 부족한 설명이 있거나 부족한것이 있다면 검토해서 잘 부탁드립니다###
프로필 이미지
매치다는
2022-12-11
1496
글번호 164495
시스템
답변완료

수식 검증 수정부탁드립니다.

트레이딩뷰 지표를 예스지표로 변환하려는데, 어디서 오류가 있는것인지 출력이 되지 않습니다. 점검 수정 부탁드립니다. ////////////////트레이딩뷰 원 지표식 ////////// study(title="UT Bot Alerts", overlay = true) // Inputs a = input(1, title = "Key Vaule. 'This changes the sensitivity'") c = input(10, title = "ATR Period") h = input(false, title = "Signals from Heikin Ashi Candles") xATR = atr(c) nLoss = a * xATR src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = false) : close xATRTrailingStop = 0.0 xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss), iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss))) pos = 0 pos := iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1, iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue ema = ema(src,1) above = crossover(ema, xATRTrailingStop) below = crossover(xATRTrailingStop, ema) buy = src > xATRTrailingStop and above sell = src < xATRTrailingStop and below barbuy = src > xATRTrailingStop barsell = src < xATRTrailingStop plotshape(buy, title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny) plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, transp = 0, size = size.tiny) barcolor(barbuy ? color.green : na) barcolor(barsell ? color.red : na) alertcondition(buy, "UT Long", "UT Long") alertcondition(sell, "UT Short", "UT Short") ////////// 제가 변환해본 식 //////// Input : a(1), length(10),크기(15); var : truehighv(0),TrueLowv(0),TrueRangev(0),xatr(0),nLoss(0),src(0) ; var : xClose(0),xOpen(0),xHigh(0),xLow(0); var : xATRTrailingStop(0),poss(0), emav(0), ab(0), be(0),tx(0) ; var : dir(0) ; if index == 0 then { xOpen = open; xClose = (O+H+L+C)/4; xHigh = MaxList( high, xOpen, xClose); xLow = MinList( low, xOpen,xClose); } else { xClose = (O+H+L+C)/4; xOpen = (xOpen [1] + xClose [1])/2 ; xHigh = MaxList(High, xOpen, xClose) ; xLow = MinList(Low, xOpen, xClose) ; } //////// If xClose[1] > xHigh then TrueHighv = xClose[1]; else TrueHighv = xHigh; If xClose[1] < xLow then TrueLowv = xClose[1]; else TrueLowv = xLow; TrueRangev = TrueHighv - TrueLowv; xatr = ma(TrueRangev,length); nLoss = a * xatr ; ########## src = xClose ; xATRTrailingStop = 0.0 ; xATRTrailingStop = iff(src > xATRTrailingStop[1] and src[1] > xATRTrailingStop[1], max(xATRTrailingStop[1], src - nLoss), iff(src < xATRTrailingStop[1] and src[1] < xATRTrailingStop[1], min(xATRTrailingStop[1],src + nLoss), iff(src > xATRTrailingStop[1], src - nLoss, src + nLoss))); poss = 0 ; poss = iff(src[1] < xATRTrailingStop[1] and src > xATRTrailingStop[1], 1, iff(src[1] > xATRTrailingStop[1] and src < xATRTrailingStop[1], -1, poss[1])) ; emav = ema(src,1); if crossup(emav, xATRTrailingStop) Then ab == true ; if crossup(xATRTrailingStop, emav) Then be == true ; //////////// dir = iff(src > xATRTrailingStop and ab == true , 1 ,iff( src < xATRTrailingStop and be == true , -1 , dir)); if dir == 1 and dir[1] == -1 Then { tx = Text_New(sDate,sTime,low,"▲"); Text_SetStyle(tx,2,0); Text_SetSize(tx, 크기); Text_SetColor(tx,black); } if dir == -1 and dir[1] == 1 Then { tx = Text_New(sDate,sTime,high,"▼"); Text_SetStyle(tx,2,1); Text_SetSize(tx, 크기); Text_SetColor(tx,black); } //////////////
프로필 이미지
당일선물
2022-12-11
2034
글번호 164494
지표
답변완료

부탁 드립니다

도움에 감사 드립니다. 타주기(1.분봉용 2.일봉용)용 수식 부탁 드립니다. 미리 감사 드립니다. input : p(20); input : sig(9); Var : BPower(0), SPower(0),netPower(0); BPower = (((C-C[1])*3 + H-C[1])*100)/C[1]; SPower = (((C[1]-C)*3 + C[1]-L)*100)/C[1]; NetPower = ma(BPower-SPower,p); var1=ma(NetPower,sig); 작성에 참고할 만한 수식) var : S1(0),D1(0),TM(0),TF(0),cnt(0),ii(0),sum(0); Array : CC[500](0),HH[500](0),LL[500](0),cts[500](0),VV[500](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or (Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or (Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then { hh[0] = H; LL[0] = l; VV[0] = 0; for cnt = 1 to 499 { CC[cnt] = CC[cnt-1][1]; HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; VV[cnt] = VV[cnt-1][1]; CTS[cnt] = CTS[cnt-1][1]; } } CC[0] = C; VV[0] = VV[0] + v; if HH[0] > 0 and H > HH[0] Then HH[0] = H; if LL[0] > 0 and L < LL[0] Then LL[0] = L;
프로필 이미지
yes
2022-12-10
1174
글번호 164493
지표
답변완료

참조 데이터 변수선언

일봉챠트를 참조 데이타로 아래와 같이 작성하고 변수를 확인하면 아무런 변화없이 항상 '0' 입니다. 1 아니면 -1 이여야 하는데, 무엇이 잘못됐나요??? var : START(""); var : PBC(0); // 상승하락확인 // 일봉으로 확인 Var1 = (data6(O[2]) - data6(C[0])); If var1 > 0 then { PBC = -1; } If var1 < 0 then { PBC = 1; } If START = "시작" then { MessageLog("PBC=%0.0f", PBC); } START = "시작";
프로필 이미지
와글이
2022-12-10
1168
글번호 164492
지표

회원 님에 의해서 삭제되었습니다.

프로필 이미지
회원
2022-12-10
16
글번호 164491
시스템
답변완료

화면분할 좌우측 차트의 인식문제

화면분할시 좌측 우측 차트에서 발생되는 시그널을 인식할 수 있는 함수가 있는지요?
프로필 이미지
사하라
2022-12-10
983
글번호 164490
시스템
답변완료

문의

답변 수식에 input을 사용하여 시뮬레이션 해보았습니다. 6개 변수에 모두 -10 에서 10 까지 1 단위 사용함 up1 up2 값 변화 없음 dn1 dn2 값 변화 없음 zup 값 변화 없음 zdn 위 3개 변수에서 시뮬레이션이 작동하지 않는데 살펴주셨으면 합니다. ********************************************************************************** input : up1(1),up2(2),dn1(-1),dn2(-2),zup(3),zdn(-3); var : uptail(0),body(0),dntail(0),T(0); uptail = H-max(c,o); body = abs(C-O); dntail = min(C-O)-L; T = 0; if C > O Then { if body > uptail+dntail and body > 0 Then T = up1; if body < uptail+dntail and uptail+dntail > 0 Then T = up2; } Else if C < O Then { if body > uptail+dntail and body > 0 Then T = dn1; if body < uptail+dntail and uptail+dntail > 0 Then T = dn2; } Else { if dntail > uptail and dntail > 0 Then T = zup; if dntail < uptail and uptail > 0 Then T = zdn; } if AccumN(T,12) > 5 Then Buy(); if AccumN(T,12) < -5 Then SelL();
프로필 이미지
목마와숙녀
2022-12-10
1059
글번호 164489
시스템
답변완료

트렌드 쓰리바닥

inputs: ATRLength(20), Strength(22), ATRMult(1), 폭(0.25); input : 쌍봉상(2),쌍봉하(2),쌍바닥상(2),쌍바닥하(2); var : STrend(0),ATRv(0), avgv(0), dnv(0), upv(0), trend(1), flag(0), flagh(0), ST(0),hl(0); var : idx(0),hh(0),ll(0),EP1(0),EP2(0); var : ema1(0),ema2(0),ema3(0),h1(0),h2(0),h3(0),h4(0),L1(0),l2(0),l3(0),l4(0); var :tx(0),tl(0),tx1(0),tx2(0); Ep1 = 2/(ATRLength+1); Ep2 = 2/(Strength+1); idx = idx+1; if idx < ATRLength Then { hh = DayHigh; ll = daylow; } Else { hh = Highest(High, ATRLength); ll = Lowest(Low, ATRLength); } if idx < Strength Then { h1 = DayHigh; l1 = daylow; } Else { h1 = Highest(High, Strength); l1 = Lowest(Low, Strength); } hl = hh-ll; if idx == 1 Then { ema1 = hl; ema2 = h; ema3 = l; } Else { ema1 = hl * EP1 + ema1 * (1-EP1); ema2 = h * EP2 + ema2 * (1-EP2); ema3 = l * EP2 + ema3 * (1-EP2); } atrv = ema1; avgv = (ema2+ema3)/2; upv = avgv + ATRv; dnv = avgv - ATRv; if idx >= 2 then { if c > upv[1] and c > h1[1] then trend = 1; else if c < dnv[1] and c < l1[1] then trend = -1; if trend < 0 and trend[1] > 0 then flag=1; else flag=0; if trend > 0 and trend[1] < 0 then flagh = 1; else flagh = 0; if trend > 0 and dnv < dnv[1] then dnv=dnv[1]; if trend < 0 and upv > upv[1] then upv=upv[1]; if flag == 1 then upv = avgv + ATRv; if flagh == 1 then dnv = avgv - ATRv; if trend == 1 then ST = dnv; else ST = upv; STrend = trend; } Plot1(st,"SuperTrend",iff(strend == 1,red,blue)); if Trend != Trend[1] Then { if Trend == 1 Then { var1 = h; var2 = var1[1]; tx = Text_New(sDate,sTime, st-PriceScale*0,"●"); Text_SetColor(tx,Red); Text_SetSize(tx,20); Text_SetStyle(tx,2,2); if Var4 > 0 and var3 <= Var4+PriceScale*쌍바닥상 and var3 >= Var4-PriceScale*쌍바닥하 Then { tx1 = Text_New(sDate,sTime, st-PriceScale*0,"●"); Text_SetColor(tx1,Magenta); Text_SetSize(tx1,30); Text_SetStyle(tx1,2,2); } } Else { Var3 = l; Var4 = Var3[1]; tx = Text_New(sDate,sTime, st+PriceScale*0,"●"); Text_SetColor(tx,Blue); Text_SetSize(tx,20); Text_SetStyle(tx,2,2); if Var2 > 0 and var1 <= Var2+PriceScale*쌍봉상 and var1 >= Var2-PriceScale*쌍봉하 Then { tx2 = Text_New(sDate,sTime, st+PriceScale*0,"●"); Text_SetColor(tx2,Cyan); Text_SetSize(tx2,30); Text_SetStyle(tx2,2,2); } } } Else { if Trend == 1 Then { if h > var1 Then var1 = h; } if Trend == -1 Then { if l < var3 Then var3 = l; } } if Trend != Trend[1] Then { if Trend == 1 Then { h2 = h; h3 = h2[1]; h4 = h3[1]; if L4 > 0 and max(L2,l3,l4) <= min(L2,l3,l4)+폭 Then { tx1 = Text_New(sDate,sTime, st-PriceScale*0,"●"); Text_SetColor(tx1,Black); Text_SetSize(tx1,20); Text_SetStyle(tx1,2,2); } } Else { L2 = l; l3 = l2[1]; l4 = l3[1]; } } Else { if Trend == 1 Then { if h > h2 Then h2 = h; } if Trend == -1 Then { if l < L2 Then L2 = l; } } 0.25p 내에서 쓰리바닥을 형성하는지를 실시간으로 보기위한 지표입니다. 1.트렌드 선이 음전환될 때, 음선내의 캔들 최저가를 기준으로 직전저점과 전전저점의 차이가 상하 관계없이 0.25p 이내이면 음선 상단에 동그라미 표시. 두 저점 차이가 0.25p 이상이면 무표시. 2.동그라미 삭제시점:직전저점과 전전저점 중에 높은 저점을 기준으로 하여 a,아래로 -0.25p 도달하기 전에 양전환시. b,계속 하락하여 -0.25p를 하향 붕괴할 때. (동그라미는 생성과 삭제를 반복합니다) 부탁드립니다.
프로필 이미지
고성
2022-12-11
1339
글번호 164488
지표
답변완료

재 문의 드려요

밑의 수식은 붕봉 상 30일 동안 최고 종가의 값이 나와요 제가 알고 싶은 것은 30일 동안 일 봉의 최고 종가를 분봉에 넣고 싶어요 var1 = highest(c,30); <<<< 일봉의 최고 종가를 분봉에 선을 긋고 싶어요 input : N(20); var : cnt(0),hh(0); Array : HC[100](0); if sDate != sDate[1] Then { for cnt = 99 DownTo 1 { HC[cnt] = HC[cnt-1]; } HC[0] = C; } Else { if HC[0] > 0 and C > HC[0] Then { HC[0] = C; } } if HC[n-1] > 0 Then { hh = 0; For cnt = 1 to N { if hh == 0 or (hh > 0 and HC[cnt] > hh) Then hh = hc[cnt]; } Plot1(hh); }
프로필 이미지
아무다
2022-12-09
1170
글번호 164487
지표