Combo Williams Vix Fix Indicator for ThinkorSwim


Well-known member
2019 Donor
Here is the initial port of Combo Williams Vix Fix (Twin version) to ToS, as per requested by @Ken_Adams.



#Combo Williams Vix Fix (Twin version) to ToS
# capissimo
# 2020.04.22 1.0 @diazlaz - Initial Port/interpretation 
#This is a very powerful Williams' Vix Fix indicator.
#My implementation of this wonderful indicator features both up and down movements.
#Both up & down flavors have two versions (fields tp and tp2, each having two values).

declare lower;

input tp = 1;     #VixFix UP [1,2]
input tp2 = 1;    #VixFix DN [1,2]
input pd = 22;    #LookBack Period Standard Deviation High/Low
input bbl = 20;   #Bolinger Band Length
input mult = 2.0; #Bollinger Band Standard Deviation Up/Dn
input p = 60;     #LookBack
input lb = 50;    #Look Back Period Percentile High/Low
input ph = 0.85;  #Highest Percentile
input pl = 1.01;  #Lowest Percentile
input hp = yes;   #Show High Range - Based on Percentile and LookBack Period
input sd = no;    #Show Standard Deviation Line
input hp2 = no;   #Show Low Range - Based on Percentile and LookBack Period
input sd2 = no;   #Show Standard Deviation Line

script scaleMinimax {
    input x = close;
    input p = 5;
    input Min = .01;
    input Max =   1;
    def hh = Highest(x, p);
    def ll   = Lowest(x, p);
    plot data = (((Max - Min) * (x - ll)) /  (hh - ll)) + Min;

def prix  = scaleMinimax(close, p, 0, 1);
def prixn = 1 - prix;
def neg   = 1 - scaleMinimax(high, p, 0, 1);
def hi    = scaleMinimax(high, p, 0, 1);
def lo    = scaleMinimax(low, p, 0, 1);

def up1   = (Highest(prix, pd) - lo) / Highest(prix, pd);
def up2   = (Highest(prix, pd) - hi) / Highest(prix, pd);
def dn1   = (Highest(prixn, pd) - neg) / Highest(prixn, pd);
def dn2   = scaleMinimax((high - Lowest(close, pd)) / Lowest(close, pd), p, 0, 1);
def wvf   = If(tp == 1, up1, up2);
def wvfr  = If(tp2 == 1, dn1, dn2);

def sDev      = mult * StDev(wvf, bbl);
def midLine   = Average(wvf, bbl);
def lowerBand = midLine - sDev;
def upperBand = midLine + sDev;
def rangeHigh = (Highest(wvf, lb)) * ph;
def rangeLow  = (Lowest(wvf, lb)) * pl;
def col = If (wvf >= upperBand or wvf >= rangeHigh, -100, 0);

def sDev2      = mult * StDev(wvfr, bbl);
def midLine2   = Average(wvfr, bbl);
def lowerBand2 = midLine2 - sDev2;
def upperBand2 = midLine2 + sDev2;
def rangeHigh2 = (Highest(wvfr, lb)) * ph;
def rangeLow2  = (Lowest(wvfr, lb)) * pl;
def col2 = If(wvfr >= upperBand2 or wvfr >= rangeHigh2, 100, 0);

plot pwvfr1 = wvfr;
pwvfr1.AssignValueColor(if wvfr >= upperBand2 or wvfr >= rangeHigh2 then Color.GREEN else Color.DARK_GRAY);

plot pwvfr2 = wvfr;

plot pwvf1 = wvf;
pwvf1.AssignValueColor(if wvf >= upperBand or wvf >= rangeHigh then Color.RED else Color.DARK_GRAY);

plot pwvf2 = wvfr;

plot pRPH = if hp and rangeHigh then rangeHigh else Double.NaN; #Range High Percentile

plot pRPL = if hp and rangeLow then rangeLow else Double.NaN; #Range Low Percentile

plot pUpperBand = if sd and upperBand then upperBand else Double.NaN; #Upper Band

plot pRPH2 = if hp2 and rangeHigh2 then rangeHigh2 else Double.NaN; #Range High Percentile

plot pRPL2 = if hp2 and rangeLow2 then rangeLow2 else Double.NaN; #Range Low Percentile

plot pUpperBand2 = if sd2 and upperBand2 then upperBand2 else Double.NaN; #Upper Band

#END of Combo Williams Vix Fix (Twin version) to ToS

Share your test results and pairings.

Happy Trading.
@diazlaz Any other settings that you recommend for this indicator? I've been using this for scalping / day trading and was wondering if you have found any other settings that you prefer over the ones in the original indicator?


New member
can anyone explain how to use this indicator, I see the code mention standar deviation lines but I don't see any in the actual graphic


New member

Simply put, it signals breakouts. The way this has been customized, it doesn't use the convergence and divergence but it added directional indicators.

I stumbled over here looking for a way to get a solid VixFix indicator on ToS without having to re-invent the wheel. It's an excellent and reliable signal of market bottoms in bull markets (50-70%+/- success rate depending on exit conditions and the underlying). Pairs excellently with RSI/Stochastic crossovers for confirmation of trend reversals.

Similar threads