커뮤니티

문의

프로필 이미지
레전드
2026-04-10 07:05:58
562
글번호 231552
답변완료

indicator("zero lag up", shorttitle="zero lag up", overlay=true)

length = input.int(70, "Length", tooltip = "The Look-Back window for the Zero-Lag EMA calculations", group = "Main Calculations")

mult = input.float(1.2, "Band Multiplier", tooltip = "This value controls the thickness of the bands, a larger value makes the indicato less noisy", group = "Main Calculations")

t1 = input.timeframe("5", "Time frame 1", group = "Extra Timeframes")

t2 = input.timeframe("15", "Time frame 2", group = "Extra Timeframes")

t3 = input.timeframe("60", "Time frame 3", group = "Extra Timeframes")

t4 = input.timeframe("240", "Time frame 4", group = "Extra Timeframes")

t5 = input.timeframe("1D", "Time frame 5", group = "Extra Timeframes")

green = input.color(#00ffbb, "Bullish Color", group = "Appearance")

red = input.color(#ff1100, "Bearish Color", group = "Appearance")


src = close

lag = math.floor((length - 1) / 2)

zlema = ta.ema(src + (src - src[lag]), length)


volatility = ta.highest(ta.atr(length), length*3) * mult


var trend = 0


if ta.crossover(close, zlema+volatility)

trend := 1


if ta.crossunder(close, zlema-volatility)

trend := -1


zlemaColor = trend == 1 ? color.new(green, 70) : color.new(red, 70)

m = plot(zlema, title="Zero Lag Basis", linewidth=2, color=zlemaColor)

upper = plot(trend == -1 ? zlema+volatility : na, style = plot.style_linebr, color = color.new(red, 90), title = "Upper Deviation Band")

lower = plot(trend == 1 ? zlema-volatility : na, style = plot.style_linebr, color = color.new(green, 90), title = "Lower Deviation Band")


fill(m, upper, (open + close) / 2, zlema+volatility, color.new(red, 90), color.new(red, 70))

fill(m, lower, (open + close) / 2, zlema-volatility, color.new(green, 90), color.new(green, 70))


plotshape(ta.crossunder(trend, 0) ? zlema+volatility : na, "Bearish Trend", shape.labeldown, location.absolute, red, text = "▼", textcolor = chart.fg_color, size = size.small)

plotshape(ta.crossover(trend, 0) ? zlema-volatility : na, "Bullish Trend", shape.labelup, location.absolute, green, text = "▲", textcolor = chart.fg_color, size = size.small)


plotchar(ta.crossover(close, zlema) and trend == 1 and trend[1] == 1 ? zlema-volatility*1.5 : na, "Bullish Entry", "▲", location.absolute, green, size = size.tiny)

plotchar(ta.crossunder(close, zlema) and trend == -1 and trend[1] == -1 ? zlema+volatility*1.5 : na, "Bearish Entry", "▼", location.absolute, red, size = size.tiny)


s1 = request.security(syminfo.tickerid, t1, trend)

s2 = request.security(syminfo.tickerid, t2, trend)

s3 = request.security(syminfo.tickerid, t3, trend)

s4 = request.security(syminfo.tickerid, t4, trend)

s5 = request.security(syminfo.tickerid, t5, trend)


s1a = s1 == 1 ? "Bullish" : "Bearish"

s2a = s2 == 1 ? "Bullish" : "Bearish"

s3a = s3 == 1 ? "Bullish" : "Bearish"

s4a = s4 == 1 ? "Bullish" : "Bearish"

s5a = s5 == 1 ? "Bullish" : "Bearish"


if barstate.islast

var data_table = table.new(position=position.top_right, columns=2, rows=6, bgcolor=chart.bg_color, border_width=1, border_color=chart.fg_color, frame_color=chart.fg_color, frame_width=1)

table.cell(data_table, text_halign=text.align_center, column=0, row=0, text="Time Frame", text_color=chart.fg_color)

table.cell(data_table, text_halign=text.align_center, column=1, row=0, text="Signal", text_color=chart.fg_color)


table.cell(data_table, text_halign=text.align_center, column=0, row=1, text=t1, text_color=chart.fg_color)

table.cell(data_table, text_halign=text.align_center, column=1, row=1, text=s1a, text_color=chart.fg_color, bgcolor=s1a == "Bullish" ? color.new(green, 70) : color.new(red, 70))


table.cell(data_table, text_halign=text.align_center, column=0, row=2, text=t2, text_color=chart.fg_color)

table.cell(data_table, text_halign=text.align_center, column=1, row=2, text=s2a, text_color=chart.fg_color, bgcolor=s2a == "Bullish" ? color.new(green, 70) : color.new(red, 70))


table.cell(data_table, text_halign=text.align_center, column=0, row=3, text=t3, text_color=chart.fg_color)

table.cell(data_table, text_halign=text.align_center, column=1, row=3, text=s3a, text_color=chart.fg_color, bgcolor=s3a == "Bullish" ? color.new(green, 70) : color.new(red, 70))


table.cell(data_table, text_halign=text.align_center, column=0, row=4, text=t4, text_color=chart.fg_color)

table.cell(data_table, text_halign=text.align_center, column=1, row=4, text=s4a, text_color=chart.fg_color, bgcolor=s4a == "Bullish" ? color.new(green, 70) : color.new(red, 70))


table.cell(data_table, text_halign=text.align_center, column=0, row=5, text=t5, text_color=chart.fg_color)

table.cell(data_table, text_halign=text.align_center, column=1, row=5, text=s5a, text_color=chart.fg_color, bgcolor=s5a == "Bullish" ? color.new(green, 70) : color.new(red, 70))


alertcondition(ta.crossover(close, zlema) and trend == 1 and trend[1] == 1, "Bullish Entry Signal",

message="Bullish Entry Signal detected. Consider entering a long position.")

alertcondition(ta.crossunder(close, zlema) and trend == -1 and trend[1] == -1, "Bearish Entry Signal",

message="Bearish Entry Signal detected. Consider entering a short position.")


alertcondition(ta.crossover(trend, 0), "Bullish Trend")

alertcondition(ta.crossunder(trend, 0), "Bearish Trend")

alertcondition(ta.cross(trend, 0), "(Bullish or Bearish) Trend")


alertcondition(ta.crossover(s1, 0), "Bullish Trend Time Frame 1")

alertcondition(ta.crossunder(s1, 0), "Bearish Trend Time Frame 1")

alertcondition(ta.cross(s1, 0), "(Bullish or Bearish) Trend Time Frame 1")


alertcondition(ta.crossover(s2, 0), "Bullish Trend Time Frame 2")

alertcondition(ta.crossunder(s2, 0), "Bearish Trend Time Frame 2")

alertcondition(ta.cross(s2, 0), "(Bullish or Bearish) Trend Time Frame 2")


alertcondition(ta.crossover(s3, 0), "Bullish Trend Time Frame 3")

alertcondition(ta.crossunder(s3, 0), "Bearish Trend Time Frame 3")

alertcondition(ta.cross(s3, 0), "(Bullish or Bearish) Trend Time Frame 3")


alertcondition(ta.crossover(s4, 0), "Bullish Trend Time Frame 4")

alertcondition(ta.crossunder(s4, 0), "Bearish Trend Time Frame 4")

alertcondition(ta.cross(s4, 0), "(Bullish or Bearish) Trend Time Frame 4")


alertcondition(ta.crossover(s5, 0), "Bullish Trend Time Frame 5")

alertcondition(ta.crossunder(s5, 0), "Bearish Trend Time Frame 5")

alertcondition(ta.cross(s5, 0), "(Bullish or Bearish) Trend Time Frame 5")


alertcondition(ta.crossover(close, zlema) and trend == 1 and trend[1] == 1, "Bullish Entry")

alertcondition(ta.crossunder(close, zlema) and trend == -1 and trend[1] == -1, "Bearish Entry")


len = input.int(14, "길이", minval=1)

offsetFwd = input.int(2, "오프셋(+)", minval=0, maxval=200)


alphaAB = input.int(80, "A–B 구름 투명도", minval=0, maxval=100)

alphaAC = input.int(65, "A–C 구름 투명도", minval=0, maxval=100)


f_mid(h,l,n) => (ta.highest(h,n) + ta.lowest(l,n)) * 0.5


midA = f_mid(high, low, len)

midB = f_mid(high, low, len*2)

midC = f_mid(high, low, len*4)


colA = close >= midA ? color.teal : color.red

pA = plot(midA, title="Lead A", offset=offsetFwd, color=colA, linewidth=2)


pB = plot(midB, title="Lead B", offset=offsetFwd, display=display.none)

pC = plot(midC, title="Lead C", offset=offsetFwd, display=display.none)


bullAB = color.new(#22B8A8, alphaAB)

bearAB = color.new(#D94B48, alphaAB)

bullAC = color.new(#22B8A8, alphaAC)

bearAC = color.new(#D94B48, alphaAC)



fill(pA, pB, color = midA >= midB ? bullAB : bearAB, title="AB Cloud")

fill(pA, pC, color = midA >= midC ? bullAC : bearAC, title="AC Cloud")

부탁드립니다


지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-04-10 15:15:32

안녕하세요 예스스탁입니다. 올려주신 내용에 다른 주기 데이터를 이용하는 부분이 있는데 내용상 기본종목에서 모두 계산이 가능하지 않습니다. 그러므로 차트에 참조데이터를 추가하고 적용하셔야 합니다.

위 그림과 같이 기본종목 제외 5개의 데이터(data2~data6)를 추가하고 아래식 적용하셔야 합니다. 지표사이의 색채우기는 수식에서 가능하지 않으므로 지표속성창의 채우기 기능이용해 직접 설정하셔야 합니다. input : length(70); input : mult(1.2); var : src(0,Data1),lag(0,Data1),zlema(0,Data1),volatility(0,Data1),trend(0,Data1),zlemaColor(0,Data1),tx(0,Data1); src = close; lag = floor((length - 1) / 2); zlema = ema(src + (src - src[lag]), length); volatility = highest(atr(length), length*3) * mult; if CrossUp(close, zlema+volatility) Then trend = 1; if CrossDown(close, zlema-volatility) Then trend = -1; zlemaColor = iff(trend == 1 , green , red); plot1(zlema, "Zero Lag Basis",zlemaColor); if trend == -1 Then plot2(zlema+volatility ,"Upper Deviation Band",Red); Else NoPlot(2); if trend == 1 Then plot3(zlema-volatility,"Lower Deviation Band",Green); Else NoPlot(3); if CrossDown(trend,0) Then { tx = Text_New(sDate,sTime,zlema+volatility,"▼"); Text_SetStyle(tx,2,1); Text_SetColor(tx,Red); } if CrossUp(trend,0) Then { tx = Text_New(sDate,sTime,zlema-volatility,"▲"); Text_SetStyle(tx,2,0); Text_SetColor(tx,Green); } var : src1(0,Data2),lag1(0,Data2),zlema1(0,Data2),volatility1(0,Data2),S1(0,Data2); src1 = data2(close); lag1 = data2(floor((length - 1) / 2)); zlema1 = data2(ema(src + (src - src[lag]), length)); volatility1 = data2(highest(atr(length), length*3) * mult); if data2(CrossUp(close, zlema1+volatility1)) Then s1 = 1; if data2(CrossDown(close, zlema1-volatility1)) Then s1 = -1; var : src2(0,Data3),lag2(0,Data3),zlema2(0,Data3),volatility2(0,Data3),S2(0,Data3); src2 = data3(close); lag2 = data3(floor((length - 1) / 2)); zlema2 = data3(ema(src + (src - src[lag]), length)); volatility2 = data3(highest(atr(length), length*3) * mult); if data3(CrossUp(close, zlema2+volatility2)) Then s2 = 1; if data3(CrossDown(close, zlema2-volatility2)) Then s2 = -1; var : src3(0,Data4),lag3(0,Data4),zlema3(0,Data4),volatility3(0,Data4),S3(0,Data4); src3 = data4(close); lag3 = data4(floor((length - 1) / 2)); zlema3 = data4(ema(src + (src - src[lag]), length)); volatility3 = data4(highest(atr(length), length*3) * mult); if data4(CrossUp(close, zlema3+volatility3)) Then s3 = 1; if data4(CrossDown(close, zlema3-volatility3)) Then s3 = -1; var : src4(0,Data5),lag4(0,Data5),zlema4(0,Data5),volatility4(0,Data5),S4(0,Data5); src4 = data5(close); lag4 = data5(floor((length - 1) / 2)); zlema4 = data5(ema(src + (src - src[lag]), length)); volatility4 = data5(highest(atr(length), length*3) * mult); if data5(CrossUp(close, zlema4+volatility4)) Then s4 = 1; if data5(CrossDown(close, zlema4-volatility4)) Then s4 = -1; var : src5(0,Data6),lag5(0,Data6),zlema5(0,Data6),volatility5(0,Data6),S5(0,Data6); src5 = data6(close); lag5 = data6(floor((length - 1) / 2)); zlema5 = data6(ema(src + (src - src[lag]), length)); volatility5 = data6(highest(atr(length), length*3) * mult); if data6(CrossUp(close, zlema5+volatility5)) Then s5 = 1; if data6(CrossDown(close, zlema5-volatility5)) Then s5 = -1; var : s1a(""),s2a(""),s3a(""),s4a(""),s5a(""); if s1 == 1 Then s1a = "Bullish"; Else s1a = "Bearish"; if s2 == 1 Then s2a = "Bullish"; Else s2a = "Bearish"; if s3 == 1 Then s3a = "Bullish"; Else s3a = "Bearish"; if s4 == 1 Then s4a = "Bullish"; Else s4a = "Bearish"; if s5 == 1 Then s5a = "Bullish"; Else s5a = "Bearish"; var : Grid(0),i1(""),i2(""),i3(""),i4(""),i5(""); if data2(DataCompress) == 0 Then i1 = data2(NumToStr(BarInterval,0))+"틱"; if data2(DataCompress) == 1 Then i1 = data2(NumToStr(BarInterval,0))+"초"; if data2(DataCompress) == 2 Then i1 = data2(NumToStr(BarInterval,0))+"분"; if data2(DataCompress) == 3 Then i1 = "일"; if data2(DataCompress) == 4 Then i1 = "주"; if data2(DataCompress) == 5 Then i1 = "월"; if data3(DataCompress) == 0 Then i2 = data3(NumToStr(BarInterval,0))+"틱"; if data3(DataCompress) == 1 Then i2 = data3(NumToStr(BarInterval,0))+"초"; if data3(DataCompress) == 2 Then i2 = data3(NumToStr(BarInterval,0))+"분"; if data3(DataCompress) == 3 Then i2 = "일"; if data3(DataCompress) == 4 Then i2 = "주"; if data3(DataCompress) == 5 Then i2 = "월"; if data4(DataCompress) == 0 Then i3 = data4(NumToStr(BarInterval,0))+"틱"; if data4(DataCompress) == 1 Then i3 = data4(NumToStr(BarInterval,0))+"초"; if data4(DataCompress) == 2 Then i3 = data4(NumToStr(BarInterval,0))+"분"; if data4(DataCompress) == 3 Then i3 = "일"; if data4(DataCompress) == 4 Then i3 = "주"; if data4(DataCompress) == 5 Then i3 = "월"; if data5(DataCompress) == 0 Then i4 = data5(NumToStr(BarInterval,0))+"틱"; if data5(DataCompress) == 1 Then i4 = data5(NumToStr(BarInterval,0))+"초"; if data5(DataCompress) == 2 Then i4 = data5(NumToStr(BarInterval,0))+"분"; if data5(DataCompress) == 3 Then i4 = "일"; if data5(DataCompress) == 4 Then i4 = "주"; if data5(DataCompress) == 5 Then i4 = "월"; if data6(DataCompress) == 0 Then i5 = data6(NumToStr(BarInterval,0))+"틱"; if data6(DataCompress) == 1 Then i5 = data6(NumToStr(BarInterval,0))+"초"; if data6(DataCompress) == 2 Then i5 = data6(NumToStr(BarInterval,0))+"분"; if data6(DataCompress) == 3 Then i5 = "일"; if data6(DataCompress) == 4 Then i5 = "주"; if data6(DataCompress) == 5 Then i5 = "월"; if Index == 0 Then { Grid = Grid_New(1, 2, 6,White, Gray, 1, Gray, 0); } if LastBarOnChart == 1 Then { Grid_Cell(Grid,0,0,"Time Frame",0,0,White,Black); Grid_Cell(Grid,1,0,"Signal",0,0,White,Black); Grid_Cell(Grid,0,1,i1,0,0,BLACK,gray); Grid_Cell(Grid,1,1,s1a,0,0,BLACK,iff(s1==1,green,LightRed)); Grid_Cell(Grid,0,2,i2,0,0,BLACK,gray); Grid_Cell(Grid,1,2,s2a,0,0,BLACK,iff(s2==1,green,LightRed)); Grid_Cell(Grid,0,3,i3,0,0,BLACK,gray); Grid_Cell(Grid,1,3,s3a,0,0,BLACK,iff(s3==1,green,LightRed)); Grid_Cell(Grid,0,4,i4,0,0,BLACK,gray); Grid_Cell(Grid,1,4,s4a,0,0,BLACK,iff(s4==1,green,LightRed)); Grid_Cell(Grid,0,5,i5,0,0,BLACK,gray); Grid_Cell(Grid,1,5,s5a,0,0,BLACK,iff(s5==1,green,LightRed)); } input : len(14); input : offsetFwd(2); input : alphaAB(80); input : alphaAC(65); var : midA(0),midB(0),MidC(0),colA(0); midA = (highest(h,len) + lowest(l,len)) * 0.5; midB = (highest(h,len*2) + lowest(l,len*2)) * 0.5; midC = (highest(h,len*2) + lowest(l,len*4)) * 0.5; colA = iff(close >= midA ,teal , red); plot4(midA, "Lead A", colA); FixPlotShift(4,2); plot5(midB, "Lead B"); plot6(midC, "Lead C"); FixPlotShift(5,2); FixPlotShift(6,2); 즐거운 하루되세요