커뮤니티

트레이딩뷰 사용중인 "Range DI[Misu]" 수식 수정요망

프로필 이미지
유경완
2024-10-29 09:56:05
801
글번호 184702
답변완료

첨부 이미지

매번 항상 감사드립니다. 아래의 지표는 트레이딩뷰에서 사용중인 지표 수식 입니다. 예스스탁에서 사용할수 있도록 수식을 수정 부탁 드립니다. 감사합니다.. // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // &#169; profitprotrading //@version=5 indicator("ALMA Smoothed Gaussian Moving Average", shorttitle = "ASGMA", overlay=true) //ALMA Smoothing src = input(close, title='Source', group = "ALMA Smoothing") smooth = input.int(1, title='Smoothing', minval=1, group = "ALMA Smoothing") length1 = input.int(25, title='Lookback', minval=1, group = "ALMA Smoothing") offset = 0.85 sigma1 = 7 pchange = ta.change(src, smooth) / src * 100 avpchange = ta.alma(pchange, length1, offset, sigma1) //RSI rsi = ta.rsi(close, 14) rsiL = rsi > rsi[1] rsiS = rsi < rsi[1] //Chande Momentum length11 = 9 src1 = close momm = ta.change(src1) f1(m) => m >= 0.0 ? m : 0.0 f2(m) => m >= 0.0 ? 0.0 : -m m1 = f1(momm) m2 = f2(momm) sm1 = math.sum(m1, length11) sm2 = math.sum(m2, length11) percent(nom, div) => 100 * nom / div chandeMO = percent(sm1-sm2, sm1+sm2) cL = chandeMO > chandeMO[1] cS = chandeMO < chandeMO[1] //GAMA credit to author: &#169; LeafAlgo https://www.tradingview.com/v/th7NZUPM/ length = input.int(14, minval=1, title="Length", group = "Gaussian Adaptive Moving Average") adaptive = input.bool(true, title="Adaptive Parameters", group = "Gaussian Adaptive Moving Average") volatilityPeriod = input.int(20, minval=1, title="Volatility Period", group = "Gaussian Adaptive Moving Average") // Calculate Gaussian Moving Average gma = 0.0 sumOfWeights = 0.0 sigma = adaptive ? ta.stdev(close, volatilityPeriod) : input.float(1.0, minval=0.1, title="Standard Deviation", group = "Gaussian Adaptive Moving Average") for i = 0 to length - 1 weight = math.exp(-math.pow(((i - (length - 1)) / (2 * sigma)), 2) / 2) value = ta.highest(avpchange, i + 1) + ta.lowest(avpchange, i + 1) gma := gma + (value * weight) sumOfWeights := sumOfWeights + weight gma := (gma / sumOfWeights) / 2 gma:= ta.ema(gma, 7) gmaColor = avpchange >= gma ? color.rgb(0, 161, 5) : color.rgb(215, 0, 0) // Color bars based on signals until the next signal occurs var int currentSignal = 0 currentSignal := avpchange >= gma ? 1 : -1//le_final ? -1 : currentSignal var color barColor = na if currentSignal == 1 barColor := color.rgb(0, 186, 6) else if currentSignal == -1 barColor := color.rgb(176, 0, 0) barcolor(barColor) plotcandle(open, high, low, close, "Bar Color", barColor, barColor, bordercolor = barColor) //Plotting ema = ta.ema(close, 7) plot(ema, color=gmaColor, linewidth=3, title="Gaussian Moving Average") plotshape(ta.crossover(avpchange,gma) and barstate.isconfirmed, "Buy Signal", text = "B", textcolor = color.white, style = shape.labelup, location = location.belowbar, color = color.rgb(0, 161, 5), offset = -1) plotshape(ta.crossunder(avpchange,gma) and barstate.isconfirmed, "Sell Signal", text = "S", textcolor = color.white, style = shape.labeldown, location = location.abovebar, color = color.rgb(215, 0, 0), offset = -1) bgcolor(ta.crossover(avpchange,gma) and barstate.isconfirmed and rsiL and cL ? color.rgb(0, 162, 5, 85): na, offset = -1) bgcolor(ta.crossunder(avpchange,gma) and barstate.isconfirmed and rsiS and cS ? color.rgb(207, 0, 0, 85): na, offset = -1) barcolor(gmaColor) alertcondition(ta.crossover(avpchange,gma) and barstate.isconfirmed, title="Buy Signal", message="Go Long! {{exchange}}:{{ticker}}") alertcondition(ta.crossunder(avpchange,gma) and barstate.isconfirmed, title="Sell Signal", message="Go Short! {{exchange}}:{{ticker}}")
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-10-30 09:50:11

안녕하세요 예스스탁입니다. 수식내용이 언급한 지표명과 다른식 같습니다. 아래는 올리신 수식을 변환한 식입니다. 언급하신 Range DI [Misu]라는 트뷰수식은 개발자가 배포한 사용자함수를 사용하는 내용으로 이란 별도의 사용자함수를 사용하는 수식은 변경해 드리기 어렵습니다. input : smooth(1); input : length1(25); var : src(0),offset(0),sigma1(0),pchange(0); var : mm(0),s(0),norm(0),weight(0),sum(0),i(0),avpchange(0); src = close; offset = 0.85; sigma1 = 7; pchange = (src-src[smooth]) / src * 100; mm = offset * (length1 - 1); s = length1 / sigma1; norm = 0; sum = 0; for i = 0 to length1 - 1 { weight = exp(-1 * pow(i - mm, 2) / (2 * pow(s, 2))); norm = norm + weight; sum = sum + pchange[length1 - i - 1] * weight; } avpchange = sum / norm; #avpchange = ta.alma(pchange, length1, offset, sigma1) var : r(0),rsil(False),rsis(False); //RSI r = rsi(14); rsiL = r > r[1]; rsiS = r < r[1]; //Chande Momentum var : length11(0),src1(0),momm(0),m1(0),m2(0),sm1(0),sm2(0); var : chandeMO(0),cl(False),cs(False); length11 = 9; src1 = close; momm = src1-src1[1]; m1 = iff(momm >= 0.0 , momm , 0.0); m2 = iff(momm >= 0.0 , 0.0 , -momm); sm1 = AccumN(m1, length11); sm2 = AccumN(m2, length11); chandeMO = 100 * sm1-sm2 / sm1+sm2; cL = chandeMO > chandeMO[1]; cS = chandeMO < chandeMO[1]; input : length(14); input : adaptive(0);#0이면 20봉표준편차, 1이상은 입력값 input : volatilityPeriod(20); var : Gma(0),sumOfWeights(0),sigma(0),value(0),gmaColor(0); var : currentSignal(0),barColor(0),em(0),tx(0),TL(0); gma = 0.0 ; sumOfWeights = 0.0; sigma = iff(adaptive == 0 , std(close, volatilityPeriod) , adaptive); for i = 0 to length - 1 { weight = exp(-pow(((i - (length - 1)) / (2 * sigma)), 2) / 2); value = highest(avpchange, i + 1) + lowest(avpchange, i + 1); gma = gma + (value * weight); sumOfWeights = sumOfWeights + weight; } gma = (gma / sumOfWeights) / 2; gma = ema(gma, 7); gmaColor = iff(avpchange >= gma , rgb(0, 161, 5) , rgb(215, 0, 0)); currentSignal = iff(avpchange >= gma , 1 , -1); if currentSignal == 1 Then barColor = rgb(0, 186, 6); else if currentSignal == -1 Then barColor = rgb(176, 0, 0); #plotcandle(open, high, low, close, "Bar Color", barColor, barColor, bordercolor = barColor) //Plotting em = ema(close, 7); plot1(em,"Gaussian Moving Average",gmaColor,Def,2); if CrossUp(avpchange,gma) Then { TL = TL_New(sDate,sTime,0,NextBarSdate,NextBarStime,999999999); TL_SetColor(TL,rgb(0, 161, 5)); tx = Text_New(sDate,sTime,L-PriceScale*2,"B"); Text_SetStyle(tx,2,0); Text_SetColor(tx,rgb(0, 161, 5)); Text_SetBold(tx,1); } if CrossDown(avpchange,gma) Then { TL = TL_New(sDate,sTime,0,NextBarSdate,NextBarStime,999999999); TL_SetColor(TL,rgb(207, 0, 0)); tx = Text_New(sDate,sTime,H+PriceScale*2,"S"); Text_SetStyle(tx,2,1); Text_SetColor(tx,rgb(207, 0, 0)); Text_SetBold(tx,1); } 즐거운 하루되세요 > 유경완 님이 쓴 글입니다. > 제목 : 트레이딩뷰 사용중인 "Range DI[Misu]" 수식 수정요망 > 매번 항상 감사드립니다. 아래의 지표는 트레이딩뷰에서 사용중인 지표 수식 입니다. 예스스탁에서 사용할수 있도록 수식을 수정 부탁 드립니다. 감사합니다.. // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // &#169; profitprotrading //@version=5 indicator("ALMA Smoothed Gaussian Moving Average", shorttitle = "ASGMA", overlay=true) //ALMA Smoothing src = input(close, title='Source', group = "ALMA Smoothing") smooth = input.int(1, title='Smoothing', minval=1, group = "ALMA Smoothing") length1 = input.int(25, title='Lookback', minval=1, group = "ALMA Smoothing") offset = 0.85 sigma1 = 7 pchange = ta.change(src, smooth) / src * 100 avpchange = ta.alma(pchange, length1, offset, sigma1) //RSI rsi = ta.rsi(close, 14) rsiL = rsi > rsi[1] rsiS = rsi < rsi[1] //Chande Momentum length11 = 9 src1 = close momm = ta.change(src1) f1(m) => m >= 0.0 ? m : 0.0 f2(m) => m >= 0.0 ? 0.0 : -m m1 = f1(momm) m2 = f2(momm) sm1 = math.sum(m1, length11) sm2 = math.sum(m2, length11) percent(nom, div) => 100 * nom / div chandeMO = percent(sm1-sm2, sm1+sm2) cL = chandeMO > chandeMO[1] cS = chandeMO < chandeMO[1] //GAMA credit to author: &#169; LeafAlgo https://www.tradingview.com/v/th7NZUPM/ length = input.int(14, minval=1, title="Length", group = "Gaussian Adaptive Moving Average") adaptive = input.bool(true, title="Adaptive Parameters", group = "Gaussian Adaptive Moving Average") volatilityPeriod = input.int(20, minval=1, title="Volatility Period", group = "Gaussian Adaptive Moving Average") // Calculate Gaussian Moving Average gma = 0.0 sumOfWeights = 0.0 sigma = adaptive ? ta.stdev(close, volatilityPeriod) : input.float(1.0, minval=0.1, title="Standard Deviation", group = "Gaussian Adaptive Moving Average") for i = 0 to length - 1 weight = math.exp(-math.pow(((i - (length - 1)) / (2 * sigma)), 2) / 2) value = ta.highest(avpchange, i + 1) + ta.lowest(avpchange, i + 1) gma := gma + (value * weight) sumOfWeights := sumOfWeights + weight gma := (gma / sumOfWeights) / 2 gma:= ta.ema(gma, 7) gmaColor = avpchange >= gma ? color.rgb(0, 161, 5) : color.rgb(215, 0, 0) // Color bars based on signals until the next signal occurs var int currentSignal = 0 currentSignal := avpchange >= gma ? 1 : -1//le_final ? -1 : currentSignal var color barColor = na if currentSignal == 1 barColor := color.rgb(0, 186, 6) else if currentSignal == -1 barColor := color.rgb(176, 0, 0) barcolor(barColor) plotcandle(open, high, low, close, "Bar Color", barColor, barColor, bordercolor = barColor) //Plotting ema = ta.ema(close, 7) plot(ema, color=gmaColor, linewidth=3, title="Gaussian Moving Average") plotshape(ta.crossover(avpchange,gma) and barstate.isconfirmed, "Buy Signal", text = "B", textcolor = color.white, style = shape.labelup, location = location.belowbar, color = color.rgb(0, 161, 5), offset = -1) plotshape(ta.crossunder(avpchange,gma) and barstate.isconfirmed, "Sell Signal", text = "S", textcolor = color.white, style = shape.labeldown, location = location.abovebar, color = color.rgb(215, 0, 0), offset = -1) bgcolor(ta.crossover(avpchange,gma) and barstate.isconfirmed and rsiL and cL ? color.rgb(0, 162, 5, 85): na, offset = -1) bgcolor(ta.crossunder(avpchange,gma) and barstate.isconfirmed and rsiS and cS ? color.rgb(207, 0, 0, 85): na, offset = -1) barcolor(gmaColor) alertcondition(ta.crossover(avpchange,gma) and barstate.isconfirmed, title="Buy Signal", message="Go Long! {{exchange}}:{{ticker}}") alertcondition(ta.crossunder(avpchange,gma) and barstate.isconfirmed, title="Sell Signal", message="Go Short! {{exchange}}:{{ticker}}")