커뮤니티

예스랭귀지 Q&A

글쓰기

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

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

부틱드립니다

수고하십니다 아래수식을 예스로 부탁드립니다 //settings length = input.int(14,minval = 2) smoType1 = input.string('RMA','Method',options = ['EMA','SMA','RMA','TMA']) src = input(close,'Source') arsiCss = input(color_silver,'color',inline = 'rsicss') autoCss = input(true,'Auto',inline = 'rsicss') //signal line smooth = input.int(14,minval = 1,group = 'Signal Line') smoType2 = input.string('EMA','Method',options = ['EMA','SMA','RMA','TMA'], group = 'Signal Line') signalCss = input( #ff5d00,'Color',group = 'Signal Line') //OB/OS Style obValue = input.FLoat(80,'Overbought',inline = 'ob', group = 'OB/OS Style') obCss = input( #089981,'', inline = 'ob', group = 'OB/OS Style') obAteaCss = input( color_new(#089981, 80),'',inline = 'ob', group = 'OB/OS Style') osValue = input.FLoat(20, 'Oversold ',inline = 'os', group = 'OB/OS Style') osCss = input( #f23645,'', inline = 'os', group = 'OB/OS Style') osAreaCss = input( color_new(#f23645, 80),'',inline = 'os', group = 'OB/OS Style') //Functions ma(x, len, maType) => switch maType 'EMA' => ta.ema(x, len) 'SMA' => ta.sma(x, len) 'RMA' => ta.rma(x, len) 'TMA' => ta.sma(ta.sma(x, len), len) //Augmented RSI upper = ta.highest(src,length) lower = ta.lowest(src,length) r = upper - lower d = src - src[1] diff = upper > upper[1] ? r : lower < lower[1] ? -r : d num = ma(diff, length,smoType1) den = ma(math.abs(diff),length, smoType1) arsi = num / den *50 + 50 signal = ma(arsi,smooth,smoType2) //Plots plot_rsi = plot(arsi,'Ultimate RSI' ,arsi > obvalue ? obCss :arsi < osvalue ? osCss :autoCss ? chart.fg_color : arsiCss) plot(signal,'signal Line',signalCss) //Levels plot_up = plot(obvalue,color = na, editable = false) plot_avg = plot(50, color = na, editable = false) plot_dn = plot(osvalue, color = na, editable = false) //OB-OS fill(plot_rsi, plot_up, arsi > obvalue ? obAreaCss : na) fill(plot_dn, plot_rsi, arsi < osvalue ? osAreaCss : na) //Gradient fill(plot_rsi, plot_avg, obvalue, 50, obAreaCss, color.new(chart.bg_color, 100)) fill(plot_avg, plot_rsi, 50, osvalue, color.new(chart.bg_color, 100),osAreaCss) hline(obvalue,'Overbought') hline(50,'Midline') hline(osValue, 'Oversold') //=== Supertrend 추가 === Periods = input.int(10, title ="ATR Period") Multiplier = input.float(3.0, step=0.1,title ="ATR Multiplier") changeATR = input.bool(true,title="change ATR Calculation Method ?") atr2 = ta.sma(ta.tr, periods) atr = changeATR ? ta.atr(Periods) : atr2 super_src = hl2 up = super_src - Multiplier * atr up1 = nz(up[1], up) up := close[1] > up1 ? math.max(up, up1) : up dn = super_src + Multiplier * atr dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? math.min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend plot(trend == 1 ? up : na, title ="up trend", style = plot.styie_linebr, 1 plot(trend == -1 ? dn : na, title ="down trend", style = plot.styie_linebr ,1
프로필 이미지
파생돌이
2025-06-09
308
글번호 191554
지표
답변완료

진입시간 문의

if stime > 084500 and stime <= 151700 and 수식A Then Buy(); 이전까지는 상기와 같은 시간에 수식A 만족시 매수하는 공식으로 매매를 했는데 IM투자증권이 야간거래까지 진행이 되다보니 084500 ~ 익일 053700 까지 수식 A에 맞으면 매수를 하는 형태의 거래를 하고 싶습니다. 알려주시면 감사하겠습니다. 추가적으로 084500 ~ 익일053700까지 거래중 고점 저점은 동일적용하고 싶습니다. ex) 기존 저점에서 -0.5포 하락시 손절(매수상황시) ex) 기존 고점에서 +0.5포 상승시 손절(매도상황시) 오늘 장을 보니 야간장 들어서면 바로 야간장 기준으로 고/저 점이 바뀌는것 같아서요..
프로필 이미지
신호매매
2025-06-09
272
글번호 191553
시스템
답변완료

변환 부탁드립니다

다음수식 종목검색 부탁드립니다 HV=Highestsince(1, date(3) != date, V); A=Valuewhen(1, HV== V && C > 0, H); B=Valuewhen(1, HV== V && C > 0, L); AA=(A-B) * 2 / 4 + B; A1=eavg(C, 5); B1=eavg(C, 10); X=(A1 - B1); 조건=A1 > B1 && X > X(1) && AA >= L && H(1) > H && L(1) < L
프로필 이미지
파크에버뉴
2025-06-09
253
글번호 191551
종목검색

관리자에 의해 예스스팟 QnA로 이동되었습니다

프로필 이미지
골드33
2025-06-10
11
글번호 191544
시스템
답변완료

부탁드립니다

예스식으로 바꿀려고 하는데 도움 좀 받을수 있을까요? AA = if( (h>Btm) and (L!=Btm), 1,if (BB, 1, 0)); HH = if (AA, H, highestsince(1,AA==1, H)); 제생각엔 "highestsince(1,AA==1, H)"만 따로 떼서 if AA==1 Then DD=H; 라고 하고 그자리에 DD를 넣어주고, 앞조건 if 는 iff 로 하면 될까요? 도움 주신 것 미리 감사 드립니다
프로필 이미지
시나브로
2025-06-10
265
글번호 191538
종목검색
답변완료

변환 부탁드립니다.

안녕하세요? 아래 트뷰 지표를 나름 변경해 보았습니다. 예스랭귀지에서 에러는 발생하지 않는데, 화면에 아무것도 안나오네요. 제가 만든 스크립트 무시하더라도 최대한 트뷰와 비슷하게 수정부탁드립니다. == 변경 == Input: left(14), right(14), areaOpt(0); Input: showTop(True), showBtm(True); Var: ph(false), pl(false); Var: ph_top(0), ph_btm(0), ph_vol(0); Var: pl_top(0), pl_btm(0), pl_vol(0); Var: i(0); Var: ph_boxID(0), pl_boxID(0), ph_tlID(0), pl_tlID(0), ph_txtID(0), pl_txtID(0); ph = swinghigh(1, High, left, right, 0) != -1; pl = swinglow(1, Low, left, right, 0) != -1; If ph == True and showTop == True then { ph_top = High[right]; If areaOpt == 0 then ph_btm = Max(Close[right], Open[right]); else ph_btm = Low[right]; // 거래량 누적(박스범위 내) ph_vol = 0; For i = right To left + right - 1 { If (Low[i] < ph_top and High[i] > ph_btm) then ph_vol = ph_vol + Volume[i]; } // 기존 오브젝트 삭제 If ph_boxID != 0 then Box_Delete(ph_boxID); If ph_tlID != 0 then TL_Delete(ph_tlID); If ph_txtID != 0 then Text_Delete(ph_txtID); ph_boxID = Box_New( sDate[left + right - 1], sTime[left + right - 1], ph_top, sDate[right], sTime[right], ph_btm ); Box_SetColor(ph_boxID, rgb(246,79,8)); Box_SetFill(ph_boxID, True, 120, True); // 수평선(피벗 구간 전체) ph_tlID = TL_New(sDate[left + right - 1], sTime[left + right - 1], ph_top, sDate[right], sTime[right], ph_top); TL_SetColor(ph_tlID, rgb(246,79,8)); TL_SetSize(ph_tlID, 2); // 거래량 라벨(박스 좌상단에 표시) ph_txtID = Text_New(sDate[left + right - 1], sTime[left + right - 1], ph_top, "V:" + NumToStr(ph_vol, 0)); Text_SetStyle(ph_txtID, 1, rgb(246,79,8)); } If pl == True and showBtm == True then { pl_top = Iff(areaOpt == 0, Min(Close[right], Open[right]), High[right]); pl_btm = Low[right]; pl_vol = 0; For i = right To left + right - 1 { If (Low[i] < pl_top and High[i] > pl_btm) then pl_vol = pl_vol + Volume[i]; } If pl_boxID != 0 then Box_Delete(pl_boxID); If pl_tlID != 0 then TL_Delete(pl_tlID); If pl_txtID != 0 then Text_Delete(pl_txtID); pl_boxID = Box_New( sDate[left + right - 1], sTime[left + right - 1], pl_top, sDate[right], sTime[right], pl_btm ); Box_SetColor(pl_boxID, rgb(10,139,109)); Box_SetFill(pl_boxID, True, 120, True); pl_tlID = TL_New(sDate[left + right - 1], sTime[left + right - 1], pl_btm, sDate[right], sTime[right], pl_btm); TL_SetColor(pl_tlID, rgb(10,139,109)); TL_SetSize(pl_tlID, 2); pl_txtID = Text_New(sDate[left + right - 1], sTime[left + right - 1], pl_btm, "V:" + NumToStr(pl_vol, 0)); Text_SetStyle(pl_txtID, 1, rgb(10,139,109)); } == 트뷰 == //@version=5 indicator("예시" , overlay = true , max_lines_count = 500 , max_labels_count = 500 , max_boxes_count = 500) //------------------------------------------------------------------------------ //Settings //-----------------------------------------------------------------------------{ length = input(14, 'Period') area = input.string('Wick only', 'Swing Range', options = ['Wick only', 'Full Bar']) //Style showTop = input(true, '저항', inline = 'top', group = 'Style') topCss = input(#f64f08, '' , inline = 'top', group = 'Style') topAreaCss = input(#ff52525c, 'Area', inline = 'top', group = 'Style') showBtm = input(true, '지지', inline = 'btm', group = 'Style') btmCss = input(#0a8b6d, '' , inline = 'btm', group = 'Style') btmAreaCss = input(#00897b53, 'Area', inline = 'btm', group = 'Style') labelSize = input.string('Tiny', 'Labels Size', options = ['Tiny', 'Small', 'Normal'], group = 'Style') //-----------------------------------------------------------------------------} //Functions //-----------------------------------------------------------------------------{ n = bar_index get_counts(condition, top, btm)=> var count = 0 var vol = 0. if condition count := 0 vol := 0. else vol += low[length] < top and high[length] > btm ? volume[length] : 0 count += low[length] < top and high[length] > btm ? 1 : 0 [count, vol] set_label(count, vol, x, y, css, lbl_style)=> var label lbl = na var label_size = switch labelSize 'Tiny' => size.tiny 'Small' => size.small 'Normal' => size.normal target = count if ta.crossover(target, 0) lbl := label.new(x, y, str.tostring(vol, format.volume) , style = lbl_style , size = label_size , color = #00000000 , textcolor = css) if target > 0 label.set_text(lbl, str.tostring(vol, format.volume)) set_level(condition, crossed, value, count, vol, css)=> var line lvl = na target = count if condition if target[1] < 0[1] line.delete(lvl[1]) else if not crossed[1] line.set_x2(lvl, n - length) lvl := line.new(n - length, value, n, value , color = na) if not crossed[1] line.set_x2(lvl, n+3) if crossed and not crossed[1] line.set_x2(lvl, n) line.set_style(lvl, line.style_dashed) if target > 0 line.set_color(lvl, css) set_zone(condition, x, top, btm, count, vol, css)=> var box bx = na target = count if ta.crossover(target, 0) bx := box.new(x, top, x + count, btm , border_color = na , bgcolor = css) if target > 0 box.set_right(bx, x + count) //-----------------------------------------------------------------------------} //Global variables //-----------------------------------------------------------------------------{ //Pivot high var float ph_top = na var float ph_btm = na var bool ph_crossed = na var ph_x1 = 0 var box ph_bx = box.new(na,na,na,na , bgcolor = color.new(topAreaCss, 80) , border_color = na) //Pivot low var float pl_top = na var float pl_btm = na var bool pl_crossed = na var pl_x1 = 0 var box pl_bx = box.new(na,na,na,na , bgcolor = color.new(btmAreaCss, 80) , border_color = na) //-----------------------------------------------------------------------------} //Display pivot high levels/blocks //-----------------------------------------------------------------------------{ ph = ta.pivothigh(length, length) //Get ph counts [ph_count, ph_vol] = get_counts(ph, ph_top, ph_btm) //Set ph area and level if ph and showTop ph_top := high[length] ph_btm := switch area 'Wick only' => math.max(close[length], open[length]) 'Full Bar' => low[length] ph_x1 := n - length ph_crossed := false box.set_lefttop(ph_bx, ph_x1, ph_top) box.set_rightbottom(ph_bx, ph_x1, ph_btm) else ph_crossed := close > ph_top ? true : ph_crossed if ph_crossed box.set_right(ph_bx, ph_x1) else box.set_right(ph_bx, n+3) if showTop //Set ph zone set_zone(ph, ph_x1, ph_top, ph_btm, ph_count, ph_vol, topAreaCss) //Set ph level set_level(ph, ph_crossed, ph_top, ph_count, ph_vol, topCss) //Set ph label set_label(ph_count, ph_vol, ph_x1, ph_top, topCss, label.style_label_down) //-----------------------------------------------------------------------------} //Display pivot low levels/blocks //-----------------------------------------------------------------------------{ pl = ta.pivotlow(length, length) //Get pl counts [pl_count, pl_vol] = get_counts(pl, pl_top, pl_btm) //Set pl area and level if pl and showBtm pl_top := switch area 'Wick only' => math.min(close[length], open[length]) 'Full Bar' => high[length] pl_btm := low[length] pl_x1 := n - length pl_crossed := false box.set_lefttop(pl_bx, pl_x1, pl_top) box.set_rightbottom(pl_bx, pl_x1, pl_btm) else pl_crossed := close < pl_btm ? true : pl_crossed if pl_crossed box.set_right(pl_bx, pl_x1) else box.set_right(pl_bx, n+3) if showBtm //Set pl zone set_zone(pl, pl_x1, pl_top, pl_btm, pl_count, pl_vol, btmAreaCss) //Set pl level set_level(pl, pl_crossed, pl_btm, pl_count, pl_vol, btmCss) //Set pl labels set_label(pl_count, pl_vol, pl_x1, pl_btm, btmCss, label.style_label_up) //-----------------------------------------------------------------------------}
프로필 이미지
주식남
2025-06-09
383
글번호 191537
지표

와우리 님에 의해서 삭제되었습니다.

프로필 이미지
와우리
2025-06-10
61
글번호 191535
지표
답변완료

분봉에서 오늘 시초가 돌파 질문임미다 건강하세요

오늘 장이 시작되고 120분봉에서 현재가가 시초가 밑으로 한번은 0.4 % 이상 내려 왔다가 오늘 시초가를 돌파하는 종목 검색식 부탁드려요 아무리 공부해도 꼭 막히네요
프로필 이미지
뽀스뽀스
2025-06-09
210
글번호 191523
검색

우유 님에 의해서 삭제되었습니다.

프로필 이미지
우유
2025-06-09
18
글번호 191515
시스템