Cumulative Tick Indicator for ThinkorSwim

https://ibb.co/WFKVgPT

The photo link above shows the tick and trin meter with labels. I would like to know what do those red lines represent?
There are two red lines plotted:
plot Upper_Limit = if tick is greater than whatever you set for the Upper_Caution_Limit, it will plot red.
plot Lower_Limit = if tick is less than whatever you set for the Lower_Caution_Limit, it will plot red.
 

Join useThinkScript to post your question to a community of 21,000+ developers and traders.

Someone posted this image of today's (10/20/22) intraday price move on Twitter. I was wondering if anyone has this cumulative tick script or can write it. What's interesting about it is that there is no green and red on each side of the gray line. The cum tick indicator I use did. Thanks
Ffh_6h4UoAEo4PT
 
Someone posted this image of today's (10/20/22) intraday price move on Twitter. I was wondering if anyone has this cumulative tick script or can write it. What's interesting about it is that there is no green and red on each side of the gray line. The cum tick indicator I use did. Thanks
Ffh_6h4UoAEo4PT
Same here, interested in this strategy
 
Here is my first contribution to this great community of traders. Customizable TICK Cumulative Indicator.

Original idea came from @grapetux and here is the link to his post:
https://usethinkscript.com/threads/tick-study-color-assignment-help.11575/#post-100493

This is my very first creation. Will be happy to hear any suggestions or corrections to make it better. Please just take it easy, I am not a professional programmer.
In fact, three months ago when I joined this forum I didn't even know how to work around the TOS desktop app because I always used Trading View and my iPad for placing orders. But today I am actually coding my own indicators the way I like them. I did learn how to code on my own in 3 months and it's all thanks to very knowledgeable and generous people such as @gdlesley, @BenTen and @MerryDay, that never hesitated to share their knowledge and help others.

Code:
# TICK_Cumulative_MZ
# Created By MZ - 10/23/2022

#######################################################################
#TICK value between +300 and -300 indicate a neutral market sentiment. Higher than 300 is Bullish. Lower than -300 is Bearish.

#Very bullish when its value is higher than +500.
#Very  bearish when it is lower than -500.

#When TICK is higher than +750 or lower than -750, then trade with Caution.

#When TICK is higher than +1000 or lower than -1000, then a reversal of the market will probably happen soon.
#######################################################################
declare lower;

input symbol = "$TICK";

input paintBars = no;

input NeutralLevelUP = +300;
input NeutralLevelDown = -300;

input BullishLevel = +500;
input BearishLevel = -500;

input UpperCautionLevel = 750; 
input LowerCautionLevel  = -750;

input UpperReversalLevel= 1000;
input LowerReversalLevel = -1000;

input showBullBearLevel = no;
input showCautionLevel = no;
#######################################################################
def op = open(symbol);
def hi = high(symbol);
def lo = low(symbol);
def cl = close(symbol);

def na = Double.NaN;
#######################################################################

plot zero = 0;
zero.SetDefaultColor(Color.BLACK);
zero.SetLineWeight(1);

#######################################################################

plot Upperlevel = if hi > 0 then UpperReversalLevel else na;
Upperlevel.SetPaintingStrategy(PaintingStrategy.LINE);
Upperlevel.SetDefaultColor(Color.RED);
Upperlevel.SetLineWeight(3);

plot Lowerlevel = if lo < 0 then LowerReversalLevel else na;
Lowerlevel.SetPaintingStrategy(PaintingStrategy.LINE);
Lowerlevel.SetDefaultColor(Color.GREEN);
Lowerlevel.SetLineWeight(3);

plot BullLevel = if showBullBearLevel then BullishLevel else na;
BullLevel.SetPaintingStrategy(PaintingStrategy.LINE);
BullLevel.SetStyle(Curve.SHORT_DASH);
BullLevel.SetDefaultColor(Color.GREEN);
BullLevel.SetLineWeight(1);

plot BearLevel = if showBullBearLevel then BearishLevel else na;
BearLevel.SetPaintingStrategy(PaintingStrategy.LINE);
BearLevel.SetStyle(Curve.SHORT_DASH);
BearLevel.SetDefaultColor(Color.RED);
BearLevel.SetLineWeight(1);

plot UpperCaution = if showCautionLevel then UpperCautionLevel else na;
UpperCaution.SetPaintingStrategy(PaintingStrategy.LINE);
UpperCaution.SetStyle(Curve.MEDIUM_DASH);
UpperCaution.SetDefaultColor(Color.MAGENTA);
UpperCaution.SetLineWeight(1);

plot LowerCaution = if showCautionLevel then LowerCautionLevel else na;
LowerCaution.SetPaintingStrategy(PaintingStrategy.LINE);
LowerCaution.SetStyle(Curve.MEDIUM_DASH);
LowerCaution.SetDefaultColor(Color.CYAN);
LowerCaution.SetLineWeight(1);

#######################################################################

plot NeutralUp = if hi < NeutralLevelUp then hi else na;
NeutralUp.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
NeutralUp.SetDefaultColor(Color.DARK_GRAY);
NeutralUp.SetLineWeight(4);

plot NeutralDown = if lo > NeutralLevelDown then lo else na;
NeutralDown.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
NeutralDown.SetDefaultColor(Color.DARK_GRAY);
NeutralDown.SetLineWeight(4);

#######################################################################

plot UpperRev = hi;
UpperRev.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
UpperRev.AssignValueColor(if hi >= UpperReversalLevel then Color.MAGENTA else if hi < BullishLevel then Color.DARK_ORANGE else Color.GREEN);
UpperRev.SetLineWeight(4);

plot LowerRev = lo;
LowerRev.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
LowerRev.AssignValueColor(if lo <= LowerReversalLevel then Color.CYAN else if lo > BearishLevel then Color.DARK_ORANGE else Color.RED);
LowerRev.SetLineWeight(4);

#######################################################################

assignPriceColor(
if !paintbars then color.Current else
if hi > UpperReversalLevel then Color.MAGENTA else
if lo < LowerReversalLevel then Color.CYAN else Color.Current);

#######################################################################
go1BG0e.png

0xGlQrK.png
 
Enhanced Simple Tick Meter
Code:
# TICK Behind Price
# *******************************************************
# Thanks to:
# Dr. Steenbarger for idea &
# thinkscripter.com for great example scripts
# *******************************************************

##### Some code copied from source:
##### Simple Tick
##### Made By Signet
##### Version 1.0
##### 11/22/2018
##### Revised 12/19/2018
#https://www.dummies.com/personal-finance/investing/day-trading/how-to-use-the-tick-and-trin-in-day-trading/
##http://tradingsmart.net/indicators/tick-trin-label/

# Modifications by baTrader 11/04/2022
# How do you read a $TICK index? The value between +200 and -300 indicate a neutral market sentiment which should give a trader pause. Bullish is when values become higher than +200 and bearish when it is lower -300. Very bullish when its value is higher than +500 and very bearish when it is lower than -500. Note that when TICK is higher than +1000 or lower than -1000, then a reversal of the market will probably happen soon.

## $TICK – NYSE
## $TICK/Q – Nasdaq
## $TIKA – Amex
## $TICKAC – Amex composite
## $TICKAR – ARCA
## $TICKARC – ARCA composite
## $TICKC – NYSE composite
## $TICKC/Q – Nasdaq composite
## $TIKI – DJIA
## $TIKIC – DJIA composite
## $TIKND – Nasdaq 100
## $TIKNDC – Nasdaq 100 composite
## $TIKRL – Russell 2000
## $TIKRLC – Russell 2000 composite
## $TIKSP – S&P 500
## $TIKSPC – S&P 500 composite
## $TIKUS – All USA
## $TIKUSC – All USA composite


#TICK behind price
declare lower;

#SetChartType(ChartType.BAR);
#input tickRangeFactor = 1.00;
input TickType = {default "$TICK","$TICK/Q", "$TIKRL", "$TIKSP", "$TIKI", "$TIKA", "$TICKAC", "$TICKAR", "$TICKARC", "$TICKC", "$TICKC/Q", "$TIKIC", "$TIKND", "$TIKNDC",  "$TIKRLC", "$TIKSPC", "$TIKUS", "$TIKUSC"};
def showCloud = yes;

input max = 1000;
input min = -1000;
input warningHigh = 800;
input warningLow = -800;
input upperWarningLine = 600;
input lowerWarningLine = -600;
input veryBullish = 500;
input veryBearish = -500;
input neutralHigh = 200;
input neutralLow = -300;
plot maximum = max;
maximum.SetDefaultColor(Color.RED);
maximum.SetLineWeight(1);
plot minimum = min;
minimum.SetDefaultColor(Color.GREEN);
minimum.SetLineWeight(1);
plot zero = 0;
zero.SetDefaultColor(Color.LIGHT_GRAY);
zero.SetLineWeight(1);
plot highWarning = upperWarningLine;
highWarning.SetDefaultColor(Color.dark_orange);
highWarning.SetLineWeight(1);
plot lowWarning = lowerWarningLine;
lowWarning.SetDefaultColor(Color.dark_orange);
lowWarning.SetLineWeight(1);

# Neutral
AddCloud( if showCloud then neutralHigh else double.NAN, if showCloud then neutralLow else double.NAN, Color.Light_GRAY, Color.Light_GRAY);
# Bullish
AddCloud( if showCloud then neutralHigh else double.NAN, if showCloud then veryBullish else double.NAN, Color.LIME, Color.LIME);
# Very Bullish
AddCloud( if showCloud then veryBullish else double.NAN, if showCloud then warningHigh else double.NAN, Color.GREEN, Color.GREEN);
# Warning
AddCloud( if showCloud then warningHigh else double.NAN, if showCloud then max else double.NAN, Color.DARK_GREEN, Color.DARK_GREEN);

# Bearish
AddCloud( if showCloud then neutralLow else double.NAN, if showCloud then veryBearish else double.NAN, Color.LIGHT_RED, Color.LIGHT_RED);
# Very Bullish
AddCloud( if showCloud then veryBearish else double.NAN, if showCloud then warningLow else double.NAN, Color.RED, Color.RED);
# Warning
AddCloud( if showCloud then warningLow else double.NAN, if showCloud then min else double.NAN, Color.DARK_RED, Color.DARK_RED);
def tickClose = close(TickType);
plot CloseTick = tickClose;
CloseTick.SetDefaultColor(color.white);
CloseTick.SetLineWeight(1);

#Hint neutralHigh: TICK value between +200 and -300 indicate a neutral market sentiment.
#Hint neutralHigh: TICK value between +200 and -300 indicate a neutral market sentiment.
#Hint veryBullish: Very bullish when its value is higher than +500.
#Hint veryBullish: Very  bearish when it is lower than -500.
#Hint max: when TICK is higher than +1000 or lower than -1000, then a reversal of the market will probably happen soon.
#Hint min: when TICK is higher than +1000 or lower than -1000, then a reversal of the market will probably happen soon.
#Hint warningHigh: $TICK approaching max; possible reversal.   
#Hint warningLow: $TICK approaching min; possible reversal.

input show_label = yes;

AddLabel (show_label && !isNAN(tickClose), Concat(TickType + ": ", CloseTick) +

if (CloseTick <= neutralHigh and CloseTick >= neutralLow) then " Neutral Market"  else

if (CloseTick > neutralHigh and CloseTick < veryBullish ) then " Bullish Position" else 

if (CloseTick >= veryBullish and CloseTick < warningHigh)   then " Bullish Extreme" else

if (CloseTick >= warningHigh and CloseTick < max) then " Warning High" else

if CloseTick >= max then " CAUTION Upper Extreme" else

if (CloseTick < neutralLow and CloseTick > veryBearish ) then " Bearish Position" else

if (CloseTick <= veryBearish and CloseTick > warningLow) then " Bearish Extreme" else

if (CloseTick <= warningLow and CloseTick > min) then " Warning Low" else

if CloseTick <= min then "  CAUTION Lower Extreme" else "",

if (CloseTick >= neutralLow and CloseTick <= neutralHigh ) then Color.LIGHT_GRAY else

if (CloseTick > neutralHigh and CloseTick < veryBullish ) then Color.LIGHT_GREEN else

if (CloseTick >= veryBullish and CloseTick < warningHigh)   then Color.GREEN else

if (CloseTick >= warningHigh and CloseTick < max)   then Color.DARK_GREEN else

if CloseTick >= max   then Color.RED else

#if (CloseTick < 0 and CloseTick >= neutralLow ) then Color.LIGHT_GRAY else

if (CloseTick < neutralLow and CloseTick > veryBearish ) then Color.LIGHT_RED else

if (CloseTick <= veryBearish and CloseTick > warningLow)   then Color.RED else

if (CloseTick <= warningLow and CloseTick > min) then Color.DARK_RED else

if CloseTick <= min then Color.RED else Color.GREEN);
 
Enhanced Simple Tick Meter
Code:
# TICK Behind Price
# *******************************************************
# Thanks to:
# Dr. Steenbarger for idea &
# thinkscripter.com for great example scripts
# *******************************************************

##### Some code copied from source:
##### Simple Tick
##### Made By Signet
##### Version 1.0
##### 11/22/2018
##### Revised 12/19/2018
#https://www.dummies.com/personal-finance/investing/day-trading/how-to-use-the-tick-and-trin-in-day-trading/
##http://tradingsmart.net/indicators/tick-trin-label/

# Modifications by baTrader 11/04/2022
# How do you read a $TICK index? The value between +200 and -300 indicate a neutral market sentiment which should give a trader pause. Bullish is when values become higher than +200 and bearish when it is lower -300. Very bullish when its value is higher than +500 and very bearish when it is lower than -500. Note that when TICK is higher than +1000 or lower than -1000, then a reversal of the market will probably happen soon.

## $TICK – NYSE
## $TICK/Q – Nasdaq
## $TIKA – Amex
## $TICKAC – Amex composite
## $TICKAR – ARCA
## $TICKARC – ARCA composite
## $TICKC – NYSE composite
## $TICKC/Q – Nasdaq composite
## $TIKI – DJIA
## $TIKIC – DJIA composite
## $TIKND – Nasdaq 100
## $TIKNDC – Nasdaq 100 composite
## $TIKRL – Russell 2000
## $TIKRLC – Russell 2000 composite
## $TIKSP – S&P 500
## $TIKSPC – S&P 500 composite
## $TIKUS – All USA
## $TIKUSC – All USA composite


#TICK behind price
declare lower;

#SetChartType(ChartType.BAR);
#input tickRangeFactor = 1.00;
input TickType = {default "$TICK","$TICK/Q", "$TIKRL", "$TIKSP", "$TIKI", "$TIKA", "$TICKAC", "$TICKAR", "$TICKARC", "$TICKC", "$TICKC/Q", "$TIKIC", "$TIKND", "$TIKNDC",  "$TIKRLC", "$TIKSPC", "$TIKUS", "$TIKUSC"};
def showCloud = yes;

input max = 1000;
input min = -1000;
input warningHigh = 800;
input warningLow = -800;
input upperWarningLine = 600;
input lowerWarningLine = -600;
input veryBullish = 500;
input veryBearish = -500;
input neutralHigh = 200;
input neutralLow = -300;
plot maximum = max;
maximum.SetDefaultColor(Color.RED);
maximum.SetLineWeight(1);
plot minimum = min;
minimum.SetDefaultColor(Color.GREEN);
minimum.SetLineWeight(1);
plot zero = 0;
zero.SetDefaultColor(Color.LIGHT_GRAY);
zero.SetLineWeight(1);
plot highWarning = upperWarningLine;
highWarning.SetDefaultColor(Color.dark_orange);
highWarning.SetLineWeight(1);
plot lowWarning = lowerWarningLine;
lowWarning.SetDefaultColor(Color.dark_orange);
lowWarning.SetLineWeight(1);

# Neutral
AddCloud( if showCloud then neutralHigh else double.NAN, if showCloud then neutralLow else double.NAN, Color.Light_GRAY, Color.Light_GRAY);
# Bullish
AddCloud( if showCloud then neutralHigh else double.NAN, if showCloud then veryBullish else double.NAN, Color.LIME, Color.LIME);
# Very Bullish
AddCloud( if showCloud then veryBullish else double.NAN, if showCloud then warningHigh else double.NAN, Color.GREEN, Color.GREEN);
# Warning
AddCloud( if showCloud then warningHigh else double.NAN, if showCloud then max else double.NAN, Color.DARK_GREEN, Color.DARK_GREEN);

# Bearish
AddCloud( if showCloud then neutralLow else double.NAN, if showCloud then veryBearish else double.NAN, Color.LIGHT_RED, Color.LIGHT_RED);
# Very Bullish
AddCloud( if showCloud then veryBearish else double.NAN, if showCloud then warningLow else double.NAN, Color.RED, Color.RED);
# Warning
AddCloud( if showCloud then warningLow else double.NAN, if showCloud then min else double.NAN, Color.DARK_RED, Color.DARK_RED);
def tickClose = close(TickType);
plot CloseTick = tickClose;
CloseTick.SetDefaultColor(color.white);
CloseTick.SetLineWeight(1);

#Hint neutralHigh: TICK value between +200 and -300 indicate a neutral market sentiment.
#Hint neutralHigh: TICK value between +200 and -300 indicate a neutral market sentiment.
#Hint veryBullish: Very bullish when its value is higher than +500.
#Hint veryBullish: Very  bearish when it is lower than -500.
#Hint max: when TICK is higher than +1000 or lower than -1000, then a reversal of the market will probably happen soon.
#Hint min: when TICK is higher than +1000 or lower than -1000, then a reversal of the market will probably happen soon.
#Hint warningHigh: $TICK approaching max; possible reversal. 
#Hint warningLow: $TICK approaching min; possible reversal.

input show_label = yes;

AddLabel (show_label && !isNAN(tickClose), Concat(TickType + ": ", CloseTick) +

if (CloseTick <= neutralHigh and CloseTick >= neutralLow) then " Neutral Market"  else

if (CloseTick > neutralHigh and CloseTick < veryBullish ) then " Bullish Position" else

if (CloseTick >= veryBullish and CloseTick < warningHigh)   then " Bullish Extreme" else

if (CloseTick >= warningHigh and CloseTick < max) then " Warning High" else

if CloseTick >= max then " CAUTION Upper Extreme" else

if (CloseTick < neutralLow and CloseTick > veryBearish ) then " Bearish Position" else

if (CloseTick <= veryBearish and CloseTick > warningLow) then " Bearish Extreme" else

if (CloseTick <= warningLow and CloseTick > min) then " Warning Low" else

if CloseTick <= min then "  CAUTION Lower Extreme" else "",

if (CloseTick >= neutralLow and CloseTick <= neutralHigh ) then Color.LIGHT_GRAY else

if (CloseTick > neutralHigh and CloseTick < veryBullish ) then Color.LIGHT_GREEN else

if (CloseTick >= veryBullish and CloseTick < warningHigh)   then Color.GREEN else

if (CloseTick >= warningHigh and CloseTick < max)   then Color.DARK_GREEN else

if CloseTick >= max   then Color.RED else

#if (CloseTick < 0 and CloseTick >= neutralLow ) then Color.LIGHT_GRAY else

if (CloseTick < neutralLow and CloseTick > veryBearish ) then Color.LIGHT_RED else

if (CloseTick <= veryBearish and CloseTick > warningLow)   then Color.RED else

if (CloseTick <= warningLow and CloseTick > min) then Color.DARK_RED else

if CloseTick <= min then Color.RED else Color.GREEN);
Hi @MerryDay, @baTrader .. so when I trade SPX options, do i set this indicator to $TIKSP instead of $TICK?
 
Last edited:
Code:
#for identicating close above/below horizontal threshold (like on  $tick or $ADD)

input threshold=400;
input location=1000;
input price=close;
def above= price > threshold;
def below= price< -threshold;


plot pabove=if above then location else double.nan;
pabove.setPaintingStrategy(paintingStrategy.TRIANGLES); pabove.setdefaultcolor(color.green);
pabove.setLineWeight(5);

plot pbelow=if below then -location else double.nan;
pbelow.setPaintingStrategy(paintingStrategy.TRIANGLES); pbelow.setdefaultcolor(color.red);
pbelow.setLineWeight(5);

addcloud(threshold,-threshold,color.gray, color.gray);

View attachment 6377

Entire chart setup (as shown in screenshot)
https://tos.mx/3dD2VrT
The cumulative tick histogram doesn't show, can some one fix this? Thanks
 
Simple Cumulative Tick to Advanced Decline ratio
can be used as upper or lower study



Code:
#declare once_per_bar;
#declare lower;
declare hide_on_daily;

Input useLower = yes;
plot zero = 0;
Input ChartSpace = 10;
plot top = ChartSpace;


input AggregationPeriod = AggregationPeriod.MIN;
input displace = 0;
input showExchangeStatusLabels = yes;
input ShowStatusLable = yes;
input lablecolor = yes;
input AssignPriceColor = no;
input ny_group_trend = yes;
input rl_group_trend = yes;
input sp_group_trend = yes;
input nq_group_trend = yes;
input dj_group_trend = yes;



AddLabel(1, "Markets Group: "
+ (if ny_group_trend then "NY-" else "")
+ (if rl_group_trend then "RL-" else "")
+ (if sp_group_trend then "SP-" else "")
+ (if nq_group_trend then "NQ-" else "" )
+ (if dj_group_trend then "DOW" else "") , Color.CYAN );

def Agg = if GetAggregationPeriod() > AggregationPeriod then GetAggregationPeriod()
else AggregationPeriod;

AddLabel(ShowStatusLable, "Markets TF: " +
( if Agg == 60000 then "1 Min"
else if Agg == 120000 then "2 Min"
else if Agg == 180000 then "3 Min"
else if Agg == 240000 then "4 Min"
else if Agg == 300000 then "5 Min"
else if Agg == 600000 then "10 Min"
else if Agg == 900000 then "15 Min"
else if Agg == 1800000 then "30 Min"
else if Agg == 3600000 then "1 Hour"
else if Agg == 7200000 then "2 Hour"
else if Agg == 14400000 then "4 Hours"
else if Agg == 86400000 then "1 Day"
else if Agg == 604800000 then "1 Week"
else if Agg == 2592000000 then "1 Month"
else (Agg / 1000 / 60) + "Minutes") +
" ( " + AsText((if Agg <= 23400000
then 23400000 / Agg
else 86400000 / Agg)) + " )  "
,  Color.LIME);


def MarketsopenTime = 0930;
def MarketsCloseTime = 1600;
##################################################################################
##################################################################################
##################################################################################
def Active = if GetDay() != GetDay()[1]
          then 0
          else if SecondsTillTime(MarketsopenTime) <= 0 and
                  SecondsTillTime(MarketsCloseTime) >= 0
then 1
else 0;

def djTickData = hlc3("$TIKI", period = Agg)[displace];
def nyTickData = hlc3("$TICK", period = Agg)[displace];
def rlTickData = hlc3("$TIKRL" , period = Agg)[displace];
def spTickData = hlc3("$TIKSP", period = Agg)[displace];
def nqTickData = hlc3("$TICK/Q", period = Agg)[displace];
def nymaxAD = close("$ADVN", period = Agg)[displace] + close("$DECN", period = Agg)[displace] + close("$UNCN", period = Agg)[displace];
def rlmaxAD = close("$ADVRL", period = Agg)[displace] + close("$DECLRL", period = Agg)[displace] + close("$UNCHRL", period = Agg)[displace];
def spmaxAD =  close("$ADVSP", period = Agg)[displace] + close("$DECLSP", period = Agg)[displace] + close("$UNCHSP", period = Agg)[displace];
def nqmaxAD =  close("$ADVN/Q", period = Agg)[displace] + close("$DECN/Q", period = Agg)[displace] + close("$UNCN/Q", period = Agg)[displace];
def djmaxAD = close("$ADVI", period = Agg)[displace] + close("$DECLI", period = Agg)[displace] + close("$UNCHI", period = Agg)[displace];

def nywtd = nyTickData / nymaxAD;
def rlwtd = rlTickData / rlmaxAD;
def spwtd = spTickData / spmaxAD;
def nqwtd = nqTickData / nqmaxAD;
def djwtd = djTickData / djmaxAD;

def djCT = if Active then djCT[1] + djwtd else 0;
def djcumulativeTick = if !IsNaN(djwtd) and djCT <> 0 then djCT else Double.NaN;
def nyCT = if Active then nyCT[1] + nywtd  else 0;
def nycumulativeTick = if !IsNaN(nywtd) and  nyCT <> 0 then nyCT  else Double.NaN;
def rlCT = if Active then rlCT[1] + rlwtd  else 0;
def rlcumulativeTick = if !IsNaN(rlwtd) and  rlCT <> 0 then rlCT  else Double.NaN;
def spCT = if Active then spCT[1] + spwtd  else 0;
def spcumulativeTick = if !IsNaN(spwtd) and  spCT <> 0  then spCT  else Double.NaN;
def nqCT = if Active then nqCT[1] + nqwtd  else 0;
def nqcumulativeTick = if !IsNaN(nqwtd) and  nqCT <> 0  then nqCT  else Double.NaN;


def mktsup = if ny_group_trend and nycumulativeTick > nycumulativeTick[1] then 1 else 0 + if rl_group_trend and  rlcumulativeTick > rlcumulativeTick[1] then 1  else 0 +  if sp_group_trend and spcumulativeTick > spcumulativeTick[1] then 1  else 0 + if nq_group_trend and  nqcumulativeTick > nqcumulativeTick[1] then 1  else 0 + if dj_group_trend and djcumulativeTick > djcumulativeTick[1] then 1  else 0;

def mktsdn =  if ny_group_trend and nycumulativeTick < nycumulativeTick[1] then 1 else 0 + if rl_group_trend and  rlcumulativeTick < rlcumulativeTick[1] then 1  else 0 +  if sp_group_trend and spcumulativeTick < spcumulativeTick[1] then 1  else 0 + if nq_group_trend and  nqcumulativeTick < nqcumulativeTick[1] then 1  else 0 + if dj_group_trend and djcumulativeTick < djcumulativeTick[1] then 1  else 0;

def allUp = if mktsup > 0 and mktsdn == 0 then 0 else Double.NaN;
def allDown = if  mktsdn > 0 and mktsup == 0 then 0 else Double.NaN;

def NYSEUP = nycumulativeTick > nycumulativeTick[1];
def NYSEDN = nycumulativeTick < nycumulativeTick[1];

def rslUP = rlcumulativeTick > rlcumulativeTick[1];
def rslDN = rlcumulativeTick < rlcumulativeTick[1];

def SP500UP = spcumulativeTick > spcumulativeTick[1];
def SP500DN = spcumulativeTick < spcumulativeTick[1];

def NQTICKUP =  nqcumulativeTick > nqcumulativeTick[1] ;
def NQTICKDN =  nqcumulativeTick < nqcumulativeTick[1] ;

def spTICKUP =  spcumulativeTick > spcumulativeTick[1] ;
def spTICKDN =  spcumulativeTick < spcumulativeTick[1] ;

def djTICKUP =  djcumulativeTick > djcumulativeTick[1] ;
def djTICKDN =  djcumulativeTick < djcumulativeTick[1] ;

AddLabel(!showExchangeStatusLabels, "NYSE\ " + if nycumulativeTick > nycumulativeTick[1] then "(UP)" else " (DN) " + nycumulativeTick, if !lablecolor then Color.MAGENTA else if nycumulativeTick > nycumulativeTick[1] then Color.LIME else Color.PINK );

AddLabel(!showExchangeStatusLabels, "R2000\ "  + if rlcumulativeTick > rlcumulativeTick[1] then "(UP)" else " (DN) " + rlcumulativeTick , if !lablecolor then  Color.DARK_GREEN else if rlcumulativeTick > rlcumulativeTick[1] then Color.LIME else Color.PINK);

AddLabel(!showExchangeStatusLabels, "SP500\ "  + if spcumulativeTick > spcumulativeTick[1] then "(UP)" else " (DN) " + spcumulativeTick , if !lablecolor then  Color.RED else if spcumulativeTick > spcumulativeTick[1] then Color.LIME else Color.PINK );

AddLabel(!showExchangeStatusLabels, "NASDAQ\" + if nqcumulativeTick > nqcumulativeTick[1] then "(UP)" else " (DN) " + nqcumulativeTick,  if !lablecolor then Color.CYAN else if nqcumulativeTick > nqcumulativeTick[1] then Color.LIME else Color.PINK );

AddLabel(!showExchangeStatusLabels, "DJ\" + if djcumulativeTick > djcumulativeTick[1] then "(UP)" else " (DN) " + djcumulativeTick,  if !lablecolor then Color.CYAN else if djcumulativeTick > djcumulativeTick[1] then Color.LIME else Color.PINK );

AddLabel(ShowStatusLable and allDown == 0, "All DN", Color.RED);
AddLabel(ShowStatusLable and allUp == 0, "All UP", Color.GREEN);
########################################################################
def COUNTallUP = allUp;
def COUNTallDN = allDown;

def upcnt = if GetDay() != GetDay()[1]
          then 0
          else if SecondsTillTime(MarketsopenTime) <= 0 and
                  SecondsTillTime(MarketsCloseTime) >= 0
               then if IsNaN(COUNTallUP) then  upcnt[1] else upcnt[1] + 1
               else upcnt[1] ;
AddLabel(ShowStatusLable, "UP>>" + upcnt, Color.GREEN);

def dncnt = if GetDay() != GetDay()[1]
          then 0
          else if SecondsTillTime(MarketsopenTime) <= 0 and
                  SecondsTillTime(MarketsCloseTime) >= 0
               then if IsNaN(COUNTallDN) then  dncnt[1] else dncnt[1] + 1
               else dncnt[1] ;
AddLabel(ShowStatusLable, "DN>>" + dncnt, Color.PINK);


def nqdncnt ;
def nqupcnt ;
def spdncnt;
def spupcnt;
def rsldncnt;
def rslupcnt;
def nydncnt;
def nyupcnt;
def djdncnt;
def djupcnt;
def barcount;
if SecondsFromTime(0930) >= 0 and
                SecondsTillTime(1600) >= 0
then {
    barcount = barcount[1] + 1;
    nqdncnt = if NQTICKDN then   if IsNaN(nqdncnt[1]) then 0 else nqdncnt[1] + 1  else nqdncnt[1];
    nqupcnt = if NQTICKUP then   if IsNaN(nqupcnt[1] ) then 0 else nqupcnt[1] + 1  else nqupcnt[1];
    spdncnt = if SP500DN then   if IsNaN(spdncnt[1]) then 0 else spdncnt[1] + 1  else spdncnt[1];
    spupcnt = if SP500UP then   if IsNaN(spupcnt[1]) then 0 else spupcnt[1] + 1  else spupcnt[1];
    rsldncnt = if rslDN then   if IsNaN(rsldncnt[1]) then 0 else rsldncnt[1] + 1  else rsldncnt[1];
    rslupcnt = if rslUP then   if IsNaN(rslupcnt[1]) then 0 else rslupcnt[1] + 1  else rslupcnt[1];
    nydncnt = if NYSEDN then   if IsNaN(nydncnt[1] ) then 0 else nydncnt[1] + 1  else nydncnt[1];
    nyupcnt = if NYSEUP then   if IsNaN(nyupcnt[1]) then 0 else nyupcnt[1] + 1  else nyupcnt[1];
    djdncnt = if djTICKDN then  if IsNaN( djdncnt[1]) then 0 else djdncnt[1]  + 1  else djdncnt[1];
    djupcnt = if djTICKUP then  if IsNaN( djupcnt[1]) then 0 else djupcnt[1] + 1  else djupcnt[1];

}
else
{
    barcount = 0;
    nqdncnt = 0;
    nqupcnt = 0;
    spdncnt = 0;
    spupcnt = 0 ;
    rsldncnt = 0;
    rslupcnt = 0 ;
    nydncnt = 0;
    nyupcnt = 0;
    djdncnt = 0;
    djupcnt = 0;
}
;

input ShowUpDownMarketsBubble = yes;
def smudb = ShowUpDownMarketsBubble;
input Show_group_Bubble_Counts = yes;
AddChartBubble(Show_group_Bubble_Counts and upcnt > upcnt[1], if uselower then -0.1 else high, upcnt, Color.LIME, yes);
AddChartBubble(Show_group_Bubble_Counts and dncnt > dncnt[1],  if uselower then -0.1 else low, dncnt , Color.PINK, yes);

input Show_NQ_AD_BubbleCounts = no;
AddChartBubble(smudb and Show_NQ_AD_BubbleCounts and NQTICKUP, if uselower then 1 else high, "NQ" , Color.LIGHT_GREEN, yes);
AddChartBubble(smudb and Show_NQ_AD_BubbleCounts and NQTICKDN, if uselower then 1 else low, "NQ" , Color.LIGHT_RED, yes);
input Show_SP_AD_BubbleCounts = no;
AddChartBubble(smudb and Show_SP_AD_BubbleCounts and SP500UP, if uselower then if uselower then 1 else low else high, "SP", Color.LIGHT_GREEN, yes);
AddChartBubble(smudb and Show_SP_AD_BubbleCounts and SP500DN, if uselower then 1 else low, "SP" , Color.LIGHT_RED, yes);
input Show_RSL_AD_BubbleCounts = no;
AddChartBubble(smudb and Show_RSL_AD_BubbleCounts and rslUP, if uselower then 1 else high, "RL", Color.LIGHT_GREEN, yes);
AddChartBubble(smudb and Show_RSL_AD_BubbleCounts and rslDN, if uselower then 1 else low, "RL" , Color.LIGHT_RED, yes);
input Show_NYSE_AD_BubbleCounts = no;
AddChartBubble(smudb and Show_NYSE_AD_BubbleCounts and NYSEUP, if uselower then 1 else high, "NY", Color.LIGHT_GREEN, yes);
AddChartBubble(smudb and Show_NYSE_AD_BubbleCounts and NYSEDN, if uselower then 1 else low, "NY" , Color.LIGHT_RED, yes);
input Show_DJ_AD_BubbleCounts = no;
AddChartBubble(smudb and Show_DJ_AD_BubbleCounts and djTICKUP, if uselower then 1 else high, "DJ", Color.LIGHT_GREEN, yes);
AddChartBubble(smudb and Show_DJ_AD_BubbleCounts and djTICKDN, if uselower then 1 else low, "DJ" , Color.LIGHT_RED, yes);


AssignPriceColor(if AssignPriceColor and Active and  upcnt > upcnt[1] then Color.YELLOW else if AssignPriceColor and Active and dncnt > dncnt[1] then Color.MAGENTA else Color.CURRENT);

2 instances of the study Upper and Lower

1703221757659.png



1703259020830.png


MarketCumulativeTickBreadth

Grid Setup
http://tos.mx/55n4OAB
 
Last edited:
Hello Ramisegal

I am new to ToS as well as relatively new here...

Thanks much for MarketCumulativeTickBreadth.
I applied this to MNQ chart, but when I put the timeframe to RTH (ie, turning off Extended hours data), it plots data for tomorrow already. This happens only when I set the aggregation period to 2 min (or higher) on a 1min chart of MNQ (It's Sunday night now, but it shows Monday 9:32-9:39am Eastern values/bubbles for all 5 rows already). Please refer to the lower right of the attached screenshot that was taken on Sunday Dec 24th night. It already shows data for Monday Dec 25th morning. Is this expected?

Also, can this be updated to stop repainting, ie, not to update for completed bars?

Thanks very much!
 

Attachments

  • MCTB.jpg
    MCTB.jpg
    166.2 KB · Views: 149
Last edited:
Hi,

Picked up and made some small color changes to this script
https://usethinkscript.com/threads/cumulative-tick-indicator-for-thinkorswim.603/page-2#post-111397
but wanted to know how to keep the study with the upper and remove the lower part of the script. In other words, keep the script working as is and trigger the colors just in the upper price region. I'd like to be able to use that bottom space it's currently occupying for another study.

Thanks and Happy New Year!

Code:
# TICK_Cumulative_MZ
# Created By MZ - 10/23/2022

#######################################################################
#TICK value between +300 and -300 indicate a neutral market sentiment. Higher than 300 is Bullish. Lower than -300 is Bearish.

#Very bullish when its value is higher than +500.
#Very  bearish when it is lower than -500.

#When TICK is higher than +750 or lower than -750, then trade with Caution.

#When TICK is higher than +1000 or lower than -1000, then a reversal of the market will probably happen soon.
#######################################################################
declare lower;

input symbol = "$TICK";

input paintBars = no;

input NeutralLevelUP = +300;
input NeutralLevelDown = -300;

input BullishLevel = +500;
input BearishLevel = -500;

input UpperCautionLevel = 750;
input LowerCautionLevel  = -750;

input UpperReversalLevel= 1000;
input LowerReversalLevel = -1000;

input showBullBearLevel = no;
input showCautionLevel = no;
#######################################################################
def op = open(symbol);
def hi = high(symbol);
def lo = low(symbol);
def cl = close(symbol);

def na = Double.NaN;
#######################################################################

plot zero = 0;
zero.SetDefaultColor(Color.BLACK);
zero.SetLineWeight(1);

#######################################################################

plot Upperlevel = if hi > 0 then UpperReversalLevel else na;
Upperlevel.SetPaintingStrategy(PaintingStrategy.LINE);
Upperlevel.SetDefaultColor(Color.RED);
Upperlevel.SetLineWeight(3);

plot Lowerlevel = if lo < 0 then LowerReversalLevel else na;
Lowerlevel.SetPaintingStrategy(PaintingStrategy.LINE);
Lowerlevel.SetDefaultColor(Color.GREEN);
Lowerlevel.SetLineWeight(3);

plot BullLevel = if showBullBearLevel then BullishLevel else na;
BullLevel.SetPaintingStrategy(PaintingStrategy.LINE);
BullLevel.SetStyle(Curve.SHORT_DASH);
BullLevel.SetDefaultColor(Color.GREEN);
BullLevel.SetLineWeight(1);

plot BearLevel = if showBullBearLevel then BearishLevel else na;
BearLevel.SetPaintingStrategy(PaintingStrategy.LINE);
BearLevel.SetStyle(Curve.SHORT_DASH);
BearLevel.SetDefaultColor(Color.RED);
BearLevel.SetLineWeight(1);

plot UpperCaution = if showCautionLevel then UpperCautionLevel else na;
UpperCaution.SetPaintingStrategy(PaintingStrategy.LINE);
UpperCaution.SetStyle(Curve.MEDIUM_DASH);
UpperCaution.SetDefaultColor(Color.MAGENTA);
UpperCaution.SetLineWeight(1);

plot LowerCaution = if showCautionLevel then LowerCautionLevel else na;
LowerCaution.SetPaintingStrategy(PaintingStrategy.LINE);
LowerCaution.SetStyle(Curve.MEDIUM_DASH);
LowerCaution.SetDefaultColor(Color.CYAN);
LowerCaution.SetLineWeight(1);

#######################################################################

plot NeutralUp = if hi < NeutralLevelUp then hi else na;
NeutralUp.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
NeutralUp.SetDefaultColor(Color.DARK_GRAY);
NeutralUp.SetLineWeight(4);

plot NeutralDown = if lo > NeutralLevelDown then lo else na;
NeutralDown.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
NeutralDown.SetDefaultColor(Color.DARK_GRAY);
NeutralDown.SetLineWeight(4);

#######################################################################

plot UpperRev = hi;
UpperRev.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
UpperRev.AssignValueColor(if hi >= UpperReversalLevel then Color.MAGENTA else if hi < BullishLevel then Color.DARK_ORANGE else Color.GREEN);
UpperRev.SetLineWeight(4);

plot LowerRev = lo;
LowerRev.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
LowerRev.AssignValueColor(if lo <= LowerReversalLevel then Color.CYAN else if lo > BearishLevel then Color.DARK_ORANGE else Color.RED);
LowerRev.SetLineWeight(4);

#######################################################################

assignPriceColor(
if !paintbars then color.Current else
if hi > UpperReversalLevel then Color.MAGENTA else
if lo < LowerReversalLevel then Color.CYAN else
if lo < LowerCautionLevel  then color.YELLOW else Color.Current);

#######################################################################

1704158637978.png
 
Last edited by a moderator:
Hello Ramisegal

I am new to ToS as well as relatively new here...

Thanks much for MarketCumulativeTickBreadth.
I applied this to MNQ chart, but when I put the timeframe to RTH (ie, turning off Extended hours data), it plots data for tomorrow already. This happens only when I set the aggregation period to 2 min (or higher) on a 1min chart of MNQ (It's Sunday night now, but it shows Monday 9:32-9:39am Eastern values/bubbles for all 5 rows already). Please refer to the lower right of the attached screenshot that was taken on Sunday Dec 24th night. It already shows data for Monday Dec 25th morning. Is this expected?

Also, can this be updated to stop repainting, ie, not to update for completed bars?

Thanks very much!
I can not duplicate on my end, the Image you attached is inconclusive. please provide a full image (take a screen shot from within tos) like below



1704695969321.png
 
got it working to my satisfaction for now.

##### Smart Tick
##### Made By Signet
##### Version 1.0
##### 11/22/2018
##### Revised 12/19/2018
#https://www.dummies.com/personal-fi.../how-to-use-the-tick-and-trin-in-day-trading/
##http://tradingsmart.net/indicators/tick-trin-label/
#Hint: TICK and TRIN are two indicators that measure the general sentiment of the market. They can be used both to determine near term market movement. Theses indicators are not well know by traders. TRIN is a calculator, its formula is ((Advancing issues/declining issues) / (advancing volume/declining volume)), it's a contrarian indicator to detect overbought and oversold levels in the market.

#How to day trade with these indicators? TICK value between +200 and -300 indicate a neutral market sentiment. It became bullish when its value became higher than +200 and bearish when it is lower -300. Very bullish when its value is higher than +500 and very bearish when it is lower than -500. Note that when TICK is higher than +1000 or lower than -1000, then a reversal of the market will probably happen soon. Generally a rising TRIN is bearish and a falling TRIN is bullish. A TRIN value higher than 1 is bearish while bullish when it is below 0.9
#declare hide_on_daily;
declare lower;
def NeutralMarket_Top = +200;
#Hint NeutralMarket_Top: TICK value between +200 and -300 indicate a neutral market sentiment.
def NeutralMarket_Bottom = -300;
#Hint NeutralMarket_Top: TICK value between +200 and -300 indicate a neutral market sentiment.
def BullishValue = +500;
#Hint BullishValue: Very bullish when its value is higher than +500.
def BearishValue = -500;
#Hint BullishValue: Very bearish when it is lower than -500.
def Upper_Xtreme_Limit = 999;
#Hint Upper_Xtreme_Limit: when TICK is higher than +1000 or lower than -1000, then a reversal of the market will probably happen soon.
def Lower_Xtreme_Limit = -999;
#Hint Lower_Xtreme_Limit: when TICK is higher than +1000 or lower than -1000, then a reversal of the market will probably happen soon.
def Upper_Caution_Limit = 600;
#Hint Upper_Caution_Limit: Causes Label to change color when $TICK reaches this number.
def Lower_Caution_Limit = -600;
#Hint Lower_Caution_Limit: Causes Label to change color when $TICK reaches this number.

Plot Tick = close("$TICK");
plot Trin = close("$TRINND");
Trin.AssignValueColor(if Trin < 1 then Color.UPTICK else Color.DOWNTICK);

plot Upper_Xtreme = if tick > Upper_Xtreme_Limit then Upper_Xtreme_Limit else Double.NaN;
Upper_Xtreme.AssignValueColor(Color.WHITE);

plot Upper_Limit = if tick > Upper_Caution_Limit then Upper_Caution_Limit else Double.NaN;
Upper_Limit.AssignValueColor(Color.RED);

plot Bullishbottom = NeutralMarket_Top;
Bullishbottom.AssignValueColor(Color.GREEN);

plot BullishTop = BullishValue;
BullishTop.AssignValueColor(Color.DARK_GREEN);

plot BearishBottom = NeutralMarket_Bottom;
BearishBottom.AssignValueColor(Color.RED);

plot BearishTop = BearishValue;
BearishTop.AssignValueColor(Color.DARK_RED);

plot Lower_Limit = if tick < Lower_Caution_Limit then Lower_Caution_Limit else Double.NaN ;
Lower_Limit.AssignValueColor(Color.RED);

plot Lower_Xtreme = if tick < Lower_Xtreme_Limit then Lower_Xtreme_Limit else Double.NaN ;
Lower_Xtreme.AssignValueColor(Color.WHITE);

Tick.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
Tick.DefineColor("Positive", Color.UPTICK);
Tick.DefineColor("Negative", Color.DOWNTICK);
tick.DefineColor("Extreme", Color.CYAN);
tick.DefineColor("neutral", Color.GRAY);
tick.DefineColor("bullish", Color.BLUE);
tick.DefineColor("bearish", Color.DARK_ORANGE);
Tick.AssignValueColor(
if (Tick >= NeutralMarket_Bottom and tick <= NeutralMarket_Top) then Tick.Color("neutral") else
if (Tick > NeutralMarket_Top and tick < Upper_Caution_Limit) then Tick.Color("Positive") else
if (Tick < NeutralMarket_Bottom and tick > Lower_Caution_Limit) then Tick.Color("Negative") else
if (Tick > Upper_Caution_Limit and tick < Upper_Xtreme_Limit) then Tick.Color("Bullish") else
if (Tick < Lower_Caution_Limit and tick > Lower_Xtreme_Limit) then Tick.Color("bearish") else
if (tick > Upper_Xtreme_Limit or tick < Lower_Xtreme_Limit) then Tick.Color("Extreme")
else Tick.Color("neutral"));

#A trin of less than 1.00 usually means that a lot of buyers are acting strongly. A trin above 1.00 indicates that the sellers are acting more strongly.
input SHOW_trin = YES;
AddLabel(SHOW_trin, Concat("$TRINND: ", Trin) + if Trin > 1 then " : Sellers Market" else if Trin < 1 then " : Buyers Market" else "", if Trin <= 1 then Color.GREEN else Color.RED);

#If the tick is a positive number, that’s good: The market as a whole has a lot of buying interest. A positive tick shows that most people in the market have a positive perspective right now. Extremes show a catalyst event, and this label will stay gray unless an extreme tick is present.
input SHOW_tick = YES;
AddLabel (SHOW_tick, Concat("$TICK: ", Tick) + if
(Tick < NeutralMarket_Top and
Tick > NeutralMarket_Bottom) then
" Neutral Market" else if
(Tick > NeutralMarket_Top and
Tick < BullishValue ) then
" Bullish Market" else if
(Tick > BullishValue and
Tick < Upper_Caution_Limit) then
" Bullish Extreme" else if
(Tick > Upper_Xtreme_Limit) then
" CAUTION Upper Extreme" else if
(Tick < NeutralMarket_Bottom and
Tick > BearishValue ) then
" Bearish Position" else if
(Tick < BearishValue and
Tick > Lower_Caution_Limit) then
" Bearish Extreme" else if
(Tick < Lower_Xtreme_Limit) then
" CAUTION Lower Extreme" else "", if
(Tick > 0 and
Tick < NeutralMarket_Top ) then
Color.DARK_GREEN else if
(Tick > NeutralMarket_Top and
Tick < BullishValue ) then
Color.GREEN else if
(Tick > BullishValue and
Tick < Upper_Caution_Limit) then
Color.LIGHT_GREEN else if
(Tick > Upper_Caution_Limit and
Tick < Upper_Xtreme_Limit) then
Color.CYAN else if
(Tick > Upper_Xtreme_Limit) then
Color.RED else if
(Tick < 0 and
Tick > NeutralMarket_Bottom) then
Color.DARK_RED else if
(Tick < NeutralMarket_Bottom and
Tick > BearishValue) then
Color.PINK else if
(Tick < BearishValue and
Tick > Lower_Caution_Limit) then
Color.DARK_ORANGE else if
(Tick < Lower_Caution_Limit and
Tick > Lower_Xtreme_Limit) then
Color.RED else if
(Tick < Lower_Xtreme_Limit) then
Color.RED else Color.GRAY);
 
Last edited:

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
403 Online
Create Post

Similar threads

Similar threads

The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
  • Exclusive indicators
  • Proven strategies & setups
  • Private Discord community
  • ‘Buy The Dip’ signal alerts
  • Exclusive members-only content
  • Add-ons and resources
  • 1 full year of unlimited support

Frequently Asked Questions

What is useThinkScript?

useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.

How do I get started?

We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.

If you are new, or just looking for guidance, here are some helpful links to get you started.

What are the benefits of VIP Membership?
VIP members get exclusive access to these proven and tested premium indicators: Buy the Dip, Advanced Market Moves 2.0, Take Profit, and Volatility Trading Range. In addition, VIP members get access to over 50 VIP-only custom indicators, add-ons, and strategies, private VIP-only forums, private Discord channel to discuss trades and strategies in real-time, customer support, trade alerts, and much more. Learn all about VIP membership here.
How can I access the premium indicators?
To access the premium indicators, which are plug and play ready, sign up for VIP membership here.
Back
Top