커뮤니티

문의 드립니다.

프로필 이미지
다올
2023-06-30 01:34:18
2361
글번호 170219
답변완료
적용가능한 수식으로 변형 부탁 드립니다. 1.======================================================================= 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!') 2.======================================================================= fHV(_src, _len, _avg) => r = math.log(_src / nz(_src[1], _src)) rAvg = ta.sma(r, _len) hv = math.sqrt(math.sum(math.pow(r - rAvg, 2), _len) / (_len - 1)) * math.sqrt(_avg) hv // HVP inspired by @balipour, implimented @cheatcountry fHVP(_hv, _avg) => count = 0. for i = 0 to _avg - 1 by 1 count += (nz(_hv[i]) < _hv ? 1 : 0) count hvp = count / _avg * 100 hvp indicator(title='Historical Volatility Percentile: Price and Volume', shorttitle='HVVP', precision=2) src = input(close, title='Source') len = input(22, title='Length') avg = input(88, title='Lookback Length') smalen = input(22, title='Average Length') vPR = input(5, title='Percent Rank Limit') bc = input(true, title='Include Source') vc = input(true, title='Include Volume') pc = input(true, title='Include Percent Rank') sc = input(true, title='Include SMA') //calculate for source term hv = fHV(src, len, avg) hvp = bc ? fHVP(hv, avg) : 0 //calculate for the volume term hvv = fHV(math.log10(volume), len, avg) hvvp = vc ? fHVP(hvv, avg) : 0 //combine both volitility measurements, normalize back to 100 VV = bc and vc ? (hvp + hvvp) / 2 : hvp + hvvp hc = VV > 90 ? color.maroon : VV > 79 ? color.orange : VV >= 71 ? color.yellow : VV >= 50 ? color.green : VV <= 30 ? color.gray : color.blue plot(VV, style=plot.style_columns, color=hc, title = "Histogram") //Percent Rank and ploting prc = bc ? ta.percentrank(hvp, avg) : na prv = vc ? ta.percentrank(hvvp, avg) : na pvv_check = prv > 100 - vPR and prc > 100 - vPR and bc and vc pvv_check_2 = prv < vPR and prc < vPR and bc and vc //ploting the down arrows //plotshape(prc > 100 - vPR and not pvv_check and bc and pc ? VV : na, location=location.absolute, style=shape.triangledown, color=color.new(color.yellow, 30), size=size.tiny, offset=0) plotshape(prv > 100 - vPR and not pvv_check and vc and pc ? VV : na, location=location.absolute, style=shape.triangledown, color=color.new(color.yellow, 30), size=size.tiny, offset=0, title="DWN ARW Yellow") plotshape(pvv_check and pc ? VV : na, location=location.absolute, style=shape.triangledown, color=color.new(color.red, 30), size=size.tiny, offset=0, title="DWN ARW Red") //plotting the up arrows //plotshape(prc < vPR and not pvv_check_2 and bc and pc ? 0 : na, location=location.absolute, style=shape.triangleup, color=color.new(color.yellow, 30), size=size.tiny, offset=0) plotshape(prv < vPR and not pvv_check_2 and vc and pc ? 0 : na, location=location.absolute, style=shape.triangleup, color=color.new(color.yellow, 30), size=size.tiny, offset=0, title="UP ARW Yellow") plotshape(pvv_check_2 and pc ? 0 : na, location=location.absolute, style=shape.triangleup, color=color.new(color.red, 30), size=size.tiny, offset=0, title="UP ARW Red") //SMAs for price and volume SVV = bc and vc ? (hvp + hvvp) / 2 : hvp + hvvp plot(sc ? ta.sma(SVV, smalen) : na, color=color.new(color.blue, 0), linewidth=2, title="MA Line") 3.======================================================================= curtaLength = input(title="Curta (Short) Length", type=integer, defval=3) mediaLength = input(title="Media (Medium) Length", type=integer, defval=8) longaLength = input(title="Longa (Long) Length", type=integer, defval=20) src = input(title="Source", type=source, defval=close) applyFilling = input(title="Apply Ribbon Filling ?", type=bool, defval=true) highlightCrossovers = input(title="Highlight Crossovers ?", type=bool, defval=true) media = sma(src, mediaLength) curta = sma(src, curtaLength) / media longa = sma(src, longaLength) / media curtaPlot = plot(curta, title="Curta", color=green) plot(1, title="Media", color=black, transp=0) longaPlot = plot(longa, title="Longa", color=red) fillColor = applyFilling ? (curta > longa ? #0ebb23 : red) : color(white, 100) fill(curtaPlot, longaPlot, color=fillColor, transp=80) plotshape(crossover(curta, longa) and highlightCrossovers ? avg(longa, longa[1]) : na, title="Crossover", location=location.absolute, style=shape.circle, size=size.tiny, color=green, transp=20) plotshape(crossunder(curta, longa) and highlightCrossovers ? avg(longa, longa[1]) : na, title="Crossunder", location=location.absolute, style=shape.circle, size=size.tiny, color=red, transp=20)
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-06-30 10:54:11

안녕하세요 예스스탁입니다. 1 올려주신 내용은 변환을 해드릴수 없습니다. 일정시간 이상 요구되는 내용은 답변이 어렵습니다. 도움을 드리지 못해 죄송합니다. 2 /*fHV(_src, _len, _avg) => r = math.log(_src / nz(_src[1], _src)) rAvg = ta.sma(r, _len) hv = math.sqrt(math.sum(math.pow(r - rAvg, 2), _len) / (_len - 1)) * math.sqrt(_avg) hv */ // HVP inspired by @balipour, implimented @cheatcountry /*fHVP(_hv, _avg) => count = 0. for i = 0 to _avg - 1 by 1 count += (nz(_hv[i]) < _hv ? 1 : 0) count hvp = count / _avg * 100 hvp*/ input : src(close),len(22),avgv(88),smalen(22),vPR(5),bc(true),vc(true),pc(true),sc(true); //calculate for source term var :r(0),rAvg(0),hv(0),count(0),i(0),hvp(0); var :r1(0),rAvg1(0),hvv(0),count1(0),hvvp(0); var : vv(0),hc(0),svv(0); r = log(src / IFf(IsNan(src[1]) == False,src[1],src)); rAvg = ma(r,len); hv = sqrt(AccumN(pow(r - rAvg, 2), len) / (len - 1)) * sqrt(avgv); count = 0; for i = 0 to avgv - 1 { count = count + iff(IFf(IsNan(hv[i]) == false,Hv[i],0) < hv ,1 , 0); } hvp = IFf(bc, count / avgv * 100,0); //calculate for the volume term r1 = log(log10(volume) / IFf(IsNan(log10(volume[1])) == False,log10(volume[1]),log10(volume))); rAvg1 = ma(r1,len); hvv = sqrt(AccumN(pow(r1 - rAvg1, 2), len) / (len - 1)) * sqrt(avgv); count1 = 0; for i = 0 to avgv - 1 { count1 = count1 + iff(IFf(IsNan(hvv[i]) == false,hvv[i],0) < hvv ,1 , 0); } hvvp = IFf(vc, count1 / avgv * 100,0); //combine both volitility measurements, normalize back to 100 VV = iff(bc and vc , (hvp + hvvp) / 2 , hvp + hvvp); hc = iff(VV > 90 , maroon ,IFf( VV > 79 , orange , iff(VV >= 71 , yellow , IFf( VV >= 50 , green , IFf(VV <= 30 , gray ,blue))))); SVV = iff(bc and vc , (hvp + hvvp) / 2 , hvp + hvvp); plot1(VV, "Histogram",hc); if sc == true Then plot2(ma(SVV, smalen),"MA Line",Blue); 3 input : curtaLength(3),mediaLength(8),longaLength(20),src(close),applyFilling(true),highlightCrossovers(true); var : media(0),curta(0),longa(0); media = ma(src, mediaLength); curta = ma(src, curtaLength) / media; longa = ma(src, longaLength) / media; plot1(curta, "Curta", green); plot2(1, "Media", black); plot3(longa, "Longa", red); 즐거운 하루되세요 > 다올 님이 쓴 글입니다. > 제목 : 문의 드립니다. > 적용가능한 수식으로 변형 부탁 드립니다. 1.======================================================================= 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!') 2.======================================================================= fHV(_src, _len, _avg) => r = math.log(_src / nz(_src[1], _src)) rAvg = ta.sma(r, _len) hv = math.sqrt(math.sum(math.pow(r - rAvg, 2), _len) / (_len - 1)) * math.sqrt(_avg) hv // HVP inspired by @balipour, implimented @cheatcountry fHVP(_hv, _avg) => count = 0. for i = 0 to _avg - 1 by 1 count += (nz(_hv[i]) < _hv ? 1 : 0) count hvp = count / _avg * 100 hvp indicator(title='Historical Volatility Percentile: Price and Volume', shorttitle='HVVP', precision=2) src = input(close, title='Source') len = input(22, title='Length') avg = input(88, title='Lookback Length') smalen = input(22, title='Average Length') vPR = input(5, title='Percent Rank Limit') bc = input(true, title='Include Source') vc = input(true, title='Include Volume') pc = input(true, title='Include Percent Rank') sc = input(true, title='Include SMA') //calculate for source term hv = fHV(src, len, avg) hvp = bc ? fHVP(hv, avg) : 0 //calculate for the volume term hvv = fHV(math.log10(volume), len, avg) hvvp = vc ? fHVP(hvv, avg) : 0 //combine both volitility measurements, normalize back to 100 VV = bc and vc ? (hvp + hvvp) / 2 : hvp + hvvp hc = VV > 90 ? color.maroon : VV > 79 ? color.orange : VV >= 71 ? color.yellow : VV >= 50 ? color.green : VV <= 30 ? color.gray : color.blue plot(VV, style=plot.style_columns, color=hc, title = "Histogram") //Percent Rank and ploting prc = bc ? ta.percentrank(hvp, avg) : na prv = vc ? ta.percentrank(hvvp, avg) : na pvv_check = prv > 100 - vPR and prc > 100 - vPR and bc and vc pvv_check_2 = prv < vPR and prc < vPR and bc and vc //ploting the down arrows //plotshape(prc > 100 - vPR and not pvv_check and bc and pc ? VV : na, location=location.absolute, style=shape.triangledown, color=color.new(color.yellow, 30), size=size.tiny, offset=0) plotshape(prv > 100 - vPR and not pvv_check and vc and pc ? VV : na, location=location.absolute, style=shape.triangledown, color=color.new(color.yellow, 30), size=size.tiny, offset=0, title="DWN ARW Yellow") plotshape(pvv_check and pc ? VV : na, location=location.absolute, style=shape.triangledown, color=color.new(color.red, 30), size=size.tiny, offset=0, title="DWN ARW Red") //plotting the up arrows //plotshape(prc < vPR and not pvv_check_2 and bc and pc ? 0 : na, location=location.absolute, style=shape.triangleup, color=color.new(color.yellow, 30), size=size.tiny, offset=0) plotshape(prv < vPR and not pvv_check_2 and vc and pc ? 0 : na, location=location.absolute, style=shape.triangleup, color=color.new(color.yellow, 30), size=size.tiny, offset=0, title="UP ARW Yellow") plotshape(pvv_check_2 and pc ? 0 : na, location=location.absolute, style=shape.triangleup, color=color.new(color.red, 30), size=size.tiny, offset=0, title="UP ARW Red") //SMAs for price and volume SVV = bc and vc ? (hvp + hvvp) / 2 : hvp + hvvp plot(sc ? ta.sma(SVV, smalen) : na, color=color.new(color.blue, 0), linewidth=2, title="MA Line") 3.======================================================================= curtaLength = input(title="Curta (Short) Length", type=integer, defval=3) mediaLength = input(title="Media (Medium) Length", type=integer, defval=8) longaLength = input(title="Longa (Long) Length", type=integer, defval=20) src = input(title="Source", type=source, defval=close) applyFilling = input(title="Apply Ribbon Filling ?", type=bool, defval=true) highlightCrossovers = input(title="Highlight Crossovers ?", type=bool, defval=true) media = sma(src, mediaLength) curta = sma(src, curtaLength) / media longa = sma(src, longaLength) / media curtaPlot = plot(curta, title="Curta", color=green) plot(1, title="Media", color=black, transp=0) longaPlot = plot(longa, title="Longa", color=red) fillColor = applyFilling ? (curta > longa ? #0ebb23 : red) : color(white, 100) fill(curtaPlot, longaPlot, color=fillColor, transp=80) plotshape(crossover(curta, longa) and highlightCrossovers ? avg(longa, longa[1]) : na, title="Crossover", location=location.absolute, style=shape.circle, size=size.tiny, color=green, transp=20) plotshape(crossunder(curta, longa) and highlightCrossovers ? avg(longa, longa[1]) : na, title="Crossunder", location=location.absolute, style=shape.circle, size=size.tiny, color=red, transp=20)