커뮤니티

부탁합니다.

프로필 이미지
newstory
2026-02-05 05:11:33
200
글번호 230336
답변완료

안녕하세요.

아래 트레딩뷰 지표 변환부탁 드리며, 추운 날씨에 건강관리 잘하세요.



//@version=4


// MACD

src1 = close

window_len = 28


v_len = 14

price_spread = stdev(high-low, window_len)


v = cum(sign(change(src1)) * volume)

smooth = sma(v, v_len)

v_spread = stdev(v - smooth, window_len)

shadow = (v - smooth) / v_spread * price_spread


out = shadow > 0 ? high + shadow : low + shadow


len10=input(1,title="OBV Length ")

obvema=ema(out,len10)


//

src = obvema


type = input(defval="DEMA", title="MA Type", options=["TDEMA", "TTEMA", "TEMA", "DEMA", "EMA", "AVG", "THMA", "ZLEMA", "ZLDEMA", "ZLTEMA", "DZLEMA", "TZLEMA", "LLEMA", "NMA"])

showma = true

len = input(9, title="MA Length ")

showma1 = false

len1 = 26

showma2 =false

len2 = 52


nma(src, length1, length2) =>

lambda = length1 / length2

alpha = lambda * (length1 - 1) / (length1 - lambda)

ma1 = ema(src, length1)

ma2 = ema(ma1, length2)

nma = (1 + alpha) * ma1 - alpha * ma2

dema(src, len) =>

ma1 = ema(src, len)

ma2 = ema(ma1, len)

2 * ma1 - ma2


tema(src, len) =>

ma1 = ema(src, len)

ma2 = ema(ma1, len)

ma3 = ema(ma2, len)

3 * (ma1 - ma2) + ma3


tdema(src, len) =>

ma1 = dema(src, len)

ma2 = dema(ma1, len)

ma3 = dema(ma2, len)

3 * (ma1 - ma2) + ma3


ttema(src, len) =>

ma1 = tema(src, len)

ma2 = tema(ma1, len)

ma3 = tema(ma2, len)

3 * (ma1 - ma2) + ma3


tnma(src, len) =>

ma1 = nma(src, len, 3)

ma2 = nma(ma1, len, 3)

ma3 = nma(ma2, len, 3)

3 * (ma1 - ma2) + ma3


hma(src, len) => wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))


thma(src, len) =>

ma1 = hma(src, len)

ma2 = hma(ma1, len)

ma3 = hma(ma2, len)

3 * (ma1 - ma2) + ma3


zlema(src, len) =>

lag = round((len - 1) / 2)

zlsrc = src + (src - src[lag])

ema(zlsrc, len)


zldema(src, len) =>

lag = round((len - 1) / 2)

zlsrc = src + (src - src[lag])

dema(zlsrc, len)

zltema(src, len) =>

lag = round((len - 1) / 2)

zlsrc = src + (src - src[lag])

tema(zlsrc, len)

dzlema(src, len) =>

ma1 = zlema(src, len)

ma2 = zlema(ma1, len)

2 * ma1 - ma2


tzlema(src, len) =>

ma1 = zlema(src, len)

ma2 = zlema(ma1, len)

ma3 = zlema(ma2, len)

3 * (ma1 - ma2) + ma3


llema(src, len) =>

srcnew = 0.25*src + 0.5*src[1] + 0.25*src[2]

ema(srcnew, len)

lltema(src, len) =>

srcnew = 0.25*src + 0.5*src[1] + 0.25*src[2]

tema(srcnew, len)


myma(src, len) =>

if type == "EMA"

ema(src, len)

else

if type == "DEMA"

dema(src, len)

else

if type == "TEMA"

tema(src, len)

else

if type == "TDEMA"

tdema(src, len)

else

if type == "TTEMA"

ttema(src, len)

else

if type == "THMA"

thma(src, len)

else

if type == "ZLEMA"

zlema(src, len)

else

if type == "ZLDEMA"

zldema(src, len)

else

if type == "ZLTEMA"

zltema(src, len)

else

if type == "DZLEMA"

dzlema(src, len)

else

if type == "TZLEMA"

tzlema(src, len)

else

if type == "LLEMA"

llema(src, len)

else

if type == "NMA"

nma(src, len, len1)

else

avg(ttema(src, len), tdema(src, len))

ma = showma ? myma(src, len) : na

slow_length = input(title="MACD Slow Length", type=input.integer, defval=26)

//signal_length = input(title="MACD Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)

src12=close

plot(0,linewidth=3,color=color.black)

// Calculating MACD

slow_ma = ema(src12, slow_length)

macd =ma-slow_ma

//signal_length=input(9)

//signal = ema(macd, signal_length)

//plot(signal,linewidth=2)

src5 = macd

len5 = input(2)

offset = 0


calcSlope(src5, len5) =>

sumX = 0.0

sumY = 0.0

sumXSqr = 0.0

sumXY = 0.0

for i = 1 to len5

val = src5[len5-i]

per = i + 1.0

sumX := sumX + per

sumY := sumY + val

sumXSqr := sumXSqr + per * per

sumXY := sumXY + val * per

slope = (len5 * sumXY - sumX * sumY) / (len5 * sumXSqr - sumX * sumX)

average = sumY / len5

intercept = average - slope * sumX / len5 + slope

[slope, average, intercept]


var float tmp = na

[s, a5, i] = calcSlope(src5, len5)


tt1=(i + s * (len5 - offset))


//---

p = 1,src15=tt1

b5 = 0.,dev5 = 0.,oc = 0

n5 = cum(1) - 1

a15 = cum(abs(src15 - nz(b5[1],src15)))/n5*p

b5 := src15 > nz(b5[1],src15) + a15 ? src15 : src15 < nz(b5[1],src15) - a15 ? src15 : nz(b5[1],src15)

//----

dev5 := change(b5) ? a15 : nz(dev5[1],a15)


//----

oc := change(b5) > 0 ? 1 : change(b5) < 0 ? -1 : nz(oc[1])

//----

cs = oc == 1 ? color.blue : color.red

//change(oc)>0

plot(b5,color=cs,linewidth=4,transp=50)

//


down = change(oc)<0

up = change(oc)>0

showsignal=input(false)

plot(showsignal and up ?tt1 :na, style=plot.style_cross, color=color.blue, linewidth=4, transp=0,offset=-1)

plot(showsignal and down ?tt1 :na, style=plot.style_cross, color=color.red, linewidth=4, transp=0,offset=-1)


지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-02-05 14:48:37

안녕하세요 예스스탁입니다. input :window_len(28),v_len(14),len10(1); var : src1(0),price_spread(0),vv(0),smooth(0); var : v_spread(0),shadow(0),out(0),obvema(0),src(0); src1 = close; price_spread = std(high-low, window_len); vv = Accum(sin(src1-src1[1]) * volume); smooth = ma(vv, v_len); v_spread = std(vv - smooth, window_len); shadow = (vv - smooth) / v_spread * price_spread; out = iff(shadow > 0 , high + shadow , low + shadow); obvema=ema(out,len10); src = obvema; input : type("DEMA");#["TDEMA", "TTEMA", "TEMA", "DEMA", "EMA", "AVG", "THMA", "ZLEMA", "ZLDEMA", "ZLTEMA", "DZLEMA", "TZLEMA", "LLEMA", "NMA"]) input : showma(true); input : len(9); input : showma1(false); input : len1(26); input : showma2f(false); input : len2(52); var : myma(0); Function nma { input : src(Numeric),length1(Numeric),Length2(Numeric); var : lambda(0),alpha(0),ma1(0),ma2(0); lambda = length1 / length2; alpha = lambda * (length1 - 1) / (length1 - lambda); ma1 = ema(src, length1); ma2 = ema(ma1, length2); nma = (1 + alpha) * ma1 - alpha * ma2; } EndFunction Function dema { input : src(Numeric),len(Numeric); var : ma1(0),ma2(0); ma1 = ema(src, len); ma2 = ema(ma1, len); dema = 2 * ma1 - ma2; } EndFunction Function tema { input : src(Numeric),len(Numeric); var : ma1(0),ma2(0),ma3(0); ma1 = ema(src, len); ma2 = ema(ma1, len); ma3 = ema(ma2, len); tema = 3 * (ma1 - ma2) + ma3; } EndFunction Function tdema { input : src(Numeric),len(Numeric); var : ma1(0),ma2(0),ma3(0); ma1 = dema(src, len); ma2 = dema(ma1, len); ma3 = dema(ma2, len); tdema = 3 * (ma1 - ma2) + ma3; } EndFunction Function ttema { input : src(Numeric),len(Numeric); var : ma1(0),ma2(0),ma3(0); ma1 = tema(src, len); ma2 = tema(ma1, len); ma3 = tema(ma2, len); ttema = 3 * (ma1 - ma2) + ma3; } EndFunction Function tnma { input : src(Numeric),len(Numeric); var : ma1(0),ma2(0),ma3(0); ma1 = nma(src, len, 3); ma2 = nma(ma1, len, 3); ma3 = nma(ma2, len, 3); tnma = 3 * (ma1 - ma2) + ma3; } EndFunction Function hma { input : src(Numeric),len(Numeric); hma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len),0)); } EndFunction Function thma { input : src(Numeric),len(Numeric); var : ma1(0),ma2(0),ma3(0); ma1 = hma(src, len); ma2 = hma(ma1, len); ma3 = hma(ma2, len); thma = 3 * (ma1 - ma2) + ma3; } EndFunction Function zlema { input : src(Numeric),len(Numeric); var : lag(0),zlsrc(0); lag = round((len - 1) / 2,0); zlsrc = src + (src - src[lag]); zlema = ema(zlsrc, len); } EndFunction Function zldema { input : src(Numeric),len(Numeric); var : lag(0),zlsrc(0); lag = round((len - 1) / 2,0); zlsrc = src + (src - src[lag]); zldema = dema(zlsrc, len) ; } EndFunction Function zltema { input : src(Numeric),len(Numeric); var : lag(0),zlsrc(0); lag = round((len - 1) / 2,0); zlsrc = src + (src - src[lag]); zltema = tema(zlsrc, len); } EndFunction Function dzlema { input : src(Numeric),len(Numeric); var : ma1(0),ma2(0); ma1 = zlema(src, len); ma2 = zlema(ma1, len); dzlema = 2 * ma1 - ma2; } EndFunction Function tzlema { input : src(Numeric),len(Numeric); var : ma1(0),ma2(0),ma3(0); ma1 = zlema(src, len); ma2 = zlema(ma1, len); ma3 = zlema(ma2, len); tzlema = 3 * (ma1 - ma2) + ma3; } EndFunction Function llema { input : src(Numeric),len(Numeric); var : srcnew(0); srcnew = 0.25*src + 0.5*src[1] + 0.25*src[2]; llema = ema(srcnew, len); } EndFunction Function lltema { input : src(Numeric),len(Numeric); var : ma1(0),ma2(0),ma3(0); srcnew = 0.25*src + 0.5*src[1] + 0.25*src[2] lltema = tema(srcnew, len); } EndFunction if type == "EMA" Then myma = ema(src, len); else if type == "DEMA" Then myma = dema(src, len); else if type == "TEMA" Then myma = tema(src, len); else if type == "TDEMA" Then myma = tdema(src, len); else if type == "TTEMA" Then myma = ttema(src, len); else if type == "THMA" Then myma = thma(src, len); else if type == "ZLEMA" Then myma = zlema(src, len); else if type == "ZLDEMA" Then myma = zldema(src, len); else if type == "ZLTEMA" Then myma = zltema(src, len); else if type == "DZLEMA" Then myma = dzlema(src, len); else if type == "TZLEMA" Then myma = tzlema(src, len); else if type == "LLEMA" Then myma = llema(src, len); else if type == "NMA" Then myma = nma(src, len, len1); else myma = avg(ttema(src, len), tdema(src, len)); input : slow_length(26); var : mav(0); var : src12(0),slow_ma(0),macdv(0); var : src5(0); mav = iff(showma , myma, Nan); src12=close; plot1(0,"0선",black); slow_ma = ema(src12, slow_length); macdv = mav-slow_ma; src5 = macdv; input : len5(2); input : offset(0); Function calcSlope { input : src5(Numeric),len5(Numeric),slope(NumericRef),average(NumericRef),intercept(NumericRef); var : sumX(0),sumY(0),sumXSqr(0),sumXY(0),i(0),val(0),per(0); sumX = 0.0; sumY = 0.0; sumXSqr = 0.0; sumXY = 0.0; for i = 1 to len5 { val = src5[len5-i]; per = i + 1.0; sumX = sumX + per; sumY = sumY + val; sumXSqr = sumXSqr + per * per; sumXY = sumXY + val * per; } slope = (len5 * sumXY - sumX * sumY) / (len5 * sumXSqr - sumX * sumX); average = sumY / len5; intercept = average - slope * sumX / len5 + slope; calcSlope = 1; } EndFunction var : tmp(Nan); var : s(0),a5(0),i(0),tt1(0); var1 = calcSlope(src5, len5,s,a5,i); tt1 = (i + s * (len5 - offset)); var : p(0),src15(0),b5(0),dev5(0),oc(0); var : n5(09),a15(0),cs(0); p = 1; src15=tt1; b5 = 0; dev5 = 0; oc = 0; n5 = Accum(1) - 1; a15 = Accum(abs(src15 - IFF(IsNaN(b5[1])==true,src15,b5[1])))/n5*p; b5 = iff(src15 > IFF(IsNaN(b5[1])==true,src15,b5[1]) + a15 , src15 , iff(src15 < IFF(IsNaN(b5[1])==true,src15,b5[1]) - a15 , src15 , IFF(IsNaN(b5[1])==true,src15,b5[1]))); dev5 = iff(b5-b5[1] != 0 , a15 , IFF(IsNaN(dev5[1])==true,a15,dev5[1])); oc = iff(b5-b5[1] > 0 , 1 , IFF(b5-b5[1] < 0 , -1 , iff(IsNan(oc[1])==true,0,oc[1]))); cs = iff(oc == 1 , blue , red); plot2(b5,"b5",cs); var : down(False),up(False); down = b5-b5[1] <0; up = b5-b5[1]>0; input : showsignal(false); if showsignal == true and up Then { plot3(tt1,"up",blue); FixPlotShift(3,-1); } Else NoPlot(3); if showsignal == true and down Then { plot4(tt1,"up",Red); FixPlotShift(3,-1); } Else NoPlot(4); 즐거운 하루되세요