This is TOS's standard Vortex Indicator with a new XTREME twist.
What's new? I added a yellow midline. I added upper and lower gray target lines that you can change in the input settings based on your trading style. Default settings are 0.80 for the lower target and 1.15 for the upper target. When the Vortex lines have extended past the target lines, you will see these dots on the midline. There are 4 colored dots. Pink = caution sell, red = sell, light green = caution buy, and green = buy. The "caution" dots can be turned on/off in the input settings. In the upper indictor, instead of dots, they are arrows. The "caution" arrows can be turned on/off in the input settings of the upper chart.
There are also colored candles included with this indicator that can be turned on/off in the input settings. There are 4 colors. Green is strong buying, light green is weak buying, red is strong selling and yellow is weak selling.
NOTE: No indicator is perfect. You will notice when there is MAJOR buying or MAJOR selling, you will see reversal signals, yet the stock will continue going in the direction of the trend. In this case, placing a sell order below the previous candle's low on an uptrend and a buy order above the previous candle's high on a downtrend may be a good entry strategy.
Here is an example of /ES. The first picture includes the caution signals, the second picture removes the caution signals.
Upper Indicator Code:
http://tos.mx/J2R9JjS
UPPER CODE:
#XTREME VORTEX Indicator Upper
#assembled by Chewie
#available on UseThinkScript.com
#https://usethinkscript.com/threads/xtreme-vortex-bundle-indicator-for-thinkorswim.4218/
declare UPPER;
input length = 14;
input Lower = 0.80;
input Upper = 1.15;
input Caution = yes;
input Price_Color = no;
def trSum = sum(TrueRange(high, close, low), length);
def "VI+" = if trSum == 0 then 0 else sum(AbsValue(high - low[1]), length) / trSum;
def "VI-" = if trSum == 0 then 0 else sum(AbsValue(low - high[1]), length) / trSum;
def MIDDLE = 1;
#Candle Colors
assignpriceColor(if Price_Color AND "VI+" > "VI-" then color.dark_green else color.current);
assignpriceColor(if Price_Color AND "VI+" < "VI-" then color.red else color.current);
assignpriceColor(if Price_Color AND "VI+" > "VI-" AND "VI+" < "VI+"[1] then color.light_green else color.current);
assignpriceColor(if Price_Color AND "VI+" < "VI-" AND "VI-" < "VI-"[1] then color.yellow else color.current);
# Plot Arrows
plot BUY = "VI+" <= lower and "VI-" >= upper and "VI+" > "VI+"[1] and "VI-" < "VI-"[1];
BUY.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_up);
BUY.SetDefaultColor(Color.DARK_GREEN);
BUY.setLineWeight(2);
plot SELL = "VI-" <= lower and "VI+" >= upper and "VI-" > "VI-"[1] and "VI+" < "VI+"[1];
SELL.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
SELL.SetDefaultColor(Color.red);
SELL.setLineWeight(2);
plot CAUTIONBUY = caution and "VI+" <= lower and "VI-" >= upper;
CAUTIONBUY.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_up);
CAUTIONBUY.SetDefaultColor(Color.LIGHT_GREEN);
CAUTIONBUY.setLineWeight(1);
plot CAUTIONSELL = caution and "VI-" <= lower and "VI+" >= upper;
CAUTIONSELL.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
CAUTIONSELL.SetDefaultColor(Color.PINK);
CAUTIONSELL.setLineWeight(1);
Lower Indicator Code:
http://tos.mx/SDDSUTc
LOWER CODE:
#XTREME VORTEX Indicator
#assembled by Chewie
#available on UseThinkScript.com
#https://usethinkscript.com/threads/xtreme-vortex-bundle-indicator-for-thinkorswim.4218/
declare lower;
input length = 14;
input Lower = 0.80;
input Upper = 1.15;
input Caution = yes;
input Price_Color = yes;
def trSum = sum(TrueRange(high, close, low), length);
plot "VI+" = if trSum == 0 then 0 else sum(AbsValue(high - low[1]), length) / trSum;
plot "VI-" = if trSum == 0 then 0 else sum(AbsValue(low - high[1]), length) / trSum;
"VI+".SetDefaultColor(Color.GREEN);
"VI-".SetDefaultColor(Color.RED);
plot MIDDLE = 1;
MIDDLE.SetDefaultColor(Color.YELLOW);
plot LOW = LOWER;
LOW.SetDefaultColor(Color.GRAY);
plot HIGH = UPPER;
HIGH.SetDefaultColor(Color.GRAY);
#Candle Colors
assignpriceColor(if Price_Color AND "VI+" > "VI-" then color.dark_green else color.current);
assignpriceColor(if Price_Color AND "VI+" < "VI-" then color.red else color.current);
assignpriceColor(if Price_Color AND "VI+" > "VI-" AND "VI+" < "VI+"[1] then color.light_green else color.current);
assignpriceColor(if Price_Color AND "VI+" < "VI-" AND "VI-" < "VI-"[1] then color.yellow else color.current);
def condition1 = "VI+" <= lower and "VI-" >= upper and "VI+" > "VI+"[1] and "VI-" < "VI-"[1];
def condition2 = "VI-" <= lower and "VI+" >= upper and "VI-" > "VI-"[1] and "VI+" < "VI+"[1];
def condition3 = "VI+" <= lower and "VI-" >= upper;
def condition4 = "VI-" <= lower and "VI+" >= upper;
# Plot DOTS
plot BUY = if condition1 then condition1 else Double.NaN;
BUY.SetPaintingStrategy(PaintingStrategy.POINTS);
BUY.SetDefaultColor(Color.DARK_GREEN);
BUY.setLineWeight(4);
plot SELL = if condition2 then condition2 else Double.NaN;
SELL.SetPaintingStrategy(PaintingStrategy.POINTS);
SELL.SetDefaultColor(Color.red);
SELL.setLineWeight(4);
plot CAUTIONBUY = if caution and condition3 then condition3 else Double.NaN;
CAUTIONBUY.SetPaintingStrategy(PaintingStrategy.POINTS);
CAUTIONBUY.SetDefaultColor(Color.LIGHT_GREEN);
CAUTIONBUY.setLineWeight(4);
plot CAUTIONSELL = if caution and condition4 then condition4 else Double.NaN;
CAUTIONSELL.SetPaintingStrategy(PaintingStrategy.POINTS);
CAUTIONSELL.SetDefaultColor(Color.PINK);
CAUTIONSELL.setLineWeight(4);
#clouds
AddCloud("VI-", "VI+", Color.dark_RED, Color.CURRENT);
AddCloud("VI+", "VI-", Color.dark_GREEN, Color.CURRENT);
The next question people ask is, "Can you send a Watchlist Column?" Yes, here you go. Default setting is 15 minutes. To change the time, click on heading and select Edit Formula. The "caution" indicators can also be turned on/off in the input settings.
Watchlist Column:
http://tos.mx/JqMuz0P
The next question people ask is, "Can you send a Scan?" Yes, here you go.
Buy Scan:
http://tos.mx/YMMcu1E
Sell Scan:
http://tos.mx/8n5jQgH
Enjoy!
What's new? I added a yellow midline. I added upper and lower gray target lines that you can change in the input settings based on your trading style. Default settings are 0.80 for the lower target and 1.15 for the upper target. When the Vortex lines have extended past the target lines, you will see these dots on the midline. There are 4 colored dots. Pink = caution sell, red = sell, light green = caution buy, and green = buy. The "caution" dots can be turned on/off in the input settings. In the upper indictor, instead of dots, they are arrows. The "caution" arrows can be turned on/off in the input settings of the upper chart.
There are also colored candles included with this indicator that can be turned on/off in the input settings. There are 4 colors. Green is strong buying, light green is weak buying, red is strong selling and yellow is weak selling.
NOTE: No indicator is perfect. You will notice when there is MAJOR buying or MAJOR selling, you will see reversal signals, yet the stock will continue going in the direction of the trend. In this case, placing a sell order below the previous candle's low on an uptrend and a buy order above the previous candle's high on a downtrend may be a good entry strategy.
Here is an example of /ES. The first picture includes the caution signals, the second picture removes the caution signals.


Upper Indicator Code:
http://tos.mx/J2R9JjS
UPPER CODE:
#XTREME VORTEX Indicator Upper
#assembled by Chewie
#available on UseThinkScript.com
#https://usethinkscript.com/threads/xtreme-vortex-bundle-indicator-for-thinkorswim.4218/
declare UPPER;
input length = 14;
input Lower = 0.80;
input Upper = 1.15;
input Caution = yes;
input Price_Color = no;
def trSum = sum(TrueRange(high, close, low), length);
def "VI+" = if trSum == 0 then 0 else sum(AbsValue(high - low[1]), length) / trSum;
def "VI-" = if trSum == 0 then 0 else sum(AbsValue(low - high[1]), length) / trSum;
def MIDDLE = 1;
#Candle Colors
assignpriceColor(if Price_Color AND "VI+" > "VI-" then color.dark_green else color.current);
assignpriceColor(if Price_Color AND "VI+" < "VI-" then color.red else color.current);
assignpriceColor(if Price_Color AND "VI+" > "VI-" AND "VI+" < "VI+"[1] then color.light_green else color.current);
assignpriceColor(if Price_Color AND "VI+" < "VI-" AND "VI-" < "VI-"[1] then color.yellow else color.current);
# Plot Arrows
plot BUY = "VI+" <= lower and "VI-" >= upper and "VI+" > "VI+"[1] and "VI-" < "VI-"[1];
BUY.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_up);
BUY.SetDefaultColor(Color.DARK_GREEN);
BUY.setLineWeight(2);
plot SELL = "VI-" <= lower and "VI+" >= upper and "VI-" > "VI-"[1] and "VI+" < "VI+"[1];
SELL.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
SELL.SetDefaultColor(Color.red);
SELL.setLineWeight(2);
plot CAUTIONBUY = caution and "VI+" <= lower and "VI-" >= upper;
CAUTIONBUY.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_up);
CAUTIONBUY.SetDefaultColor(Color.LIGHT_GREEN);
CAUTIONBUY.setLineWeight(1);
plot CAUTIONSELL = caution and "VI-" <= lower and "VI+" >= upper;
CAUTIONSELL.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
CAUTIONSELL.SetDefaultColor(Color.PINK);
CAUTIONSELL.setLineWeight(1);
Lower Indicator Code:
http://tos.mx/SDDSUTc
LOWER CODE:
#XTREME VORTEX Indicator
#assembled by Chewie
#available on UseThinkScript.com
#https://usethinkscript.com/threads/xtreme-vortex-bundle-indicator-for-thinkorswim.4218/
declare lower;
input length = 14;
input Lower = 0.80;
input Upper = 1.15;
input Caution = yes;
input Price_Color = yes;
def trSum = sum(TrueRange(high, close, low), length);
plot "VI+" = if trSum == 0 then 0 else sum(AbsValue(high - low[1]), length) / trSum;
plot "VI-" = if trSum == 0 then 0 else sum(AbsValue(low - high[1]), length) / trSum;
"VI+".SetDefaultColor(Color.GREEN);
"VI-".SetDefaultColor(Color.RED);
plot MIDDLE = 1;
MIDDLE.SetDefaultColor(Color.YELLOW);
plot LOW = LOWER;
LOW.SetDefaultColor(Color.GRAY);
plot HIGH = UPPER;
HIGH.SetDefaultColor(Color.GRAY);
#Candle Colors
assignpriceColor(if Price_Color AND "VI+" > "VI-" then color.dark_green else color.current);
assignpriceColor(if Price_Color AND "VI+" < "VI-" then color.red else color.current);
assignpriceColor(if Price_Color AND "VI+" > "VI-" AND "VI+" < "VI+"[1] then color.light_green else color.current);
assignpriceColor(if Price_Color AND "VI+" < "VI-" AND "VI-" < "VI-"[1] then color.yellow else color.current);
def condition1 = "VI+" <= lower and "VI-" >= upper and "VI+" > "VI+"[1] and "VI-" < "VI-"[1];
def condition2 = "VI-" <= lower and "VI+" >= upper and "VI-" > "VI-"[1] and "VI+" < "VI+"[1];
def condition3 = "VI+" <= lower and "VI-" >= upper;
def condition4 = "VI-" <= lower and "VI+" >= upper;
# Plot DOTS
plot BUY = if condition1 then condition1 else Double.NaN;
BUY.SetPaintingStrategy(PaintingStrategy.POINTS);
BUY.SetDefaultColor(Color.DARK_GREEN);
BUY.setLineWeight(4);
plot SELL = if condition2 then condition2 else Double.NaN;
SELL.SetPaintingStrategy(PaintingStrategy.POINTS);
SELL.SetDefaultColor(Color.red);
SELL.setLineWeight(4);
plot CAUTIONBUY = if caution and condition3 then condition3 else Double.NaN;
CAUTIONBUY.SetPaintingStrategy(PaintingStrategy.POINTS);
CAUTIONBUY.SetDefaultColor(Color.LIGHT_GREEN);
CAUTIONBUY.setLineWeight(4);
plot CAUTIONSELL = if caution and condition4 then condition4 else Double.NaN;
CAUTIONSELL.SetPaintingStrategy(PaintingStrategy.POINTS);
CAUTIONSELL.SetDefaultColor(Color.PINK);
CAUTIONSELL.setLineWeight(4);
#clouds
AddCloud("VI-", "VI+", Color.dark_RED, Color.CURRENT);
AddCloud("VI+", "VI-", Color.dark_GREEN, Color.CURRENT);
The next question people ask is, "Can you send a Watchlist Column?" Yes, here you go. Default setting is 15 minutes. To change the time, click on heading and select Edit Formula. The "caution" indicators can also be turned on/off in the input settings.
Watchlist Column:
http://tos.mx/JqMuz0P

The next question people ask is, "Can you send a Scan?" Yes, here you go.
Buy Scan:
http://tos.mx/YMMcu1E

Sell Scan:
http://tos.mx/8n5jQgH

Enjoy!
Last edited: