커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

예스트레이더 종목검색으로 요청합니다^^*

(조건) 주가상한가 이후 캔들이 조정하여 마이너스(-)5%(상단)에서 마이너스(-)10%(하단)밴드라고 할때 캔들이 마이너스(-)5%상단하고 마이너스(-)10%하단사이를 터치 또는 관통하는 양봉 캔들을 찾고 싶습니다.. 조건은 30분봉 입니다... 부탁드립니다..
프로필 이미지
서민순
2025-08-10
174
글번호 193116
종목검색
답변완료

문의드립니다.

안녕하세요 아래 TS에서 사용하는 함수를 예스에서 적용가능하게 부탁드립니다 . $ATRChander라는 함수입니다 . Inputs: Multi(numeric), period(numeric); Var: loss(0), trail(0); loss = AvgTrueRange(Period) * Multi; Value1 = $ATRChandelier(Multi,period)[1]; if C > Value1 then trail = Close[0] - loss; if C < Value1 then trail = Close[0] + loss; if C > Value1 AND C[1] > Value1 then trail = MaxList(Value1,Close[0] - loss); if C < Value1 AND C[1] < Value1 then trail = MinList(Value1, Close[0] + loss); $ATRChandelier=trail;
프로필 이미지
소드노
2025-08-10
168
글번호 193115
사용자 함수
답변완료

백테스트에서 미국 서머타임 적용하는 좋은 방법 추천해주세요.

미국 CME 선물시장의 주간 개장시간을 기준을 잡고 싶습니다. 그런데 미국은 서머타임 때문에 한국시간 22:30 일 때도 있고, 23:30 일때도 있습니다. 올 해 2025년을 위한 코드에는 2025-03-09 ~ 2025-11-02 사이에 있으면 서머타임을 적용하는 식으로 날짜를 하드코딩하면 되겠습니다만, 과거 백테스트를 위해서는 어떻게 하는게 효율적일까요? 미국 서머타임은 3월 두 번째 일요일 오전 2시, 그리고 11월 첫 일요일 오전 2시에 변한다는 규칙이 있습니다. 이 규칙을 사용하려면 주어진 년도의 3월 2번째 일요일의 날짜와 11월 첫번째 일요일 날짜를 구해야 합니다. 이런 함수가 예스랭귀지에 있나요? 혹시 시간을 그 종목의 현지 시간(예를 들면 미국 뉴옥시간)으로 설정해서 예스트레이더가 작동되게 하는 방법도 있을까요? 감사합니다.
프로필 이미지
알이랑
2025-08-10
168
글번호 193114
시스템
답변완료

예스로 부탁합니다.

트뷰에서 알게된 지표인데 예스 수식으로 부탁합니다. 미리감사드립니다. //version=5 //author: mladen //rebound arrows and TMA angle caution: Ale //rewritten from MQL5 to Pine: Brylator indicator("TMA Centered Bands Indicator", "TMA v1.0 Gaga", overlay = true, max_lines_count = 500, max_labels_count = 500) //INPUTS var GRP1 = "Parameters" HalfLength = input.int(44, "Centered TMA half period", group = GRP1) string PriceType = input.string("Weighted", "Price to use", options = ["Close", "Open", "High", "Low", "Median", "Typical", "Weighted", "Average"], group = GRP1) AtrPeriod = input.int(120, "Average true range period", group = GRP1) AtrMultiplier = input.float(2, "Average true range multiplier", group = GRP1) TMAangle = input.int(4, "Centered TMA angle caution", group = GRP1) // APPEARANCE (&#3648;&#3614;&#3636;&#3656;&#3617;&#3605;&#3633;&#3623;&#3648;&#3621;&#3639;&#3629;&#3585;&#3586;&#3609;&#3634;&#3604;&#3649;&#3621;&#3632;&#3586;&#3657;&#3629;&#3588;&#3623;&#3634;&#3617; BUY/SELL) var GRP4 = "Appearance" arrowSizeOpt = input.string("Large", "Arrow size", options = ["Tiny", "Small", "Normal", "Large", "Huge"], group = GRP4) showBuySellText = input.bool(true, "Show BUY/SELL text on arrows", group = GRP4) buyText = input.string("BUY", "Buy text", inline = "txt", group = GRP4) sellText = input.string("SELL", "Sell text", inline = "txt", group = GRP4) // map &#3586;&#3609;&#3634;&#3604; arrowSize = switch arrowSizeOpt "Tiny" => size.tiny "Small" => size.small "Normal" => size.normal "Large" => size.large => size.huge //VARIABLES float tmac = na float tmau = na float tmad = na var float pastTmac = na //from the previous candle var float pastTmau = na var float pastTmad = na float tmau_temp = na //before looping float tmac_temp = na float tmad_temp = na float point = syminfo.pointvalue //NEEDS MORE TESTS bool last = false //checks if a loop is needed var string alertSignal = "EMPTY" //needed for alarms to avoid repetition //COLORS var GRP2 = "Colors" var color colorBuffer = na color colorDOWN = input.color(color.new(color.red, 0), "Bear", inline = "5", group = GRP2) color colorUP = input.color(color.new(color.green, 0), "Bull", inline = "5", group = GRP2) color colorBands = input.color(color.new(#b2b5be, 0), "Bands", inline = "5", group = GRP2) bool cautionInput = input.bool(true, "Caution label", inline = "6", group = GRP2) //ALERTS var GRP3 = "Alerts (Needs to create alert manually after every change)" bool crossUpInput = input.bool(false, "Crossing up", inline = "7", group = GRP3) bool crossDownInput = input.bool(false, "Crossing down", inline = "7", group = GRP3) bool comingBackInput = input.bool(false, "Coming back", inline = "7", group = GRP3) bool onArrowDownInput = input.bool(false, "On arrow down", inline = "8", group = GRP3) bool onArrowUpInput = input.bool(false, "On arrow up", inline = "8", group = GRP3) //CLEAR LINES a_allLines = line.all if array.size(a_allLines) > 0 for p = 0 to array.size(a_allLines) - 1 line.delete(array.get(a_allLines, p)) //GET PRICE Price(x) => float price = switch PriceType "Close" => close[x] "Open" => open[x] "High" => high[x] "Low" => low[x] "Median" => (high[x] + low[x]) / 2 "Typical" => (high[x] + low[x] + close[x]) / 3 "Weighted" => (high[x] + low[x] + close[x] + close[x]) / 4 "Average" => (high[x] + low[x] + close[x] + open[x])/ 4 price //MAIN for i = HalfLength to 0 //ATR atr = 0.0 for j = 0 to AtrPeriod - 1 atr += math.max(high[i + j + 10], close[i + j + 11]) - math.min(low[i + j + 10], close[i + j + 11]) atr /= AtrPeriod //BANDS sum = (HalfLength + 1) * Price(i) sumw = (HalfLength + 1) k = HalfLength for j = 1 to HalfLength sum += k * Price(i + j) sumw += k if (j <= i) sum += k * Price(i - j) sumw += k k -= 1 tmac := sum/sumw tmau := tmac+AtrMultiplier*atr tmad := tmac-AtrMultiplier*atr //ALERTS if i == 0 //Only on a real candle if (high > tmau and alertSignal != "UP") //crossing up band if crossUpInput == true //checks if activated alert("Crossing up Band") //calling alert alertSignal := "UP" //to avoid repeating else if (low < tmad and alertSignal != "DOWN") //crossing down band if crossDownInput == true alert("Crossing down Band") alertSignal := "DOWN" else if (alertSignal == "DOWN" and high >= tmad and alertSignal != "EMPTY") //back from the down band if comingBackInput == true alert("Coming back") alertSignal := "EMPTY" else if (alertSignal == "UP" and low <= tmau and alertSignal != "EMPTY") //back from the up band if comingBackInput == true alert("Coming back") alertSignal := "EMPTY" //CHANGE TREND COLOR if pastTmac != 0.0 if tmac > pastTmac colorBuffer := colorUP if tmac < pastTmac colorBuffer := colorDOWN //SIGNALS reboundD = 0.0 reboundU = 0.0 caution = 0.0 if pastTmac != 0.0 if (high[i + 1] > pastTmau and close[i + 1] > open[i + 1] and close < open) reboundD := high + AtrMultiplier * atr / 2 if (tmac - pastTmac > TMAangle * point) caution := reboundD + 10 * point if (low[i + 1] < pastTmad and close[i + 1] < open[i + 1] and close > open) reboundU := low - AtrMultiplier * atr / 2 if (pastTmac - tmac > TMAangle * point) caution := reboundU - 10 * point //LAST REAL if barstate.islast and i == HalfLength last := true tmau_temp := tmau tmac_temp := tmac tmad_temp := tmad //DRAW HANDICAPPED BANDS if barstate.islast and i < HalfLength line.new(bar_index - (i + 1), pastTmau, bar_index - (i), tmau, width = 2, style = line.style_dotted, color = colorBands) line.new(bar_index - (i + 1), pastTmac, bar_index - (i), tmac, width = 2, style = line.style_dotted, color = colorBuffer) line.new(bar_index - (i + 1), pastTmad, bar_index - (i), tmad, width = 2, style = line.style_dotted, color = colorBands) //DRAW SIGNALS (&#3621;&#3641;&#3585;&#3624;&#3619;&#3651;&#3627;&#3597;&#3656;&#3586;&#3638;&#3657;&#3609; + &#3617;&#3637;&#3588;&#3635;&#3623;&#3656;&#3634; SELL/BUY) if reboundD != 0 txtDown = showBuySellText ? "▼₩n" + sellText : "▼" label.new(bar_index - (i), reboundD, txtDown, color = na, style = label.style_label_center, textcolor = colorDOWN, size = arrowSize, textalign = text.align_center) if i == 0 and onArrowDownInput == true //alert alert("Down arrow") if caution != 0 and cautionInput == true label.new(bar_index - (i), reboundD, color = colorUP, style = label.style_xcross, size = size.tiny, textcolor = na) if reboundU != 0 txtUp = showBuySellText ? "▲₩n" + buyText : "▲" label.new(bar_index - (i), reboundU, txtUp, color = na, style = label.style_label_center, textcolor = colorUP, size = arrowSize, textalign = text.align_center) if i == 0 and onArrowUpInput == true //alert alert("UP arrow") if caution != 0 and cautionInput == true label.new(bar_index - (i), reboundU, color = colorDOWN, style = label.style_xcross, size = size.tiny, textcolor = na) //SAVE HISTORY pastTmac := tmac pastTmau := tmau pastTmad := tmad //LOOP IS ONLY FOR HANDICAPPED if barstate.islast != true break //DRAW REAL BANDS plot(last ? tmau_temp : tmau, title = "TMA Up", color = colorBands, linewidth=1, style = plot.style_line, offset = -HalfLength) plot(last ? tmac_temp : tmac, title = "TMA Mid", color = colorBuffer, linewidth=1, style = plot.style_line, offset = -HalfLength) plot(last ? tmad_temp : tmad, title = "TMA Down", color = colorBands, linewidth=1, style = plot.style_line, offset = -HalfLength)
프로필 이미지
as8282
2025-08-10
238
글번호 193113
지표
답변완료

종목검색식 부탁드립니다

1. 일봉기준 차트에서, 주봉 20 이평선 (단순) 을 표시하여 (그어서) 일봉 캔들이 양봉으로 주봉 20이평선을 몸통으로 관통(종가로 돌파)하는 종목검색식 부탁드립니다.
프로필 이미지
일지매7
2025-08-10
193
글번호 193112
종목검색
답변완료

분봉상거래대금

수고 많으십니다. 분봉상 1분봉상 거래대금이 1억원 이상 20봉 영봉까지 아예 없었던 종목을 검색하고 싶습니다. input을 사용하여 20(기간)을 조정 가능하게 부탁드립니다. 감사합니다.
프로필 이미지
제시립뭐
2025-08-10
189
글번호 193111
종목검색
답변완료

수식전환

수고많으십니다 아래 타사수식 예스로 전환 부탁드립니다 분봉챠트에서 cnt=countsince (date==date(1)&& date==date(2)&& date!=date(3),C>Dayopen()&& C(1)<Dayopen()); S=countsince(date!=date(1),C<Dayopen()); cnt==1&&cnt(1)==0&&S>1
프로필 이미지
트라이
2025-08-10
192
글번호 193110
종목검색
답변완료

지표 문의

안녕하세요, 아래 수식 요청 드립니다. ;;전일 범위를 기준으로 계산한 두 레벨(Y1=14.6%, Y8=85.4%)에 “고정 수평 라인”을 생성해 현재가가 라이을 크로스 하기 전에는 라인을 유지(여러 날 동안 유지도 가능) 라인을 크로스 하면 즉시 삭제해 주는 지표 부탁 드립니다. 기준값 전일 고가 YH = DayHigh(1) 전일 저가 YL = DayLow(1) 전일 범위 R = YH - YL Y1 = YL + R×0.146 (하단) Y8 = YL + R×0.854 (상단) 혹시 당일의 시가가 전일의 고가/저가 갭으로 돌파시에도 Y8,Y1 을 그렸으면 합니다. 라인은 여러 개 누적 가능하고 현재가가 크로스 하기 전까지는 유지되어야 하고요, 라인 오른쪽 상단에 가격도 표시 되었으면 합니다. 추가로 한시간 봉의 시가가 시가 저가 혹은 시가 고가인지를 매 시간 3분에 체크하여 시가 저가/고가 일 경우 라인을 그리고, 이 라인이 현재가가 크로스 하기 전까지 유지 되었으면 합니다.
프로필 이미지
나뽀리
2025-08-10
199
글번호 193109
지표
답변완료

종목검색식 부탁드립니다

X1 = V(1) >= V(2) *5; X2 = V <= V(1) * 0.25; X3 = (O/AVG(C,5) * 100) >= 90; X4 = (O/AVG(C,5) * 100) <= 110; X5 = (C(1)/O(1)-1) * 100 >=5; X1 AND X2 AND X3 AND X4 AND X5
프로필 이미지
밤의선수
2025-08-09
164
글번호 193108
종목검색
답변완료

검색식 부탁 드려요

아래 수식을 참고하여 , 1. 수식4)가 전일보다 상승한 종목 검색식 부탁드립니다. 2. 수식5)가 전일보다 상승한 종목 검색식 부탁드려요 3. 수식4) 가 수식5)를 골든크로스 할때 종목검색식 부탁드립니다 4. 수식4) 가 수식5) 의 위에 있을때 종목검색식 부탁드려요. --------아래----- (수식1) tenkan=If(Sum(거래량, ConvPeriod) > 0, Sum(((고가 + 저가) / 2) * 거래량, ConvPeriod) / Sum(거래량, ConvPeriod), (Max(고가, ConvPeriod) + Min(저가, ConvPeriod)) / 2); (수식2) kijun = If(Sum(거래량, BasePeriod) > 0, Sum(((고가 + 저가) / 2) * 거래량, BasePeriod) / Sum(거래량, BasePeriod), (Max(고가, BasePeriod) + Min(저가, BasePeriod)) / 2); (수식3) shift(close,-25) (수식4) spanA = (tenkan + kijun) / 2; //SHIFT(spanA,25) (수식5) spanB = tenkan=If(Sum(거래량, SpanBPeriod) > 0, Sum(((고가 + 저가) / 2) * 거래량, SpanBPeriod) / Sum(거래량, SpanBPeriod), (Max(고가, SpanBPeriod) + Min(저가, SpanBPeriod)) / 2); //SHIFT(spanB,25) - 지표조건설정 ConvPeriod : 9 BasePeriod : 26 SpanBPeriod : 52 Shift : 26
프로필 이미지
일지매7
2025-08-11
195
글번호 193107
종목검색