OPEN-SOURCE SCRIPT

VIXO - VIX Oscillator

113
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org/MPL/2.0/
// © emreiletrade

//version=6
indicator(title="VIXO - VIX Oscillator", shorttitle="VIXO", overlay=false)

// === Inputs ===
rsiLen = input.int(defval=14, title="RSI Length", minval=11, maxval=55)
momLen = input.int(defval=11, title="Momentum Length", minval=9, maxval=21)
normLookback = input.int(defval=100, title="Momentum Normalization Lookback", minval=20, maxval=200)


// === Data (OHLC needed) ===
[vixOpen, vixHigh, vixLow, vixClose] =
request.security("TVC:VIX", timeframe.period, [open, high, low, close])

// === RSI Oscillator ===
vixRsi = ta.sma(ta.rsi(vixClose, rsiLen), 5)

// === Momentum (ROC) ===
vixMom = ta.roc(vixClose, momLen)

// === Momentum Normalization (0–100, 50 neutral) ===
momMin = ta.lowest(vixMom, normLookback)
momMax = ta.highest(vixMom, normLookback)
vixMomNorm = ta.sma(100 * (vixMom - momMin) / math.max(momMax - momMin, 1e-6), 3)

// === Helpers ===
vixMa = ta.sma(vixClose, 21)
ratio = vixMa != 0.0 ? (vixClose / vixMa) : 0.0
clampedRatio = math.min(math.max(ratio, 0.0), 1.6)
dynamicTransparency = 100.0 - (clampedRatio * 40.0)
dynamicTransparency := math.min(math.max(dynamicTransparency, 0.0), 100.0)
dynamicTransparency := vixHigh < 30 ? 100 : dynamicTransparency

// === Colors ===
color baseColor = close > close[1] ? color.new(#00FF00, 0)
: close < close[1] ? color.new(#FF0080, 0) : color.gray
color vixBarColor = color.new(baseColor, dynamicTransparency)
color pointColor = color.new(baseColor, dynamicTransparency)


// === Levels ===
hline(80, "Panic of Market", color=color.rgb(0, 255, 0, 40))
hline(60, "VIX says BUY", color=color.rgb(0, 255, 0, 70))
hline(50, "Neutral / Momentum Mid", color=color.new(color.gray, 50))
hline(40, "Get Ready", color=color.new(color.gray, 60))

// === Plots ===
plot(vixRsi, title="VIX RSI", color=color.rgb(0, 255, 255), linewidth=2)
plot(vixMomNorm, title="VIX Normalized Momentum", color=color.new(color.gray, 50), linewidth=1)
plot(vixHigh > 50 ? vixHigh : na, title = "High Points", style = plot.style_cross, color = color.new(pointColor,0))
plot(vixHigh, title="VIX Value Bars", style=plot.style_histogram, color=vixBarColor, linewidth=1)

คำจำกัดสิทธิ์ความรับผิดชอบ

ข้อมูลและบทความไม่ได้มีวัตถุประสงค์เพื่อก่อให้เกิดกิจกรรมทางการเงิน, การลงทุน, การซื้อขาย, ข้อเสนอแนะ หรือคำแนะนำประเภทอื่น ๆ ที่ให้หรือรับรองโดย TradingView อ่านเพิ่มเติมใน ข้อกำหนดการใช้งาน