OPEN-SOURCE SCRIPT
VIXO - VIX Oscillator

// 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)
// © 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 ผู้สร้างสคริปต์นี้ได้ทำให้เป็นโอเพนซอร์ส เพื่อให้เทรดเดอร์สามารถตรวจสอบและยืนยันฟังก์ชันการทำงานของมันได้ ขอชื่นชมผู้เขียน! แม้ว่าคุณจะใช้งานได้ฟรี แต่โปรดจำไว้ว่าการเผยแพร่โค้ดซ้ำจะต้องเป็นไปตาม กฎระเบียบการใช้งาน ของเรา
คำจำกัดสิทธิ์ความรับผิดชอบ
ข้อมูลและบทความไม่ได้มีวัตถุประสงค์เพื่อก่อให้เกิดกิจกรรมทางการเงิน, การลงทุน, การซื้อขาย, ข้อเสนอแนะ หรือคำแนะนำประเภทอื่น ๆ ที่ให้หรือรับรองโดย TradingView อ่านเพิ่มเติมใน ข้อกำหนดการใช้งาน
สคริปต์โอเพนซอร์ซ
ด้วยเจตนารมณ์หลักของ TradingView ผู้สร้างสคริปต์นี้ได้ทำให้เป็นโอเพนซอร์ส เพื่อให้เทรดเดอร์สามารถตรวจสอบและยืนยันฟังก์ชันการทำงานของมันได้ ขอชื่นชมผู้เขียน! แม้ว่าคุณจะใช้งานได้ฟรี แต่โปรดจำไว้ว่าการเผยแพร่โค้ดซ้ำจะต้องเป็นไปตาม กฎระเบียบการใช้งาน ของเรา
คำจำกัดสิทธิ์ความรับผิดชอบ
ข้อมูลและบทความไม่ได้มีวัตถุประสงค์เพื่อก่อให้เกิดกิจกรรมทางการเงิน, การลงทุน, การซื้อขาย, ข้อเสนอแนะ หรือคำแนะนำประเภทอื่น ๆ ที่ให้หรือรับรองโดย TradingView อ่านเพิ่มเติมใน ข้อกำหนดการใช้งาน