Gatekeeper
Member
- Platform
-
- Thinkorswim
Code:
# Vixenator_II: a statistical approach to the relationship between VIX and SPX
# Build: August 24, 2013
#
# --- script begin ----
#
declare lower;
input risk = "VIX";
input index = "SPX";
input length = 30;
input level = 2.0; #hint level: 1 St.dev. level to be breached for trigger. \n Set to "0" for stop & reverse.
def ratio = close(risk) / close(index);
def sma = Average(ratio, length);
def sd = StDev(ratio, length);
def diff = ratio - sma;
plot zscore = -1 * diff / sd;
plot zero = if !IsNaN(close) then 0 else Double.NaN;
def delta = zscore - zscore[1];
def trend = CompoundValue(1, if zscore >= level then 1 else if zscore <= -level then -1 else if trend[1] != 1 and zscore > 0 and delta >= level then 1 else if trend[1] != -1 and zscore < 0 and delta <= -level then -1 else if trend[1] == 1 and zscore > 0 then 1 else if trend[1] == -1 and zscore < 0 then -1 else 0, 0);
plot posLevel = level;
plot negLevel = -level;
plot p3 = 3;
plot p2 = 2;
plot p1 = 1;
plot z0 = 0;
plot m1 = -1;
plot m2 = -2;
plot m3 = -3;
zscore.SetDefaultColor(COLOR.CYAN);
zscore.SetLineWeight(1);
zscore.AssignValueColor(if zscore >= 0 then COLOR.VIOLET else Color.RED);
zero.SetDefaultColor(COLOR.GRAY);
zero.HideTitle();
zero.SetStyle(Curve.POINTS);
zero.AssignValueColor(if trend > 0 then if zscore > 0 then CreateColor(127, 127, 255) else Color.YELLOW else if trend < 0 then if zscore < 0 then Color.RED else Color.YELLOW else Color.YELLOW);
AddCloud(zscore, z0, COLOR.VIOLET, Color.RED);
posLevel.SetDefaultColor(COLOR.VIOLET);
posLevel.HideTitle();
posLevel.SetLineWeight(2);
posLevel.SetStyle(curve.SHORT_DASH);
negLevel.SetDefaultColor(Color.RED);
negLevel.HideTitle();
negLevel.SetLineWeight(2);
negLevel.SetStyle(curve.SHORT_DASH);
p3.SetDefaultColor(Color.DARK_GRAY);
p2.SetDefaultColor(Color.DARK_GRAY);
p1.SetDefaultColor(Color.DARK_GRAY);
z0.SetDefaultColor(Color.DARK_GRAY);
m1.SetDefaultColor(Color.DARK_GRAY);
m2.SetDefaultColor(Color.DARK_GRAY);
m3.SetDefaultColor(Color.DARK_GRAY);
p3.HideTitle();
p2.HideTitle();
p1.HideTitle();
z0.HideTitle();
m1.HideTitle();
m2.HideTitle();
m3.HideTitle();
DefineGlobalColor("Long", COLOR.VIOLET);
DefineGlobalColor("Short", Color.RED);
DefineGlobalColor("Neutral", Color.YELLOW);
input barcoloring = No;
AssignPriceColor(if barcoloring then if trend > 0 then if zscore > 0 then GlobalColor("Long") else GlobalColor("Neutral") else if trend < 0 then if zscore < 0 then GlobalColor("Short") else GlobalColor("Neutral") else GlobalColor("Neutral") else Color.CURRENT);
Last edited by a moderator: