커뮤니티

도움 요청 드립니다.

프로필 이미지
부똘이
2023-04-20 09:35:45
889
글번호 168336
답변완료
아래 지표를 트레이딩뷰에서 찾았는데요, 예트로 변환하고 싶어서 말씀올립니다. 항상 감사드립니다~ src = input(close, title ="Source") len = input(14, title ="Length") oblevel = input(70, title ="OB Level", maxval = 99, minval = 1) oslevel = input(30, title ="OS Level", maxval = 99, minval = 1) bullz = input(60, title ="Bull Zone Level", maxval = 99, minval = 1) bearz = input(40, title ="Bear Zone Level", maxval = 99, minval = 1) fillbtw = input(true, title ="Fill between OB and OS lines") showbbzone = input(false, title ="Show Bull/Bear Zones") drawmidl = input(false, title ="Draw Midline") emasmt = input(1, title ="EMA Smoothing", minval = 1) my_rsi(x, len) => u = max(x - x[1], 0) d = max(x[1] - x, 0) sumu = 0.0, sumd = 0.0 sumu := (u + (len - 1) * nz(sumu[1])) / len sumd := (d + (len - 1) * nz(sumd[1])) / len rs = sumu / sumd res = 100 - 100 / (1 + rs) [res, sumu, sumd] [Rsi, sumu, sumd] = my_rsi(close, len) diffupob = (sumd * ((100 / (100 - oblevel)) -1 )) * len - (len - 1) * nz(sumu[1]) diffdnob = (sumu / ((100 / (100 - oblevel)) -1 )) * len - (len - 1) * nz(sumd[1]) diffupos = (sumd * ((100 / (100 - oslevel)) -1 )) * len - (len - 1) * nz(sumu[1]) diffdnos = (sumu / ((100 / (100 - oslevel)) -1 )) * len - (len - 1) * nz(sumd[1]) oblev = Rsi <= oblevel ? close + diffupob : close - diffdnob oslev = Rsi <= oslevel ? close + diffupos : close - diffdnos oblev := ema(oblev, emasmt) oslev := ema(oslev, emasmt) obl = plot(oblev, color = color.red) osl = plot(oslev, color = color.green) fill(obl, osl, color = fillbtw ? color.new(color.gray, 89) : color.new(color.white, 100)) plot((oblev + oslev) / 2, color = drawmidl ? color.gray : color.new(color.white, 100)) //Bull/Bear Zones diffupblzn= (sumd * ((100 / (100 - bullz)) -1 )) * len - (len - 1) * nz(sumu[1]) diffdnblzn = (sumu / ((100 / (100 - bullz)) -1 )) * len - (len - 1) * nz(sumd[1]) diffupbrzn= (sumd * ((100 / (100 - bearz)) -1 )) * len - (len - 1) * nz(sumu[1]) diffdnbrzn = (sumu / ((100 / (100 - bearz)) -1 )) * len - (len - 1) * nz(sumd[1]) bullzone = Rsi <= bullz ? close + diffupblzn : close - diffdnblzn bearzone = Rsi <= bearz ? close + diffupbrzn : close - diffdnbrzn bullzone := ema(bullzone, emasmt) bearzone := ema(bearzone, emasmt) bullzln = plot(bullzone, color = showbbzone ? color.lime : na) bearzln = plot(bearzone, color = showbbzone ? color.lime : na) fill(obl, bullzln, color = bullz < oblevel and showbbzone ? color.new(color.lime, 90) : color.new(color.white, 100)) fill(osl, bearzln, color = bearz > oslevel and showbbzone ? color.new(color.red, 90) : color.new(color.white, 100))
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-04-20 13:14:49

안녕하세요 예스스탁입니다. input : len(14),oblevel(70),oslevel(30),bullz(60),bearz(40),emasmt(1); var : src(0),uu(0),dd(0),sumu(0),sumd(0),rs(0),rsiv(0); var : diffupob(0),diffdnob(0),diffupos(0),diffdnos(0); var : oble(0),osle(0),oblev(0),oslev(0); var : diffupblzn(0),diffdnblzn(0),diffupbrzn(0),diffdnbrzn(0); var : bull(0),bear(0),bullzone(0),bearzone(0); src = close; uu = max(close - close[1], 0); dd = max(close[1] - close, 0); sumu = 0.0; sumd = 0.0; sumu = (uu + (len - 1) * iff(isnan(sumu[1]) == False,sumu[1],0)) / len; sumd = (dd + (len - 1) * iff(isnan(sumd[1]) == False,sumd[1],0)) / len; rs = sumu / sumd; rsiv = 100 - 100 / (1 + rs); diffupob = (sumd * ((100 / (100 - oblevel)) -1 )) * len - (len - 1) * iff(isnan(sumu[1]) == False,sumu[1],0); diffdnob = (sumu / ((100 / (100 - oblevel)) -1 )) * len - (len - 1) * iff(isnan(sumd[1]) == False,sumd[1],0); diffupos = (sumd * ((100 / (100 - oslevel)) -1 )) * len - (len - 1) * iff(isnan(sumu[1]) == False,sumu[1],0); diffdnos = (sumu / ((100 / (100 - oslevel)) -1 )) * len - (len - 1) * iff(isnan(sumd[1]) == False,sumd[1],0); oble = iff(Rsiv <= oblevel , close + diffupob , close - diffdnob); osle = iff(Rsiv <= oslevel , close + diffupos , close - diffdnos); oblev = ema(oble, emasmt); oslev = ema(osle, emasmt); diffupblzn= (sumd * ((100 / (100 - bullz)) -1 )) * len - (len - 1) * iff(isnan(sumu[1]) == False,sumu[1],0); diffdnblzn = (sumu / ((100 / (100 - bullz)) -1 )) * len - (len - 1) * iff(isnan(sumd[1]) == False,sumd[1],0); diffupbrzn= (sumd * ((100 / (100 - bearz)) -1 )) * len - (len - 1) * iff(isnan(sumu[1]) == False,sumu[1],0); diffdnbrzn = (sumu / ((100 / (100 - bearz)) -1 )) * len - (len - 1) * iff(isnan(sumd[1]) == False,sumd[1],0); bull = iff(Rsiv <= bullz , close + diffupblzn , close - diffdnblzn); bear = iff(Rsiv <= bearz , close + diffupbrzn , close - diffdnbrzn); bullzone = ema(bull, emasmt); bearzone = ema(bear, emasmt); plot1(oblev,"obl",red); plot2(oslev, "osl",green); plot3((oblev + oslev) / 2, "+",gray); plot4(bullzone,"bullzone",Lime); plot5(bearzone,"bearzone",lime); 즐거운 하루되세요 > 부똘이 님이 쓴 글입니다. > 제목 : 도움 요청 드립니다. > 아래 지표를 트레이딩뷰에서 찾았는데요, 예트로 변환하고 싶어서 말씀올립니다. 항상 감사드립니다~ src = input(close, title ="Source") len = input(14, title ="Length") oblevel = input(70, title ="OB Level", maxval = 99, minval = 1) oslevel = input(30, title ="OS Level", maxval = 99, minval = 1) bullz = input(60, title ="Bull Zone Level", maxval = 99, minval = 1) bearz = input(40, title ="Bear Zone Level", maxval = 99, minval = 1) fillbtw = input(true, title ="Fill between OB and OS lines") showbbzone = input(false, title ="Show Bull/Bear Zones") drawmidl = input(false, title ="Draw Midline") emasmt = input(1, title ="EMA Smoothing", minval = 1) my_rsi(x, len) => u = max(x - x[1], 0) d = max(x[1] - x, 0) sumu = 0.0, sumd = 0.0 sumu := (u + (len - 1) * nz(sumu[1])) / len sumd := (d + (len - 1) * nz(sumd[1])) / len rs = sumu / sumd res = 100 - 100 / (1 + rs) [res, sumu, sumd] [Rsi, sumu, sumd] = my_rsi(close, len) diffupob = (sumd * ((100 / (100 - oblevel)) -1 )) * len - (len - 1) * nz(sumu[1]) diffdnob = (sumu / ((100 / (100 - oblevel)) -1 )) * len - (len - 1) * nz(sumd[1]) diffupos = (sumd * ((100 / (100 - oslevel)) -1 )) * len - (len - 1) * nz(sumu[1]) diffdnos = (sumu / ((100 / (100 - oslevel)) -1 )) * len - (len - 1) * nz(sumd[1]) oblev = Rsi <= oblevel ? close + diffupob : close - diffdnob oslev = Rsi <= oslevel ? close + diffupos : close - diffdnos oblev := ema(oblev, emasmt) oslev := ema(oslev, emasmt) obl = plot(oblev, color = color.red) osl = plot(oslev, color = color.green) fill(obl, osl, color = fillbtw ? color.new(color.gray, 89) : color.new(color.white, 100)) plot((oblev + oslev) / 2, color = drawmidl ? color.gray : color.new(color.white, 100)) //Bull/Bear Zones diffupblzn= (sumd * ((100 / (100 - bullz)) -1 )) * len - (len - 1) * nz(sumu[1]) diffdnblzn = (sumu / ((100 / (100 - bullz)) -1 )) * len - (len - 1) * nz(sumd[1]) diffupbrzn= (sumd * ((100 / (100 - bearz)) -1 )) * len - (len - 1) * nz(sumu[1]) diffdnbrzn = (sumu / ((100 / (100 - bearz)) -1 )) * len - (len - 1) * nz(sumd[1]) bullzone = Rsi <= bullz ? close + diffupblzn : close - diffdnblzn bearzone = Rsi <= bearz ? close + diffupbrzn : close - diffdnbrzn bullzone := ema(bullzone, emasmt) bearzone := ema(bearzone, emasmt) bullzln = plot(bullzone, color = showbbzone ? color.lime : na) bearzln = plot(bearzone, color = showbbzone ? color.lime : na) fill(obl, bullzln, color = bullz < oblevel and showbbzone ? color.new(color.lime, 90) : color.new(color.white, 100)) fill(osl, bearzln, color = bearz > oslevel and showbbzone ? color.new(color.red, 90) : color.new(color.white, 100))