커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

부탁드립니다.

해선에서 dayindex를 사용하면 국선과 달리 자정을 기준으로 하는데 어떻게 처리하여야할까요?
프로필 이미지
예시
2025-11-08
181
글번호 227782
지표

예시 님에 의해서 삭제되었습니다.

프로필 이미지
예시
2025-11-08
1
글번호 227781
지표
답변완료

조건검색문의드립니다

첨부메세지 에러가 뜨는데 보시구 수정 좀 부탁드리겠습니다. 항상 성의껏 답변 주셔서 감사합니다input: PULL_MIN(0.97), PULL_MAX(0.92), REB_RATE(1.02), VOLUP_RATE(1.2), BODY_RATIO(0.5);var: Pullback(0), Rebound(0), VolUp(0), vol_avg5(0), MA5(0), MA20(0), TrendUp(0), Body(0), Full(0), ValidBody(0), BuySignal_raw(0), BuySignal(0);vol_avg5 := MA(V, 5);Pullback := (L <= O * PULL_MIN) && (L >= O * PULL_MAX);Rebound := C >= L * REB_RATE;VolUp := (V > Ref(V, 1) * VOLUP_RATE) && (V > vol_avg5);MA5 := MA(C, 5);MA20 := MA(C, 20);TrendUp := MA5 > MA20;Body := Abs(C - O);Full := H - L;ValidBody := (C > O) && (Body / Full >= BODY_RATIO);BuySignal_raw := Pullback && Rebound && VolUp && TrendUp && ValidBody;if BuySignal_raw && !Ref(BuySignal_raw, 1) then BuySignal := 1else BuySignal := 0;if BuySignal = 1 then Find(1);
프로필 이미지
해피럭키
2025-11-08
286
글번호 227780
종목검색
답변완료

수식의미 문의

코스피 선물에서 setstoptrailing(1,3,pointstop,1)에서 마지막 1의 의미는 무엇인가요?해외선물에서는 setstoptrailing(15,50,pointstop,0.25)로 표현하든데 0.25의 의미가 무엇인가요?
프로필 이미지
사이버
2025-11-08
231
글번호 227779
시스템
답변완료

종목검색식 부탁드립니다

1. 단순 60 이평이 단순 120이평 골든크로스 종목검색식 부탁드립니다.
프로필 이미지
일지매7
2025-11-08
173
글번호 227778
종목검색
답변완료

문의

스톡캐시틱 80넘거나 20이하인 구간에 색으로 채워지던데 그 색을 채우는 지표식이 궁금합니다. RSI도 궁금합니다.또한 이평정배열 만들면 정배열 구간이 다 신호가 나오는데 이평정배열 나오는 첫날만 신호가 나오게 해주셔요마지막으로 이평이 상승추세로 예를들어 5 20 60일선이 모두 상승추세로 바뀌는 구간 그 시점만 신호가 나오게 해주셔요(각이평이 순차적으로 상승추세로 바뀌는데 세이평이 모두 상승추세로 바뀌는 그 시점을 말하는 겁니다.)
프로필 이미지
엉덩공주
2025-11-08
200
글번호 227777
지표
답변완료

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

안녕하세요.키움 강세 약세 수식이예요. 종목검색식으로 변환 부탁드려요.<TEMA50 강세약세>(강세)EMA1=eavg(c,50);EMA2=eavg(EMA1,50);EMA3=eavg(EMA2,50);B=3*EMA1-3*EMA2+EMA3;B>B(1)(약세)EMA1=eavg(c,50);EMA2=eavg(EMA1,50);EMA3=eavg(EMA2,50);B=3*EMA1-3*EMA2+EMA3;B<=B(1)
프로필 이미지
성찰
2025-11-07
246
글번호 227774
종목검색
답변완료

조건검색 문의

이동 = MA(C, 기간1);이동1 = MA(C, 기간2);조건 = CrossUp(이동, 이동1);라인 = ValueWhen(1, 조건, (H+L)/비율1);꺾임상승 = 라인 > Ref(라인, 1) AND Ref(라인, 1) <= Ref(라인, 2);꺾임하락 = 라인 < Ref(라인, 1) AND Ref(라인, 1) >= Ref(라인, 2);신호 = 꺾임상승 OR 꺾임하락;신호;종가 기준이 아닌당일 장중에서, 30분봉상 위 신호가 발생한 모-든 종목에 대해서 종목이 검출될 수 있게 해주시면 감사드리겠습니다 (__)
프로필 이미지
사공하늘
2025-11-07
220
글번호 227768
검색
답변완료

조건검색 문의

//@version=5indicator(title="Money Order Block with Bullish BOS Signals - Fixed", overlay=true, max_bars_back=5000)// Input optionsinputRange = input.int(25, "Candle Range", minval=5, maxval=100, step=1, group="BASIC SETTINGS")bullishBreakerSource = input.source(close, title="Bullish Breaker Source")bearishBreakerSource = input.source(close, title="Bearish Breaker Source")// Signal display optionsshowBullishBOS = input.bool(true, "Show Bullish BOS Signals", group="Signal Settings")bullishSignalColor = input.color(color.green, "Bullish Signal Color", group="Signal Settings")showSignalLabels = input.bool(true, "Show Signal Labels", group="Signal Settings")// optional displaysshowPD = input.bool(false, "Show Previous Day High/Low", group="Extras")showBearishBOS = input.bool(false, "Show Bearsish BOS Line", group="Extras")showBreakerCandles = input.bool(false, "Highlight Breaker Candles", group="Extras")showRetestCandles = input.bool(false, "Highlight Re-test Candles", group="Extras")showTrendColours = input.bool(false, "Show Trend Colours", group="Extras")useMitigatedBlocks = input.bool(false, "Show Mitigated Blocks", group="Extras")// colours & stylesbearishOBColour = input.color(color.rgb(219, 166, 50, 80), title="Bearish Order Block Colour", group="STYLES")bullishOBColour = input.color(color.rgb(192, 230, 174, 60), title="Bullish Order Block Colour", group="STYLES")mitigatedOBColour = input.color(color.rgb(207, 203, 202, 80), title="Mitigated Order Block Colour", group="STYLES")BOSCandleColour = input.color(color.yellow, title="Breaker Candle Colour", group="STYLES")shortRetestCandleColour = input.color(color.purple, title="Short Re-Test Candle Colour", group="STYLES")longRetestCandleColour = input.color(color.orange, title="Long Re-Test Candle Colour", group="STYLES")bullishTrendColor = input.color(color.lime, title="Bullish Trend Colour", group="STYLES")bearishTrendColour = input.color(color.red, title="Bearish Trend Colour", group="STYLES")// Bullish BOS Signalsvar bullishSignals = array.new_label()// candle colouringvar int CandleColourMode = 0var bool BosCandle = falsevar bool bullishAlert = falsevar bool bearishAlert = falsevar bool shortRetestCandle = falsevar bool longRetestCandle = false// tracking for entriesvar int lastDownIndex = 0var float lastDown = 0var float lastLow = 0var int lastUpIndex = 0var float lastUp = 0var float lastUpLow = 0var float lastUpOpen = 0var float lastHigh = 0var float lastBullBreakLow = 0// structurevar int structureLowIndex = 0float structureLow = 1000000// order block drawing arraysvar longBoxes = array.new_box()var longBoxStart = array.new_int()var longBoxState = array.new_int()var shortBoxes = array.new_box()var shortBoxStart = array.new_int()var shortBoxState = array.new_int()var bosLines = array.new_line()var int lastLongIndex = 0var int lastShortIndex = 0BosCandle := falsebullishAlert := falsebearishAlert := falseshortRetestCandle := falselongRetestCandle := false// Previous Day High/Low - Improved for replay compatibilityvar float PDH = navar float PDL = navar float dailyHigh = navar float dailyLow = naif ta.change(time("D")) PDH := dailyHigh PDL := dailyLow dailyHigh := high dailyLow := lowelse dailyHigh := math.max(nz(dailyHigh), high) dailyLow := math.min(nz(dailyLow), low)if (showPD) var line l_pdh = na, var line l_pdl = na, var label lbl_pdh = na, var label lbl_pdl = na if barstate.islast lbl_pdh := label.new(bar_index + 8, PDH, "PDH", style=label.style_label_left, textcolor=color.white) lbl_pdl := label.new(bar_index + 8, PDL, "PDL", style=label.style_label_left, textcolor=color.white) l_pdh := line.new(bar_index - 1, PDH, bar_index + 8, PDH, extend=extend.left, color=color.blue) l_pdl := line.new(bar_index - 1, PDL, bar_index + 8, PDL, extend=extend.left, color=color.blue) line.delete(l_pdh[1]) line.delete(l_pdl[1]) label.delete(lbl_pdh[1]) label.delete(lbl_pdl[1])// functionsstructureLowIndexPointer(len) => float minValue = ta.highest(high, inputRange)[1] int minIndex = bar_index for i = 1 to len if low[i] < minValue minValue := low[i] minIndex := bar_index[i] minIndexwithinBullishBlock(position) => bool result = false if (array.size(longBoxes) > 0) for i = (array.size(longBoxes) - 1) to 0 box = array.get(longBoxes, i) top = box.get_top(box) bottom = box.get_bottom(box) if (position < top and position > bottom) result := true result// get the lowest point in the rangestructureLow := ta.lowest(low, inputRange)[1]structureLowIndex := structureLowIndexPointer(inputRange)// bearish break of structureif (ta.crossunder(bearishBreakerSource, structureLow)) if ((bar_index - lastUpIndex) < 1000) array.push(shortBoxStart, bar_index) array.push(shortBoxState, 0) array.push(shortBoxes, box.new(left=lastUpIndex, top=lastHigh, bottom=lastUpLow, right=lastUpIndex, bgcolor=bearishOBColour, border_color=color.rgb(207, 203, 202, 100), extend=extend.right)) if (showBearishBOS) array.push(bosLines, line.new(structureLowIndex, structureLow, bar_index, structureLow, color=color.red, style=line.style_solid, width=2)) BosCandle := true CandleColourMode := 0 lastShortIndex := lastUpIndex bearishAlert := true// bullish break of structure - FIXED VERSIONif (array.size(shortBoxes) > 0) i = array.size(shortBoxes) - 1 while i >= 0 if i < array.size(shortBoxes) sbox = array.get(shortBoxes, i) lstart = array.get(shortBoxStart, i) lstate = array.get(shortBoxState, i) top = box.get_top(sbox) left = box.get_left(sbox) bottom = box.get_bottom(sbox) // re-test 확인 if (high > bottom and low < bottom and bar_index > lstart and lstate == 0 and useMitigatedBlocks) sbox.set_bgcolor(mitigatedOBColour) shortRetestCandle := true array.set(shortBoxState, i, 1) // Bullish BOS 신호 - barstate.islast 제거 if (bullishBreakerSource > top) // Bullish BOS Signal 표시 - 리플레이 호환 if showBullishBOS label.new(bar_index, low, "▲BOS", color=bullishSignalColor, style=label.style_label_up, textcolor=color.white, size=size.normal) bullishAlert := true // Bullish Order Block 생성 if ((bar_index - lastDownIndex) < 1000 and bar_index > lastLongIndex) array.push(longBoxStart, bar_index + 1) array.push(longBoxState, 0) array.push(longBoxes, box.new(left=lastDownIndex, top=lastDown, bottom=lastLow, right=lastDownIndex, bgcolor=bullishOBColour, border_color=color.rgb(207, 203, 202, 100), extend=extend.right)) if (showBullishBOS) array.push(bosLines, line.new(left, top, bar_index, top, color=color.green, style=line.style_solid, width=1)) BosCandle := true CandleColourMode := 1 lastLongIndex := bar_index lastBullBreakLow := low // Bearish 박스 제거 box.delete(sbox) array.remove(shortBoxState, i) array.remove(shortBoxes, i) array.remove(shortBoxStart, i) i := i - 1// 알람 조건alertcondition(bullishAlert, "Bullish break of structure", 'bullish break of structure was triggered')alertcondition(bearishAlert, "Bearish break of structure", 'bearish break of structure was triggered')alertcondition(shortRetestCandle, "Bearish order block re-tested", 'bearish order block has been re-tested')alertcondition(longRetestCandle, "Bullish order block re-tested", 'bullish order block has been re-tested')// update bullish order blocksif (array.size(longBoxes) > 0) i = array.size(longBoxes) - 1 while i >= 0 if i < array.size(longBoxes) lbox = array.get(longBoxes, i) lstart = array.get(longBoxStart, i) lstate = array.get(longBoxState, i) bottom = box.get_bottom(lbox) top = box.get_top(lbox) boxLeft = box.get_left(lbox) if (low <= top and high > top and bar_index > lstart and lstate == 0) if (useMitigatedBlocks) lbox.set_bgcolor(mitigatedOBColour) longRetestCandle := true array.set(longBoxState, i, 1) if (close < bottom) array.remove(longBoxStart, i) array.remove(longBoxState, i) array.remove(longBoxes, i) box.delete(lbox) i := i - 1// 이전 신호 레이블 정리 (성능 최적화)if barstate.islast and array.size(bullishSignals) > 0 for i = 0 to array.size(bullishSignals) - 1 if i < array.size(bullishSignals) label.delete(array.get(bullishSignals, i))// candle colouringCandleColour = CandleColourMode == 1 ? bullishTrendColor : bearishTrendColourCandleColour := BosCandle and showBreakerCandles ? BOSCandleColour : CandleColourCandleColour := shortRetestCandle and showRetestCandles ? shortRetestCandleColour : CandleColourCandleColour := longRetestCandle and showRetestCandles ? longRetestCandleColour : CandleColourbarcolor(showTrendColours ? CandleColour : na)barcolor(showBreakerCandles and BosCandle ? CandleColour : na)// record last up and down candlesif (close < open) lastDown := high lastDownIndex := bar_index lastLow := lowif (close > open) lastUp := close lastUpIndex := bar_index lastUpOpen := open lastUpLow := low lastHigh := high// update last high/lowlastHigh := high > lastHigh ? high : lastHighlastLow := low < lastLow ? low : lastLow// 디버깅용 플롯 (필요시 주석 해제)// plotshape(bullishAlert, "Bullish Alert", shape.triangleup, location.belowbar, color.green, size=size.small)// plotshape(array.size(shortBoxes) > 0, "Short Boxes Exist", shape.circle, location.abovebar, color.red, size=size.tiny)여기서 다른 것들 제외하구, 일봉상 'bos'신호가 나오는 종목에 대한 검색식을 구현시켜주시면 감사드리겠습니다 (__) 감사합니다 늘 (__)
프로필 이미지
사공하늘
2025-11-07
680
글번호 227767
검색