커뮤니티

아래의 트레이디이뷰 수식을 변환부탁드립니다.

프로필 이미지
해암
2025-12-11 01:16:18
119
글번호 228863
답변완료

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/

// © legroszach



//@version=5

indicator('Triple Supertrend', overlay=true, format=format.price, precision=2, shorttitle='3x SuperTrend')



// inputs

Periods = input(title='ATR Period 1', defval=10)

src = input(hl2, title='Source 1')

Multiplier = input.float(title='ATR Multiplier 1', step=0.1, defval=1.0)



// calculations

atr = ta.atr(Periods)

up = src - Multiplier * atr

up1 = nz(up[1], up)

up := close[1] > up1 ? math.max(up, up1) : up

dn = src + Multiplier * atr

dn1 = nz(dn[1], dn)

dn := close[1] < dn1 ? math.min(dn, dn1) : dn

trend = 1

trend := nz(trend[1], trend)

trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend



// plotting

upPlot = plot(trend == 1 ? up : na, title='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))

greenSignal_1 = trend == 1 and trend[1] == -1

plotshape(greenSignal_1 ? up : na, title='UpTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))

dnPlot = plot(trend == 1 ? na : dn, title='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))

redSignal_1 = trend == -1 and trend[1] == 1

plotshape(redSignal_1 ? dn : na, title='DownTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))



// inputs

Periods2 = input(title='ATR Period 2', defval=11)

src2 = input(hl2, title='Source 2')

Multiplier2 = input.float(title='ATR Multiplier 2', step=0.1, defval=2.0)



// calculations

atr_2 = ta.atr(Periods2)

up_2 = src2 - Multiplier2 * atr_2

up1_2 = nz(up_2[1], up_2)

up_2 := close[1] > up1_2 ? math.max(up_2, up1_2) : up_2

dn_2 = src2 + Multiplier2 * atr_2

dn1_2 = nz(dn_2[1], dn_2)

dn_2 := close[1] < dn1_2 ? math.min(dn_2, dn1_2) : dn_2

trend_2 = 1

trend_2 := nz(trend_2[1], trend_2)

trend_2 := trend_2 == -1 and close > dn1_2 ? 1 : trend_2 == 1 and close < up1_2 ? -1 : trend_2



// plotting

upPlot_2 = plot(trend_2 == 1 ? up_2 : na, title='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))

greenSignal_2 = trend_2 == 1 and trend_2[1] == -1

plotshape(greenSignal_2 ? up_2 : na, title='UpTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))

dnPlot_2 = plot(trend_2 == 1 ? na : dn_2, title='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))

redSignal_2 = trend_2 == -1 and trend_2[1] == 1

plotshape(redSignal_2 ? dn_2 : na, title='DownTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))



// inputs

Periods3 = input(title='ATR Period 3', defval=12)

src3 = input(hl2, title='Source 3')

Multiplier3 = input.float(title='ATR Multiplier 3', step=0.1, defval=3.0)



// calculations

atr_3 = ta.atr(Periods3)

up_3 = src3 - Multiplier3 * atr_3

up1_3 = nz(up_3[1], up_3)

up_3 := close[1] > up1_3 ? math.max(up_3, up1_3) : up_3

dn_3 = src3 + Multiplier3 * atr_3

dn1_3 = nz(dn_3[1], dn_3)

dn_3 := close[1] < dn1_3 ? math.min(dn_3, dn1_3) : dn_3

trend_3 = 1

trend_3 := nz(trend_3[1], trend_3)

trend_3 := trend_3 == -1 and close > dn1_3 ? 1 : trend_3 == 1 and close < up1_3 ? -1 : trend_3



// plotting

upPlot_3 = plot(trend_3 == 1 ? up_3 : na, title='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))

greenSignal_3 = trend_3 == 1 and trend_3[1] == -1

plotshape(greenSignal_3 ? up_3 : na, title='UpTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))

dnPlot_3 = plot(trend_3 == 1 ? na : dn_3, title='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))

redSignal_3 = trend_3 == -1 and trend_3[1] == 1

plotshape(redSignal_3 ? dn_3 : na, title='DownTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))



TripleSupertrend슈퍼트렌드3
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-12-11 14:05:03

안녕하세요 예스스탁입니다. input : period1(10),multiplier1(1); input : period2(11),multiplier2(2); input : period3(12),multiplier3(3); var : src(0); var : AtrV1(0),upperBand1(0),lowerBand1(0), prevLowerBand1(0), prevUpperBand1(0); var : prevSuperTrend1(0), direction1(0),alpha1(0),source1(0),SuperTrend1(C); var : AtrV2(0),upperBand2(0),lowerBand2(0), prevLowerBand2(0), prevUpperBand2(0); var : prevSuperTrend2(0), direction2(0),alpha2(0),source2(0),SuperTrend2(C); var : AtrV3(0),upperBand3(0),lowerBand3(0), prevLowerBand3(0), prevUpperBand3(0); var : prevSuperTrend3(0), direction3(0),alpha3(0),source3(0),SuperTrend3(C); var : A(0),A1(0),A2(0),B(0),B1(0),B2(0); var : Tx1(0),tx2(0),tx3(0); src = (H+L)/2; if CurrentBar > 1 Then { alpha1 = 1 / period1 ; ATrV1 = IFf(IsNan(ATrV1[1]) == true, ma(TrueRange,period1) , alpha1 * TrueRange + (1 - alpha1) * IFf(isnan(ATrV1[1])==true,0,ATrV1[1])); upperBand1 = src + multiplier1 * AtrV1; lowerBand1 = src - multiplier1 * AtrV1; prevLowerBand1 = lowerBand1[1]; prevUpperBand1 = upperBand1[1]; if lowerBand1 > prevLowerBand1 or close[1] < prevLowerBand1 Then lowerBand1 = lowerBand1; Else lowerBand1 = prevLowerBand1; if upperBand1 < prevUpperBand1 or close[1] > prevUpperBand1 Then upperBand1 = upperBand1; Else upperBand1 = prevUpperBand1; if C > UpperBand1 Then direction1 = 1; if C < LowerBand1 Then direction1 = -1; if direction1 == 1 Then SuperTrend1 = lowerband1; Else SuperTrend1 = upperband1; alpha2 = 1 / period2 ; ATRV2 = IFf(IsNan(ATRV2[1]) == true, ma(TrueRange,period2) , alpha2 * TrueRange + (1 - alpha2) * IFf(isnan(ATRV2[1])==true,0,ATRV2[1])); upperBand2 = src + multiplier2 * AtrV2; lowerBand2 = src - multiplier2 * AtrV2; prevLowerBand2 = lowerBand2[1]; prevUpperBand2 = upperBand2[1]; if lowerBand2 > prevLowerBand2 or close[1] < prevLowerBand2 Then lowerBand2 = lowerBand2; Else lowerBand2 = prevLowerBand2; if upperBand2 < prevUpperBand2 or close[1] > prevUpperBand2 Then upperBand2 = upperBand2; Else upperBand2 = prevUpperBand2; if C > UpperBand2 Then direction2 = 1; if C < LowerBand2 Then direction2 = -1; if direction2 == 1 Then SuperTrend2 = lowerband2; Else SuperTrend2 = upperband2; alpha3 = 1 / period3 ; ATRV3 = IFf(IsNan(ATRV3[1]) == true, ma(TrueRange,period3) , alpha3 * TrueRange + (1 - alpha3) * IFf(isnan(ATRV3[1])==true,0,ATRV3[1])); upperBand3 = src + multiplier3 * AtrV3; lowerBand3 = src - multiplier3 * AtrV3; prevLowerBand3 = lowerBand3[1]; prevUpperBand3 = upperBand3[1]; if lowerBand3 > prevLowerBand3 or close[1] < prevLowerBand3 Then lowerBand3 = lowerBand3; Else lowerBand3 = prevLowerBand3; if upperBand3 < prevUpperBand3 or close[1] > prevUpperBand3 Then upperBand3 = upperBand3; Else upperBand3 = prevUpperBand3; if C > UpperBand3 Then direction3 = 1; if C < LowerBand3 Then direction3 = -1; if direction3 == 1 Then SuperTrend3 = lowerband3; Else SuperTrend3 = upperband3; if direction1 == 1 Then { Plot1(SuperTrend1,"UpTrend1",Green); NoPlot(2); } Else { NoPlot(1); Plot2(SuperTrend1,"DownTrend1",Red); } if direction1 != direction1[1] Then { tx1 = Text_New(sDate,sTime,SuperTrend1,"●"); Text_SetStyle(tx1,2,2); Text_SetColor(tx1,IFf(direction1==1,Green,Red)); } if direction2 == 1 Then { Plot3(SuperTrend2,"UpTrend2",Green); NoPlot(4); } Else { NoPlot(3); Plot4(SuperTrend2,"DownTrend2",Red); } if direction2 != direction2[1] Then { tx2 = Text_New(sDate,sTime,SuperTrend2,"●"); Text_SetStyle(tx2,2,2); Text_SetColor(tx2,IFf(direction2==1,Green,Red)); } if direction3 == 1 Then { Plot5(SuperTrend3,"UpTrend3",Green); NoPlot(6); } Else { NoPlot(5); Plot6(SuperTrend3,"DownTrend3",Red); } if direction3 != direction3[1] Then { tx3 = Text_New(sDate,sTime,SuperTrend3,"●"); Text_SetStyle(tx3,2,2); Text_SetColor(tx3,IFf(direction3==1,Green,Red)); } } 즐거운 하루되세요