커뮤니티

문의 드립니다.

프로필 이미지
신대륙발견
2025-09-26 03:34:53.0
63
글번호 194282
답변완료
//@version=5 indicator( title="DEMA Adjusted Average True Range [BackQuant]", shorttitle = "DEMA ATR [BackQuant]", overlay=true, timeframe="", timeframe_gaps=true ) // Define User Inputs simple bool showAtr = input.bool(true, "Plot Dema Atr on Chart?") simple bool haCandles = input.bool(false, "Use HA Candles?") simple int periodDema = input.int(7, "Dema Period", group = "Dema Atr") series float sourceDema = input.source(close, "Calculation Source", group = "Dema Atr") simple int periodAtr = input.int(14, "Period", group = "Dema Atr") simple float factorAtr = input.float(1.7, "Factor", step = 0.01, group = "Dema Atr") simple bool paintCandles = input.bool(false, "Paint Candles According to trend?") simple bool showMA = input.bool(false, "Show Atr Moving Average as Confluence?",group = "Confluence") string movingAverageType = input.string("Ema", title="MA Type", options=["SMA", "Hull", "Ema", "Wma", "Dema"],group = "Confluence") simple int movingAveragePeriod = input.int(50, "Moving Average Period", group = "Confluence") simple color longColour = #00ff00 simple color shortColour = #ff0000 /////////////////////////////////////////////////////////////// © BackQuant /////////////////////////////////////////////////////////////// // Use HA Candles? heikinashi_close = request.security( symbol = ticker.heikinashi(syminfo.tickerid), timeframe = timeframe.period, expression = close, gaps = barmerge.gaps_off, lookahead = barmerge.lookahead_off ) var series float source = close if haCandles == true source := heikinashi_close if haCandles == false source := sourceDema /////////////////////////////////////////////////////////////// © BackQuant /////////////////////////////////////////////////////////////// // Function DemaAtrWithBands(periodDema, source, lookback, atrFactor)=> ema1 = ta.ema(source, periodDema) ema2 = ta.ema(ema1, periodDema) demaOut = 2 * ema1 - ema2 atr = ta.atr(lookback) trueRange = atr * atrFactor DemaAtr = demaOut DemaAtr := nz(DemaAtr[1], DemaAtr) trueRangeUpper = demaOut + trueRange trueRangeLower = demaOut - trueRange if trueRangeLower > DemaAtr DemaAtr := trueRangeLower if trueRangeUpper < DemaAtr DemaAtr := trueRangeUpper DemaAtr // Function Out DemaAtr = DemaAtrWithBands(periodDema, source, periodAtr, factorAtr) /////////////////////////////////////////////////////////////// © BackQuant /////////////////////////////////////////////////////////////// // Moving Average Switch Type movingAverage(source, length, type) => switch type "SMA" => ta.sma(source, length) "Hull" => ta.hma(source, length) "Ema" => ta.ema(source, length) "Wma" => ta.wma(source, length) "Dema" => ta.dema(source, length) maOut = movingAverage(DemaAtr, movingAveragePeriod, movingAverageType) /////////////////////////////////////////////////////////////// © BackQuant /////////////////////////////////////////////////////////////// // Conditions DemaAtrLong = ta.crossover(DemaAtr, DemaAtr[1]) DemaAtrShort = ta.crossunder(DemaAtr, DemaAtr[1]) // Colour Condtions var color Trend = #ffffff if DemaAtrLong Trend := longColour if DemaAtrShort Trend := shortColour // Plotting plot( showAtr ? DemaAtr : na, "ATR", color=Trend, linewidth = 2 ) barcolor(paintCandles ? Trend : na) plot(showMA ? maOut : na, "Moving Average", color.white, 2, plot.style_line) /////////////////////////////////////////////////////////////// © BackQuant /////////////////////////////////////////////////////////////// // Alerts alertcondition( DemaAtrLong, title="Dema ATR Trend Up", message="Dema ATR Trend Up - {{ticker}} - {{interval}}" ) alertcondition( DemaAtrShort, title="Dema ATR Trend Down", message="Dema ATR Trend Down - {{ticker}} - {{interval}}" ) 트레이딩뷰 수식인데 여기서 DEMA 선의 색이 바뀌면 매수/매도 신호가 나오게 해주세요.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-09-26 13:49:13.0

안녕하세요 예스스탁입니다. 1 . 지표 input : showAtr(true); input : haCandles(false); input : periodDema(7); input : sourceDema(close); input : periodAtr(14); input : factorAtr(1.7); input : paintCandles(false); input : showMA(false); input : movingAverageType(2);#1:SMA, 2:Hull, 3:Ema, 4:Wma, 5:Dema input : movingAveragePeriod(50); var : longColour(Lime),shortColour(Red); var : heikinashi_close(0),heikinashi_open(0),heikinashi_high(0),heikinashi_low(0); var : source(0); heikinashi_close = (O+H+L+C)/4; heikinashi_open= iff(index == 0,open,(heikinashi_open [1] + heikinashi_close [1])/2) ; heikinashi_high = MaxList(High, heikinashi_open, heikinashi_close) ; heikinashi_low = MinList(Low, heikinashi_open, heikinashi_close) ; source = close; if haCandles == true Then source = heikinashi_close; if haCandles == false Then source = sourceDema ; var : ema1(0),ema2(0),demaOut(0); var : alpha(0),atr(0),TR(0),DemaAtr(0); var : trueRangeUpper(0),trueRangeLower(0); ema1 = ema(source, periodDema); ema2 = ema(ema1, periodDema); demaOut = 2 * ema1 - ema2; alpha = 1 / periodAtr ; atr = IFf(IsNan(atr[1]) == true, ma(TrueRange,periodAtr) , alpha * TrueRange + (1 - alpha) * IFf(isnan(atr[1])==true,0,atr[1])); TR = atr * factorAtr ; DemaAtr = demaOut ; DemaAtr = iff(isnan(DemaAtr[1]) == true, DemaAtr,DemaAtr[1]); trueRangeUpper = demaOut + TR; trueRangeLower = demaOut - TR; if trueRangeLower > DemaAtr Then DemaAtr = trueRangeLower; if trueRangeUpper < DemaAtr Then DemaAtr = trueRangeUpper; var : e1(0),e2(0),maOut(0); if movingAverageType == 1 Then maOut = ma(DemaAtr,movingAveragePeriod); if movingAverageType == 2 Then maOut = wma(2 * wma(DemaAtr, movingAveragePeriod / 2) - wma(DemaAtr, movingAveragePeriod), round(sqrt(movingAveragePeriod),0)); if movingAverageType == 3 Then maOut = ema(DemaAtr,movingAveragePeriod); if movingAverageType == 4 Then maOut = wma(DemaAtr,movingAveragePeriod); if movingAverageType == 5 Then { e1 = ema(DemaAtr, movingAveragePeriod); e2 = ema(e1, movingAveragePeriod); maOut = 2 * e1 - e2; } var : DemaAtrLong(False),DemaAtrShort(False); DemaAtrLong = CrossUp(DemaAtr, DemaAtr[1]); DemaAtrShort = CrossDown(DemaAtr, DemaAtr[1]); var : Trend(Black); if DemaAtrLong Then Trend = longColour; if DemaAtrShort Then Trend = shortColour; if showAtr == true Then plot1(DemaAtr,"ATR",Trend); Else NoPlot(1); if showMA == true Then plot2(maOut,"oving Average",Trend); Else NoPlot(2); 2. 시스템 input : showAtr(true); input : haCandles(false); input : periodDema(7); input : sourceDema(close); input : periodAtr(14); input : factorAtr(1.7); input : paintCandles(false); input : showMA(false); input : movingAverageType(2);#1:SMA, 2:Hull, 3:Ema, 4:Wma, 5:Dema input : movingAveragePeriod(50); var : longColour(Lime),shortColour(Red); var : heikinashi_close(0),heikinashi_open(0),heikinashi_high(0),heikinashi_low(0); var : source(0); heikinashi_close = (O+H+L+C)/4; heikinashi_open= iff(index == 0,open,(heikinashi_open [1] + heikinashi_close [1])/2) ; heikinashi_high = MaxList(High, heikinashi_open, heikinashi_close) ; heikinashi_low = MinList(Low, heikinashi_open, heikinashi_close) ; source = close; if haCandles == true Then source = heikinashi_close; if haCandles == false Then source = sourceDema ; var : ema1(0),ema2(0),demaOut(0); var : alpha(0),atr(0),TR(0),DemaAtr(0); var : trueRangeUpper(0),trueRangeLower(0); ema1 = ema(source, periodDema); ema2 = ema(ema1, periodDema); demaOut = 2 * ema1 - ema2; alpha = 1 / periodAtr ; atr = IFf(IsNan(atr[1]) == true, ma(TrueRange,periodAtr) , alpha * TrueRange + (1 - alpha) * IFf(isnan(atr[1])==true,0,atr[1])); TR = atr * factorAtr ; DemaAtr = demaOut ; DemaAtr = iff(isnan(DemaAtr[1]) == true, DemaAtr,DemaAtr[1]); trueRangeUpper = demaOut + TR; trueRangeLower = demaOut - TR; if trueRangeLower > DemaAtr Then DemaAtr = trueRangeLower; if trueRangeUpper < DemaAtr Then DemaAtr = trueRangeUpper; var : e1(0),e2(0),maOut(0); if movingAverageType == 1 Then maOut = ma(DemaAtr,movingAveragePeriod); if movingAverageType == 2 Then maOut = wma(2 * wma(DemaAtr, movingAveragePeriod / 2) - wma(DemaAtr, movingAveragePeriod), round(sqrt(movingAveragePeriod),0)); if movingAverageType == 3 Then maOut = ema(DemaAtr,movingAveragePeriod); if movingAverageType == 4 Then maOut = wma(DemaAtr,movingAveragePeriod); if movingAverageType == 5 Then { e1 = ema(DemaAtr, movingAveragePeriod); e2 = ema(e1, movingAveragePeriod); maOut = 2 * e1 - e2; } var : DemaAtrLong(False),DemaAtrShort(False); DemaAtrLong = CrossUp(DemaAtr, DemaAtr[1]); DemaAtrShort = CrossDown(DemaAtr, DemaAtr[1]); var : Trend(Black); if DemaAtrLong Then { Trend = longColour; Buy(); } if DemaAtrShort Then { Sell(); Trend = shortColour; } 즐거운 하루되세요 > 신대륙발견 님이 쓴 글입니다. > 제목 : 문의 드립니다. > //@version=5 indicator( title="DEMA Adjusted Average True Range [BackQuant]", shorttitle = "DEMA ATR [BackQuant]", overlay=true, timeframe="", timeframe_gaps=true ) // Define User Inputs simple bool showAtr = input.bool(true, "Plot Dema Atr on Chart?") simple bool haCandles = input.bool(false, "Use HA Candles?") simple int periodDema = input.int(7, "Dema Period", group = "Dema Atr") series float sourceDema = input.source(close, "Calculation Source", group = "Dema Atr") simple int periodAtr = input.int(14, "Period", group = "Dema Atr") simple float factorAtr = input.float(1.7, "Factor", step = 0.01, group = "Dema Atr") simple bool paintCandles = input.bool(false, "Paint Candles According to trend?") simple bool showMA = input.bool(false, "Show Atr Moving Average as Confluence?",group = "Confluence") string movingAverageType = input.string("Ema", title="MA Type", options=["SMA", "Hull", "Ema", "Wma", "Dema"],group = "Confluence") simple int movingAveragePeriod = input.int(50, "Moving Average Period", group = "Confluence") simple color longColour = #00ff00 simple color shortColour = #ff0000 /////////////////////////////////////////////////////////////// © BackQuant /////////////////////////////////////////////////////////////// // Use HA Candles? heikinashi_close = request.security( symbol = ticker.heikinashi(syminfo.tickerid), timeframe = timeframe.period, expression = close, gaps = barmerge.gaps_off, lookahead = barmerge.lookahead_off ) var series float source = close if haCandles == true source := heikinashi_close if haCandles == false source := sourceDema /////////////////////////////////////////////////////////////// © BackQuant /////////////////////////////////////////////////////////////// // Function DemaAtrWithBands(periodDema, source, lookback, atrFactor)=> ema1 = ta.ema(source, periodDema) ema2 = ta.ema(ema1, periodDema) demaOut = 2 * ema1 - ema2 atr = ta.atr(lookback) trueRange = atr * atrFactor DemaAtr = demaOut DemaAtr := nz(DemaAtr[1], DemaAtr) trueRangeUpper = demaOut + trueRange trueRangeLower = demaOut - trueRange if trueRangeLower > DemaAtr DemaAtr := trueRangeLower if trueRangeUpper < DemaAtr DemaAtr := trueRangeUpper DemaAtr // Function Out DemaAtr = DemaAtrWithBands(periodDema, source, periodAtr, factorAtr) /////////////////////////////////////////////////////////////// © BackQuant /////////////////////////////////////////////////////////////// // Moving Average Switch Type movingAverage(source, length, type) => switch type "SMA" => ta.sma(source, length) "Hull" => ta.hma(source, length) "Ema" => ta.ema(source, length) "Wma" => ta.wma(source, length) "Dema" => ta.dema(source, length) maOut = movingAverage(DemaAtr, movingAveragePeriod, movingAverageType) /////////////////////////////////////////////////////////////// © BackQuant /////////////////////////////////////////////////////////////// // Conditions DemaAtrLong = ta.crossover(DemaAtr, DemaAtr[1]) DemaAtrShort = ta.crossunder(DemaAtr, DemaAtr[1]) // Colour Condtions var color Trend = #ffffff if DemaAtrLong Trend := longColour if DemaAtrShort Trend := shortColour // Plotting plot( showAtr ? DemaAtr : na, "ATR", color=Trend, linewidth = 2 ) barcolor(paintCandles ? Trend : na) plot(showMA ? maOut : na, "Moving Average", color.white, 2, plot.style_line) /////////////////////////////////////////////////////////////// © BackQuant /////////////////////////////////////////////////////////////// // Alerts alertcondition( DemaAtrLong, title="Dema ATR Trend Up", message="Dema ATR Trend Up - {{ticker}} - {{interval}}" ) alertcondition( DemaAtrShort, title="Dema ATR Trend Down", message="Dema ATR Trend Down - {{ticker}} - {{interval}}" ) 트레이딩뷰 수식인데 여기서 DEMA 선의 색이 바뀌면 매수/매도 신호가 나오게 해주세요.