PROTECTED SOURCE SCRIPT

Majkl Manzalovic

24
//version=5
indicator("Majkl Manzalovic", overlay=true, max_lines_count=500)

// ── Inputs ─────────────────────────────────────────
grpB = "Osnovno"
src = input.source(open, "Izvor (za VWAP dev.)", group=grpB)
resetMode = input.string("Dnevno", "VWAP reset", options=["Dnevno","Nedeljno","Mesečno","Nikad"], group=grpB)
// Senčenje isključeno po difoltu
showFill = input.bool(false, "Senčenje između linija", group=grpB)

grpM = "Metoda rastojanja"
method = input.string("StdDev", "Metoda", options=["StdDev","ATR","Pips/poeni"], group=grpM)
atrLen = input.int(14, "ATR dužina", minval=1, group=grpM)
pip = input.float(0.0001, "Vrednost 1 pipa/poena", step=0.0001, group=grpM)

// Gornji pojasevi
grpU = "Gornji pojasevi (iznad plave)"
u1v = input.float(1.23, "Gornji 1 – faktor/poeni", step=0.01, group=grpU)
u1s = input.float(0.0, "Gornji 1 – ručni pomak", step=0.0001, group=grpU)
u2v = input.float(1.9, "Gornji 2 – faktor/poeni", step=0.01, group=grpU)
u2s = input.float(0.0, "Gornji 2 – ručni pomak", step=0.0001, group=grpU)
u3v = input.float(2.3, "Gornji 3 – faktor/poeni", step=0.01, group=grpU)
u3s = input.float(0.0, "Gornji 3 – ručni pomak", step=0.0001, group=grpU)
u4v = input.float(3.0, "Gornji 4 – faktor/poeni", step=0.01, group=grpU)
u4s = input.float(0.0, "Gornji 4 – ručni pomak", step=0.0001, group=grpU)

// Donji pojasevi
grpD = "Donji pojasevi (ispod plave)"
d1v = input.float(1.23, "Donji 1 – faktor/poeni", step=0.01, group=grpD)
d1s = input.float(0.0, "Donji 1 – ručni pomak", step=0.0001, group=grpD)
d2v = input.float(1.9, "Donji 2 – faktor/poeni", step=0.01, group=grpD)
d2s = input.float(0.0, "Donji 2 – ručni pomak", step=0.0001, group=grpD)
d3v = input.float(2.3, "Donji 3 – faktor/poeni", step=0.01, group=grpD)
d3s = input.float(0.0, "Donji 3 – ručni pomak", step=0.0001, group=grpD)
d4v = input.float(3.0, "Donji 4 – faktor/poeni", step=0.01, group=grpD)
d4s = input.float(0.0, "Donji 4 – ručni pomak", step=0.0001, group=grpD)

// ── Boje ───────────────────────────────────────────
cMid = color.new(color.blue, 0)
cUp = color.new(color.red, 0)
cDn = color.new(color.green, 0)
cFillUp = color.new(color.red, 85)
cFillDn = color.new(color.green, 85)
cFillOff = color.new(color.white, 100)

// ── VWAP i reset logika ────────────────────────────
vwap = ta.vwap(src)

var float sum = na
var float sum2 = na
var float n = na

bool isNew = false
if resetMode == "Dnevno"
isNew := ta.change(time("D"))
else if resetMode == "Nedeljno"
isNew := ta.change(time("W"))
else if resetMode == "Mesečno"
isNew := ta.change(time("M"))
else
isNew := false

if isNew
sum := 0.0, sum2 := 0.0, n := 0.0
if na(sum)
sum := 0.0, sum2 := 0.0, n := 0.0

sum += src
sum2 += src*src
n += 1.0
mean = n > 0 ? sum/n : na
stdev = n > 0 ? math.sqrt(math.max(sum2/n - mean*mean, 0.0)) : na
atr = ta.atr(atrLen)

// Rastojanje prema metodi
f_dist(mult) =>
method == "StdDev" ? mult * nz(stdev, 0) :
method == "ATR" ? mult * atr :
mult * pip

// ── Pojasevi ───────────────────────────────────────
u1 = vwap + f_dist(u1v) + u1s
u2 = vwap + f_dist(u2v) + u2s
u3 = vwap + f_dist(u3v) + u3s
u4 = vwap + f_dist(u4v) + u4s

d1 = vwap - f_dist(d1v) - d1s
d2 = vwap - f_dist(d2v) - d2s
d3 = vwap - f_dist(d3v) - d3s
d4 = vwap - f_dist(d4v) - d4s

// ── Plot ──────────────────────────────────────────
pMid = plot(vwap, title="VWAP (plava)", color=cMid, linewidth=2)

pU1 = plot(u1, title="Gornji 1", color=cUp, linewidth=2) // deblji
pU2 = plot(u2, title="Gornji 2", color=cUp, linewidth=1)
pU3 = plot(u3, title="Gornji 3", color=cUp, linewidth=1)
pU4 = plot(u4, title="Gornji 4", color=cUp, linewidth=1)

pD1 = plot(d1, title="Donji 1", color=cDn, linewidth=2) // deblji
pD2 = plot(d2, title="Donji 2", color=cDn, linewidth=1)
pD3 = plot(d3, title="Donji 3", color=cDn, linewidth=1)
pD4 = plot(d4, title="Donji 4", color=cDn, linewidth=1)

// ── Senčenje (ostavljeno ali podrazumevano off) ────
fill(pMid, pU1, color = showFill ? cFillUp : cFillOff)
fill(pU1, pU2, color = showFill ? cFillUp : cFillOff)
fill(pU2, pU3, color = showFill ? cFillUp : cFillOff)
fill(pU3, pU4, color = showFill ? cFillUp : cFillOff)

fill(pMid, pD1, color = showFill ? cFillDn : cFillOff)
fill(pD1, pD2, color = showFill ? cFillDn : cFillOff)
fill(pD2, pD3, color = showFill ? cFillDn : cFillOff)
fill(pD3, pD4, color = showFill ? cFillDn : cFillOff)

Disclaimer

The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.