커뮤니티

예스랭귀지 Q&A

글쓰기

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

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

수식변환 문의

수고하십니다. 트레이딩뷰지표인 'HIGH AND LOW Optimized Trend Tracker'를 예스로 변환부탁 드립니다. ================================================ 'HIGH AND LOW Optimized Trend Tracker' //@version=5 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // &#169; KivancOzbilgic //created by: @Anil_Ozeksi //developer: ANIL &#214;ZEK&#350;&#304; //author: @kivancozbilgic indicator('HIGH AND LOW Optimized Trend Tracker', 'HL OTT', overlay=true) length = input.int(2, 'OTT Period', minval=1) percent = input.float(0.6, 'OTT Optimization Coeff', step=0.1, minval=0) hllength = input.int(10, 'Highest and Lowest Length', minval=1) src = ta.highest(high, hllength) srcl = ta.lowest(low, hllength) highlighting = input(title='Highlighter On/Off ?', defval=true) mav = input.string(title='Moving Average Type', defval='VAR', options=['SMA', 'EMA', 'WMA', 'DEMA', 'TMA', 'VAR', 'WWMA', 'ZLEMA', 'TSF', 'HULL']) Var_Func(src, length) => valpha = 2 / (length + 1) vud1 = src > src[1] ? src - src[1] : 0 vdd1 = src < src[1] ? src[1] - src : 0 vUD = math.sum(vud1, 9) vDD = math.sum(vdd1, 9) vCMO = nz((vUD - vDD) / (vUD + vDD)) VAR = 0.0 VAR := nz(valpha * math.abs(vCMO) * src) + (1 - valpha * math.abs(vCMO)) * nz(VAR[1]) VAR VAR = Var_Func(src, length) DEMA = 2 * ta.ema(src, length) - ta.ema(ta.ema(src, length), length) Wwma_Func(src, length) => wwalpha = 1 / length WWMA = 0.0 WWMA := wwalpha * src + (1 - wwalpha) * nz(WWMA[1]) WWMA WWMA = Wwma_Func(src, length) Zlema_Func(src, length) => zxLag = length / 2 == math.round(length / 2) ? length / 2 : (length - 1) / 2 zxEMAData = src + src - src[zxLag] ZLEMA = ta.ema(zxEMAData, length) ZLEMA ZLEMA = Zlema_Func(src, length) Tsf_Func(src, length) => lrc = ta.linreg(src, length, 0) lrc1 = ta.linreg(src, length, 1) lrs = lrc - lrc1 TSF = ta.linreg(src, length, 0) + lrs TSF TSF = Tsf_Func(src, length) HMA = ta.wma(2 * ta.wma(src, length / 2) - ta.wma(src, length), math.round(math.sqrt(length))) Var_Funcl(srcl, length) => valphal = 2 / (length + 1) vud1l = srcl > srcl[1] ? srcl - srcl[1] : 0 vdd1l = srcl < srcl[1] ? srcl[1] - srcl : 0 vUDl = math.sum(vud1l, 9) vDDl = math.sum(vdd1l, 9) vCMOl = nz((vUDl - vDDl) / (vUDl + vDDl)) VARl = 0.0 VARl := nz(valphal * math.abs(vCMOl) * srcl) + (1 - valphal * math.abs(vCMOl)) * nz(VARl[1]) VARl VARl = Var_Funcl(srcl, length) DEMAl = 2 * ta.ema(srcl, length) - ta.ema(ta.ema(srcl, length), length) Wwma_Funcl(srcl, length) => wwalphal = 1 / length WWMAl = 0.0 WWMAl := wwalphal * srcl + (1 - wwalphal) * nz(WWMAl[1]) WWMAl WWMAl = Wwma_Funcl(srcl, length) Zlema_Funcl(srcl, length) => zxLagl = length / 2 == math.round(length / 2) ? length / 2 : (length - 1) / 2 zxEMADatal = srcl + srcl - srcl[zxLagl] ZLEMAl = ta.ema(zxEMADatal, length) ZLEMAl ZLEMAl = Zlema_Funcl(srcl, length) Tsf_Funcl(srcl, length) => lrcl = ta.linreg(srcl, length, 0) lrc1l = ta.linreg(srcl, length, 1) lrsl = lrcl - lrc1l TSFl = ta.linreg(srcl, length, 0) + lrsl TSFl TSFl = Tsf_Funcl(srcl, length) HMAl = ta.wma(2 * ta.wma(srcl, length / 2) - ta.wma(srcl, length), math.round(math.sqrt(length))) getMA(src, length) => ma = 0.0 if mav == 'SMA' ma := ta.sma(src, length) ma if mav == 'EMA' ma := ta.ema(src, length) ma if mav == 'WMA' ma := ta.wma(src, length) ma if mav == 'DEMA' ma := DEMA ma if mav == 'TMA' ma := ta.sma(ta.sma(src, math.ceil(length / 2)), math.floor(length / 2) + 1) ma if mav == 'VAR' ma := VAR ma if mav == 'WWMA' ma := WWMA ma if mav == 'ZLEMA' ma := ZLEMA ma if mav == 'TSF' ma := TSF ma if mav == 'HULL' ma := HMA ma ma getMAl(srcl, length) => mal = 0.0 if mav == 'SMA' mal := ta.sma(srcl, length) mal if mav == 'EMA' mal := ta.ema(srcl, length) mal if mav == 'WMA' mal := ta.wma(srcl, length) mal if mav == 'DEMA' mal := DEMAl mal if mav == 'TMA' mal := ta.sma(ta.sma(srcl, math.ceil(length / 2)), math.floor(length / 2) + 1) mal if mav == 'VAR' mal := VARl mal if mav == 'WWMA' mal := WWMAl mal if mav == 'ZLEMA' mal := ZLEMAl mal if mav == 'TSF' mal := TSFl mal if mav == 'HULL' mal := HMAl mal mal MAvg = getMA(src, length) fark = MAvg * percent * 0.01 longStop = MAvg - fark longStopPrev = nz(longStop[1], longStop) longStop := MAvg > longStopPrev ? math.max(longStop, longStopPrev) : longStop shortStop = MAvg + fark shortStopPrev = nz(shortStop[1], shortStop) shortStop := MAvg < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop dir = 1 dir := nz(dir[1], dir) dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir MT = dir == 1 ? longStop : shortStop HOTT = MAvg > MT ? MT * (200 + percent) / 200 : MT * (200 - percent) / 200 HOTTC = color.blue MAvgl = getMAl(srcl, length) farkl = MAvgl * percent * 0.01 longStopl = MAvgl - farkl longStopPrevl = nz(longStopl[1], longStopl) longStopl := MAvgl > longStopPrevl ? math.max(longStopl, longStopPrevl) : longStopl shortStopl = MAvgl + farkl shortStopPrevl = nz(shortStopl[1], shortStopl) shortStopl := MAvgl < shortStopPrevl ? math.min(shortStopl, shortStopPrevl) : shortStopl dirl = 1 dirl := nz(dirl[1], dirl) dirl := dirl == -1 and MAvgl > shortStopPrevl ? 1 : dirl == 1 and MAvgl < longStopPrevl ? -1 : dirl MTl = dirl == 1 ? longStopl : shortStopl LOTT = MAvgl > MTl ? MTl * (200 + percent) / 200 : MTl * (200 - percent) / 200 LOTTC = color.red HOTTLine = plot(nz(HOTT[2]), title='HOTT', color=color.new(HOTTC, 0), linewidth=2, style=plot.style_line) LOTTLine = plot(nz(LOTT[2]), title='LOTT', color=color.new(LOTTC, 0), linewidth=2, style=plot.style_line) FillColor = highlighting ? color.new(#9915FF, 80) : na fill(HOTTLine, LOTTLine, title='Highligter', color=FillColor) color1 = close > HOTT[2] ? #00FFFF : close < LOTT[2] ? #FF00FF : na barcolor(color1) alertcondition(ta.crossover(close, HOTT[2]), title='Price Crossover Alarm', message='PRICE OVER HOTT - BUY SIGNAL!') alertcondition(ta.crossunder(close, LOTT[2]), title='Price Crossunder Alarm', message='PRICE UNDER LOTT - SELL SIGNAL!')
프로필 이미지
부호장자
2024-03-30
1274
글번호 178098
지표
답변완료

수식 부탁드립니다

안녕하세요! 수식을 좀 부탁드립니다. 저는 시간 주기가 다른 (분 또는 틱챠트) 두 봉챠트를 겹쳐서 보는 수식을 만들고 싶습니다. (예: 본챠트 1분봉 에 10분봉 챠트를 가져와서 겹쳐서 보는...) 봉의 색상은 제가 수정할 수 있게 부탁드립니다.
프로필 이미지
qha71
2024-03-30
932
글번호 178097
지표
답변완료

종목검색부탁드립니다

안녕하세요 5분봉입니다 A 하단라인 대금S=sum(V*C); VV=sum(V); 대금20=대금S-대금S(기간); VV20=VV-VV(기간); 대금20/VV20-D1*stdev(C, 기간); B 중심라인 대금S=sum(V*C); VV=sum(V); 대금20=대금S-대금S(기간); VV20=VV-VV(기간); 대금20/VV20; 가중기간 = 25일 선행스팬1 = shift((highest(high,shortPeriod)+lowest(low,shortPeriod)+highest(high,midPeriod)+lowest(low,midPeriod))/4,midPeriod-1); 전환선 = (highest(high,shortPeriod)+lowest(low,shortPeriod))/2; 가 = 3봉전종가가 DayLow 나 = 2봉전 종가가 A하단라인 안으로 진입 다 = 1봉전 ma(ma(c,기간25/2,가중)*2-ma(c,기간25,가중),SQRT(기간25),가중); 가중 라인안으로 진입 (종가C > 25일가중라인) 라 = 0봉전 가중라인안에서 1봉전값과비교가 같거나 크다 =< 마 = (OR) 선행스팬1 [양운] 바 = (OR) C(가격1일선라인) > 전환선 (캔들이 전환선 라인 위로)1봉전 =< 0봉전 사 = (OR) 0봉전 전환선> 기준선 아 = (OR) 0봉전 신고가 5/8/9/10/15 마 = and (기준선,전환선)1봉전 =< 0봉전 바 = [OR] CrossUp(StochasticsSlow(Period1,Period2), eavg(StochasticsSlow(Period1,Period2),Period3)); [Period1,2,3 = 5,3,3] 감사합니다
프로필 이미지
박셰프
2024-03-31
842
글번호 178096
종목검색
답변완료

문의드립니다

전월의 최고가에서 금월의 최고가까지 연결되는 라인 전월의 최저가에서 금월의 최저가까지 연결되는 라인 ma(DayHigh,accumN(iff(stime==153500,dayindex()-highest(iff(dayHigh() 이건 전일의 고가에서 금일의 고가로 연결하는 라인 수식중 일부인데 이런식으로 전월 고저가에서 금월 고저가로 연결하는 수식을 부탁드립니다 감사합니다
프로필 이미지
러블리
2024-03-30
740
글번호 178095
지표
답변완료

부탁드립니다

안녕하세요 항상 많은도움에 감사드립니다. 1분봉 또는 5분봉 차트에서 변수지정(30분봉, 60분봉, 240분봉 등)한 고가, 저가의 중심값울 선으로 표현하고 싶습니다. 다만... - 과거선 표시없이 직전봉과 현재봉의 중심(값)선만 우측으로 표시 - 변수지정한 봉이 양봉이면 중심선을 레드선, 음봉이면 중심선을 블루선으로 표시 미리 감사드립니다.
프로필 이미지
광팔
2024-03-30
775
글번호 178094
지표

한칼부르스 님에 의해서 삭제되었습니다.

프로필 이미지
한칼부르스
2024-04-01
27
글번호 178093
종목검색
답변완료

문의

진입필터를 작성해 보았는데 필터가 작동하지 않습니다. 진입하기 전에 이동평균선이 위로,아래로,위로 움직이면서 변동성이 낮아질 때는 진입을 제지하고 싶습니다. var1=ma(c,5); var2=ma(c,6); var3=ma(c,7); cond1=crossup(c,var1) cond2=crossdown(c,var2); cond3=crossup(c,var3); a) if !(cond1)+!(cond2)+!(cond3) and 진입수식 then buy(); b) if !(cond1+cond2+cond3) and 진입수식 then buy(); a나 b는 아닌 것 같아서 수정을 부탁 드립니다. 항상 고맙습니다.
프로필 이미지
목마와숙녀
2024-03-30
811
글번호 178092
시스템
답변완료

검색식 부탁드립니다.

안녕하세요^^ 안녕하세요. 아래의 기술적 지표는 일, 주 월봉차트에 다 표시되는 걸로 알고 있는데요.. 1. 이 지표의 라인을 즉 주,월봉라인을 일봉차트에 다 표시할 수 있는 지표설정과 2. 그리고 일봉지표라인이 주봉지표라인을, 일봉지표라인이 월봉지표라인을, 주봉지표라인 이 월봉지표라인을 돌파할 때 종목 검색을 부탁드립니다. ValueWhen(1,MACD(12,26) >= 0 and Crossup(C,SAR(0.02,0.2)) and C >= C(1)*1.03 and C > O, (C+O)/2) 3. 그리고 만들어주신 아래의 수식도 차트에 표시할 수 있도록 지표설정 좀 부탁드리겠습니다. var : MM(0),KK(0),MO(0),mx(0); var : M1(0),M2(0),M3(0),M4(0),M5(0),M6(0); var : M7(0),M8(0),M9(0),M10(0),M11(0),M12(0); MM = floor(date/100); if MM != MM[1] Then { MO = O; M1 = KK[1]; M2 = M1[1]; M3 = M2[1]; M4 = M3[1]; M5 = M4[1]; M6 = M5[1]; M7 = M6[1]; M8 = M7[1]; M9 = M8[1]; M10 = M9[1]; M11 = M10[1]; M12 = M11[1]; mx = Max(M1, M2, M3, M4, M5,M6, M7, M8, M9, M10, M11, M12); } KK = iff(MO > C, MO, 0); if mx > 0 and CrossUp(C,mx) Then Find(1);
프로필 이미지
한칼부르스
2024-04-01
1157
글번호 178091
종목검색
답변완료

안녕하세요

1. 매수(매도) 신호가 나온 캔들의 중간값을 넘어가면 매수(매도)청산 2. 매수(매도) 신호가 발생한 후 date2에서 음봉이 3개 연속 완성되면 매수(매도)청산 하는 수식 플롯을 대략적으로 부탁드립니다 ^^ 3. atr추적청산을 이용중인데요 atr추적손절만 하고 청산은 장 마감에 하려고 합니다 현재 아래 수식을 사용중인데요 if MarketPosition <> 0 Then { ExitLong("el_추적atr", AtStop, poshigh-ATr(20)*ATrmult); ExitShort("es_추적atr", AtStop, poslow+ATr(20)*ATrmult); } 매수(매도)들어갔으면 매수(매도)가보다 아래(위)에서 손절할때만 atr추적손절을 단행하고 싶습니다... 감사합니다 ^^
프로필 이미지
돈을잃자
2024-03-31
880
글번호 178090
시스템