Repaints Super Trend MTF Enhanced For ThinkOrSwim

Repaints
@krahsloop is the upper chart label instead of the lower indicator or in addition? the later would be resource intensive as you are doing the same calculation twice. TOS is not known to scale beyond 1 core in the system.

Now if you are looking for instead, all you have to do is mute the plot statements by replacing plot with def and disable all the plot styles, and add the Label for all Red or all Green conditions.

-S
 

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

I love this indicator, but try as I might I have not been able to change the last two alert lines.
I'm trying to get an alert at the First uptrend dot (When the uptrend starts) and another alert on the first dot that is Not and uptrend dot. (When the uptrend is finished)
Any help with this would be VERY VERY appreciated.
____________________________________________________________

Ruby:
# SuperTrend Multiple Time Frames
# Modifled by SuryaKiranC
# V05.06.2021
# An attempt to Support autoswitch of Highr Frames with chart frame changes.
# Provide Support for Chart Frame 1m to 4H.
# Aggrigate of SuperTrend Bullish is plotted in Green above Dots/ Bearish is plotted in Red below Dots.
# ATRMult & nATR values are different from original and can be adjusted by user.
# Mobius
# V03.01.2016

# I pulled this study down from MyTrade for a reason. It wasn't
# plotting correctly with the multiple aggregations. And like
# all studies with secondary aggregations it tends to replot the
# higher ones. I decided to think about it some more and this is
# where I am with the ST MTF study now.
#
# It's still squirrely and blinks a lot. Using declare Once_Per_Bar
# does some bad things to it. I was considering making intra
# aggregation higher time frames. A pain to do but it gives more
# control over how it plots.
#
# Row 6 is supposed to be the output for all aggregations and the
# signal line. After hours when data isn't moving it's steady and
# has good signals. But since it's after hours, totally useless
# for any intraday trading.

declare hide_on_daily;
declare lower;
declare once_per_bar;
declare real_size;

input audibleAlerts = yes;

def _aP1 = GetAggregationPeriod();
def _aP2 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.THREE_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.FOUR_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.FIVE_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.TWENTY_MIN else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.FOUR_HOURS else AggregationPeriod.DAY);

def _aP3 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.FIVE_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.DAY else AggregationPeriod.TWO_DAYS);

def _aP4 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.TWENTY_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.DAY else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.TWO_DAYS else AggregationPeriod.THREE_DAYS);

def _aP5 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.TWENTY_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.DAY else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.TWO_DAYS else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.THREE_DAYS else AggregationPeriod.FOUR_DAYS);

def agg1 = _aP1;
def agg2 = _aP2;
def agg3 = _aP3;
def agg4 = _aP4;
def agg5 = _aP5;

input AtrMult = 1;
input nATR = 6;
input AvgType = AverageType.HULL;

DefineGlobalColor ("Line", Color.LIGHT_GRAY);
DefineGlobalColor ("TrendUp", Color.LIGHT_GREEN);
DefineGlobalColor ("TrendDown", Color.LIGHT_RED);
DefineGlobalColor ("Buy", Color.GREEN);
DefineGlobalColor ("Sell", Color.RED);

def Line = 1.75;

def Fh = FundamentalType.HIGH;
def Fl = FundamentalType.LOW;
def Fc = FundamentalType.CLOSE;
def Fhl2 = FundamentalType.HL2;

def h = Fundamental(Fh, period = agg1);
def l = Fundamental(Fl, period = agg1);
def c = Fundamental(Fc, period = agg1);
def hl = Fundamental(Fhl2, period = agg1);
def ATR = MovingAverage(AvgType, TrueRange(h, c, l), nATR);
def UP = hl + (AtrMult * ATR);
def DN = hl + (-AtrMult * ATR);
def S = if c < S[1] then Round(UP / TickSize(), 0) * TickSize() else Round(DN / TickSize(), 0) * TickSize();

def h2 = Fundamental(Fh, period = agg2);
def l2 = Fundamental(Fl, period = agg2);
def c2 = Fundamental(Fc, period = agg2);
def hl2 = Fundamental(Fhl2, period = agg2);
def ATR2 = MovingAverage(AvgType, TrueRange(h2, c2, l2), nATR);
def UP2 = hl2 + (AtrMult * ATR2);
def DN2 = hl2 + (-AtrMult * ATR2);
def S2 = if c2 < S2[1] then Round(UP2 / TickSize(), 0) * TickSize() else Round(DN2 / TickSize(), 0) * TickSize();

def h3 = Fundamental(Fh, period = agg3);
def l3 = Fundamental(Fl, period = agg3);
def c3 = Fundamental(Fc, period = agg3);
def hl3 = Fundamental(Fhl2, period = agg3);
def ATR3 = MovingAverage(AvgType, TrueRange(h3, c3, l3), nATR);
def UP3 = hl3 + (AtrMult * ATR3);
def DN3 = hl3 + (-AtrMult * ATR3);
def S3 = if c3 < S3[1] then Round(UP3 / TickSize(), 0) * TickSize() else Round(DN3 / TickSize(), 0) * TickSize();

def h4 = Fundamental(Fh, period = agg4);
def l4 = Fundamental(Fl, period = agg4);
def c4 = Fundamental(Fc, period = agg4);
def hl4 = Fundamental(Fhl2, period = agg4);
def ATR4 = MovingAverage(AvgType, TrueRange(h4, c4, l4), nATR);
def UP4 = hl4 + (AtrMult * ATR4);
def DN4 = hl4 + (-AtrMult * ATR4);
def S4 = if c4 < S4[1] then Round(UP4 / TickSize(), 0) * TickSize() else Round(DN4 / TickSize(), 0) * TickSize();

def h5 = Fundamental(Fh, period = agg5);
def l5 = Fundamental(Fl, period = agg5);
def c5 = Fundamental(Fc, period = agg5);
def hl5 = Fundamental(Fhl2, period = agg5);
def ATR5 = MovingAverage(AvgType, TrueRange(h5, c5, l5), nATR);
def UP5 = hl5 + (AtrMult * ATR5);
def DN5 = hl5 + (-AtrMult * ATR5);
def S5 = if c5 < S5[1] then Round(UP5 / TickSize(), 0) * TickSize() else Round(DN5 / TickSize(), 0) * TickSize();

plot hLine = Line ;
hLine.SetDefaultColor(GlobalColor("Line"));
plot lLine = -Line;
lLine.SetDefaultColor(GlobalColor("Line"));
def cl = close;
def x = IsNaN(cl[2]) and !IsNaN(cl[3]);

def FirstAgg = if c > S then 1 else 0;
plot FirstAggPlot = if IsNaN(cl) then Double.NaN else 1;
FirstAggPlot.SetStyle(Curve.POINTS);
FirstAggPlot.SetLineWeight(2);
FirstAggPlot.AssignValueColor(if FirstAgg then GlobalColor("TrendUp") else GlobalColor("TrendDown"));
AddChartBubble(x, 1, (agg1 / 1000 / 60) + " min", Color.WHITE, yes);

def SecondAgg = if c2 > S2 then 1 else 0;
plot SecondAggPlot = if IsNaN(cl) then Double.NaN else 0.5;
SecondAggPlot.SetStyle(Curve.POINTS);
SecondAggPlot.SetLineWeight(3);
SecondAggPlot.AssignValueColor(if SecondAgg then GlobalColor("TrendUp") else GlobalColor("TrendDown"));
AddChartBubble(x, 0.5, (agg2 / 1000 / 60) + " min", Color.WHITE, yes);

def ThirdAgg = if c3 > S3 then 1 else 0;
plot ThirdAggPlot = if IsNaN(cl) then Double.NaN else 0;
ThirdAggPlot.SetStyle(Curve.POINTS);
ThirdAggPlot.SetLineWeight(3);
ThirdAggPlot.AssignValueColor(if ThirdAgg then GlobalColor("TrendUp") else GlobalColor("TrendDown"));
AddChartBubble(x, 0, (agg3 / 1000 / 60) + " min", Color.WHITE, yes);

def FourthAgg = if c4 > S4 then 1 else 0;
plot FourthAggPlot = if IsNaN(cl) then Double.NaN else -0.5;
FourthAggPlot.SetStyle(Curve.POINTS);
FourthAggPlot.SetLineWeight(4);
FourthAggPlot.AssignValueColor(if FourthAgg then GlobalColor("TrendUp") else GlobalColor("TrendDown"));
AddChartBubble(x, -0.5, (agg4 / 1000 / 60) + " min", Color.WHITE, yes);

def FifthAgg = if c5 > S5 then 1 else 0;
plot FifthAggPlot = if IsNaN(cl) then Double.NaN else -1;
FifthAggPlot.SetStyle(Curve.POINTS);
FifthAggPlot.SetLineWeight(4);
FifthAggPlot.AssignValueColor(if FifthAgg then GlobalColor("TrendUp") else GlobalColor("TrendDown"));

AddChartBubble(x, -1, (agg5 / 1000 / 60) + " min", Color.WHITE, yes);
plot Direction = if (FirstAgg and SecondAgg and ThirdAgg and FourthAgg and FifthAgg) then hLine + .5 else if (!FirstAgg and !SecondAgg and !ThirdAgg and !FourthAgg and !FifthAgg) then lLine - .5 else Double.NaN;

def Bullish = (if FirstAgg and SecondAgg and ThirdAgg and FourthAgg and FifthAgg then 1 else 0);
def Bearish = (if !FirstAgg and !SecondAgg and !ThirdAgg and !FourthAgg and !FifthAgg then 1 else 0);

Direction.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
Direction.SetLineWeight(4);
Direction.AssignValueColor(if Bullish then GlobalColor ("Buy") else if Bearish then GlobalColor ("Sell") else Color.BLACK);

Alert(audibleAlerts and Bullish, "SuperTrend UpTrend Started", Alert.BAR, Sound.Ding);
Alert(audibleAlerts and Bearish, "SuperTrend DownTrend Started", Alert.BAR, Sound.Ring);


# End Code ST MTF
 
I love this indicator, but try as I might I have not been able to change the last two alert lines.
I'm trying to get an alert at the First uptrend dot (When the uptrend starts) and another alert on the first dot that is Not and uptrend dot. (When the uptrend is finished)
Any help with this would be VERY VERY appreciated.
____________________________________________________________

Ruby:
# SuperTrend Multiple Time Frames
# Modifled by SuryaKiranC
# V05.06.2021
# An attempt to Support autoswitch of Highr Frames with chart frame changes.
# Provide Support for Chart Frame 1m to 4H.
# Aggrigate of SuperTrend Bullish is plotted in Green above Dots/ Bearish is plotted in Red below Dots.
# ATRMult & nATR values are different from original and can be adjusted by user.
# Mobius
# V03.01.2016

# I pulled this study down from MyTrade for a reason. It wasn't
# plotting correctly with the multiple aggregations. And like
# all studies with secondary aggregations it tends to replot the
# higher ones. I decided to think about it some more and this is
# where I am with the ST MTF study now.
#
# It's still squirrely and blinks a lot. Using declare Once_Per_Bar
# does some bad things to it. I was considering making intra
# aggregation higher time frames. A pain to do but it gives more
# control over how it plots.
#
# Row 6 is supposed to be the output for all aggregations and the
# signal line. After hours when data isn't moving it's steady and
# has good signals. But since it's after hours, totally useless
# for any intraday trading.

declare hide_on_daily;
declare lower;
declare once_per_bar;
declare real_size;

input audibleAlerts = yes;

def _aP1 = GetAggregationPeriod();
def _aP2 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.THREE_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.FOUR_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.FIVE_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.TWENTY_MIN else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.FOUR_HOURS else AggregationPeriod.DAY);

def _aP3 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.FIVE_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.DAY else AggregationPeriod.TWO_DAYS);

def _aP4 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.TWENTY_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.DAY else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.TWO_DAYS else AggregationPeriod.THREE_DAYS);

def _aP5 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.TWENTY_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.DAY else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.TWO_DAYS else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.THREE_DAYS else AggregationPeriod.FOUR_DAYS);

def agg1 = _aP1;
def agg2 = _aP2;
def agg3 = _aP3;
def agg4 = _aP4;
def agg5 = _aP5;

input AtrMult = 1;
input nATR = 6;
input AvgType = AverageType.HULL;

DefineGlobalColor ("Line", Color.LIGHT_GRAY);
DefineGlobalColor ("TrendUp", Color.LIGHT_GREEN);
DefineGlobalColor ("TrendDown", Color.LIGHT_RED);
DefineGlobalColor ("Buy", Color.GREEN);
DefineGlobalColor ("Sell", Color.RED);

def Line = 1.75;

def Fh = FundamentalType.HIGH;
def Fl = FundamentalType.LOW;
def Fc = FundamentalType.CLOSE;
def Fhl2 = FundamentalType.HL2;

def h = Fundamental(Fh, period = agg1);
def l = Fundamental(Fl, period = agg1);
def c = Fundamental(Fc, period = agg1);
def hl = Fundamental(Fhl2, period = agg1);
def ATR = MovingAverage(AvgType, TrueRange(h, c, l), nATR);
def UP = hl + (AtrMult * ATR);
def DN = hl + (-AtrMult * ATR);
def S = if c < S[1] then Round(UP / TickSize(), 0) * TickSize() else Round(DN / TickSize(), 0) * TickSize();

def h2 = Fundamental(Fh, period = agg2);
def l2 = Fundamental(Fl, period = agg2);
def c2 = Fundamental(Fc, period = agg2);
def hl2 = Fundamental(Fhl2, period = agg2);
def ATR2 = MovingAverage(AvgType, TrueRange(h2, c2, l2), nATR);
def UP2 = hl2 + (AtrMult * ATR2);
def DN2 = hl2 + (-AtrMult * ATR2);
def S2 = if c2 < S2[1] then Round(UP2 / TickSize(), 0) * TickSize() else Round(DN2 / TickSize(), 0) * TickSize();

def h3 = Fundamental(Fh, period = agg3);
def l3 = Fundamental(Fl, period = agg3);
def c3 = Fundamental(Fc, period = agg3);
def hl3 = Fundamental(Fhl2, period = agg3);
def ATR3 = MovingAverage(AvgType, TrueRange(h3, c3, l3), nATR);
def UP3 = hl3 + (AtrMult * ATR3);
def DN3 = hl3 + (-AtrMult * ATR3);
def S3 = if c3 < S3[1] then Round(UP3 / TickSize(), 0) * TickSize() else Round(DN3 / TickSize(), 0) * TickSize();

def h4 = Fundamental(Fh, period = agg4);
def l4 = Fundamental(Fl, period = agg4);
def c4 = Fundamental(Fc, period = agg4);
def hl4 = Fundamental(Fhl2, period = agg4);
def ATR4 = MovingAverage(AvgType, TrueRange(h4, c4, l4), nATR);
def UP4 = hl4 + (AtrMult * ATR4);
def DN4 = hl4 + (-AtrMult * ATR4);
def S4 = if c4 < S4[1] then Round(UP4 / TickSize(), 0) * TickSize() else Round(DN4 / TickSize(), 0) * TickSize();

def h5 = Fundamental(Fh, period = agg5);
def l5 = Fundamental(Fl, period = agg5);
def c5 = Fundamental(Fc, period = agg5);
def hl5 = Fundamental(Fhl2, period = agg5);
def ATR5 = MovingAverage(AvgType, TrueRange(h5, c5, l5), nATR);
def UP5 = hl5 + (AtrMult * ATR5);
def DN5 = hl5 + (-AtrMult * ATR5);
def S5 = if c5 < S5[1] then Round(UP5 / TickSize(), 0) * TickSize() else Round(DN5 / TickSize(), 0) * TickSize();

plot hLine = Line ;
hLine.SetDefaultColor(GlobalColor("Line"));
plot lLine = -Line;
lLine.SetDefaultColor(GlobalColor("Line"));
def cl = close;
def x = IsNaN(cl[2]) and !IsNaN(cl[3]);

def FirstAgg = if c > S then 1 else 0;
plot FirstAggPlot = if IsNaN(cl) then Double.NaN else 1;
FirstAggPlot.SetStyle(Curve.POINTS);
FirstAggPlot.SetLineWeight(2);
FirstAggPlot.AssignValueColor(if FirstAgg then GlobalColor("TrendUp") else GlobalColor("TrendDown"));
AddChartBubble(x, 1, (agg1 / 1000 / 60) + " min", Color.WHITE, yes);

def SecondAgg = if c2 > S2 then 1 else 0;
plot SecondAggPlot = if IsNaN(cl) then Double.NaN else 0.5;
SecondAggPlot.SetStyle(Curve.POINTS);
SecondAggPlot.SetLineWeight(3);
SecondAggPlot.AssignValueColor(if SecondAgg then GlobalColor("TrendUp") else GlobalColor("TrendDown"));
AddChartBubble(x, 0.5, (agg2 / 1000 / 60) + " min", Color.WHITE, yes);

def ThirdAgg = if c3 > S3 then 1 else 0;
plot ThirdAggPlot = if IsNaN(cl) then Double.NaN else 0;
ThirdAggPlot.SetStyle(Curve.POINTS);
ThirdAggPlot.SetLineWeight(3);
ThirdAggPlot.AssignValueColor(if ThirdAgg then GlobalColor("TrendUp") else GlobalColor("TrendDown"));
AddChartBubble(x, 0, (agg3 / 1000 / 60) + " min", Color.WHITE, yes);

def FourthAgg = if c4 > S4 then 1 else 0;
plot FourthAggPlot = if IsNaN(cl) then Double.NaN else -0.5;
FourthAggPlot.SetStyle(Curve.POINTS);
FourthAggPlot.SetLineWeight(4);
FourthAggPlot.AssignValueColor(if FourthAgg then GlobalColor("TrendUp") else GlobalColor("TrendDown"));
AddChartBubble(x, -0.5, (agg4 / 1000 / 60) + " min", Color.WHITE, yes);

def FifthAgg = if c5 > S5 then 1 else 0;
plot FifthAggPlot = if IsNaN(cl) then Double.NaN else -1;
FifthAggPlot.SetStyle(Curve.POINTS);
FifthAggPlot.SetLineWeight(4);
FifthAggPlot.AssignValueColor(if FifthAgg then GlobalColor("TrendUp") else GlobalColor("TrendDown"));

AddChartBubble(x, -1, (agg5 / 1000 / 60) + " min", Color.WHITE, yes);
plot Direction = if (FirstAgg and SecondAgg and ThirdAgg and FourthAgg and FifthAgg) then hLine + .5 else if (!FirstAgg and !SecondAgg and !ThirdAgg and !FourthAgg and !FifthAgg) then lLine - .5 else Double.NaN;

def Bullish = (if FirstAgg and SecondAgg and ThirdAgg and FourthAgg and FifthAgg then 1 else 0);
def Bearish = (if !FirstAgg and !SecondAgg and !ThirdAgg and !FourthAgg and !FifthAgg then 1 else 0);

Direction.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
Direction.SetLineWeight(4);
Direction.AssignValueColor(if Bullish then GlobalColor ("Buy") else if Bearish then GlobalColor ("Sell") else Color.BLACK);

Alert(audibleAlerts and Bullish, "SuperTrend UpTrend Started", Alert.BAR, Sound.Ding);
Alert(audibleAlerts and Bearish, "SuperTrend DownTrend Started", Alert.BAR, Sound.Ring);


# End Code ST MTF
This is a great script, Im trying to find it where it only displays as a label on the upper chart. Just a MTF Supertrend Labels. Would help clean things up a bit.
 
Was debating for a while, if the forum needs yet another Super Trend Indicator. Anyways, decided to post since there isn't one that is selecting Higher Frames automatically based on chart frames. Base parameters of this not not my own, this is a equivalent of Super Trend yahoo version parameters. Feel free to make it your own, with modified nATR and ATRMulti inputs.

There are version that get passed as MTF, but there is only one HF (Higher Frame) defined, that may be fine for an upper indicator, but in my opinion a True, lower MTF version should have more than one higher TF and should be able to auto switch the Higher TF automatically based on Chart TF.

Note: Indicator Repaints, till the candle closes, that's applicable for Higher Frame plots too.

Ruby:
# SuperTrend Multiple Time Frames
# Modifled by SuryaKiranC
# V05.06.2021
# An attempt to Support autoswitch of Highr Frames with chart frame changes.
# Provide Support for Chart Frame 1m to 4H.
# Aggrigate of SuperTrend Bullish is plotted in Green above Dots/ Bearish is plotted in Red below Dots.
# ATRMult & nATR values are different from original and can be adjusted by user.
# Mobius
# V03.01.2016

# I pulled this study down from MyTrade for a reason. It wasn't
# plotting correctly with the multiple aggregations. And like
# all studies with secondary aggregations it tends to replot the
# higher ones. I decided to think about it some more and this is
# where I am with the ST MTF study now.
#
# It's still squirrely and blinks a lot. Using declare Once_Per_Bar
# does some bad things to it. I was considering making intra
# aggregation higher time frames. A pain to do but it gives more
# control over how it plots.
#
# Row 6 is supposed to be the output for all aggregations and the
# signal line. After hours when data isn't moving it's steady and
# has good signals. But since it's after hours, totally useless
# for any intraday trading.

declare hide_on_daily;
declare lower;
declare once_per_bar;
declare real_size;

input audibleAlerts = yes;

def _aP1 = GetAggregationPeriod();
def _aP2 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.THREE_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.FOUR_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.FIVE_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.TWENTY_MIN else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.FOUR_HOURS else AggregationPeriod.DAY);

def _aP3 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.FIVE_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.DAY else AggregationPeriod.TWO_DAYS);

def _aP4 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.TWENTY_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.DAY else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.TWO_DAYS else AggregationPeriod.THREE_DAYS);

def _aP5 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.TWENTY_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.DAY else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.TWO_DAYS else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.THREE_DAYS else AggregationPeriod.FOUR_DAYS);

def agg1 = _aP1;
def agg2 = _aP2;
def agg3 = _aP3;
def agg4 = _aP4;
def agg5 = _aP5;

input AtrMult = 1;
input nATR = 6;
input AvgType = AverageType.HULL;

DefineGlobalColor ("Line", Color.LIGHT_GRAY);
DefineGlobalColor ("TrendUp", Color.LIGHT_GREEN);
DefineGlobalColor ("TrendDown", Color.LIGHT_RED);
DefineGlobalColor ("Buy", Color.GREEN);
DefineGlobalColor ("Sell", Color.RED);

def Line = 1.75;

def Fh = FundamentalType.HIGH;
def Fl = FundamentalType.LOW;
def Fc = FundamentalType.CLOSE;
def Fhl2 = FundamentalType.HL2;

def h = Fundamental(Fh, period = agg1);
def l = Fundamental(Fl, period = agg1);
def c = Fundamental(Fc, period = agg1);
def hl = Fundamental(Fhl2, period = agg1);
def ATR = MovingAverage(AvgType, TrueRange(h, c, l), nATR);
def UP = hl + (AtrMult * ATR);
def DN = hl + (-AtrMult * ATR);
def S = if c < S[1] then Round(UP / TickSize(), 0) * TickSize() else Round(DN / TickSize(), 0) * TickSize();

def h2 = Fundamental(Fh, period = agg2);
def l2 = Fundamental(Fl, period = agg2);
def c2 = Fundamental(Fc, period = agg2);
def hl2 = Fundamental(Fhl2, period = agg2);
def ATR2 = MovingAverage(AvgType, TrueRange(h2, c2, l2), nATR);
def UP2 = hl2 + (AtrMult * ATR2);
def DN2 = hl2 + (-AtrMult * ATR2);
def S2 = if c2 < S2[1] then Round(UP2 / TickSize(), 0) * TickSize() else Round(DN2 / TickSize(), 0) * TickSize();

def h3 = Fundamental(Fh, period = agg3);
def l3 = Fundamental(Fl, period = agg3);
def c3 = Fundamental(Fc, period = agg3);
def hl3 = Fundamental(Fhl2, period = agg3);
def ATR3 = MovingAverage(AvgType, TrueRange(h3, c3, l3), nATR);
def UP3 = hl3 + (AtrMult * ATR3);
def DN3 = hl3 + (-AtrMult * ATR3);
def S3 = if c3 < S3[1] then Round(UP3 / TickSize(), 0) * TickSize() else Round(DN3 / TickSize(), 0) * TickSize();

def h4 = Fundamental(Fh, period = agg4);
def l4 = Fundamental(Fl, period = agg4);
def c4 = Fundamental(Fc, period = agg4);
def hl4 = Fundamental(Fhl2, period = agg4);
def ATR4 = MovingAverage(AvgType, TrueRange(h4, c4, l4), nATR);
def UP4 = hl4 + (AtrMult * ATR4);
def DN4 = hl4 + (-AtrMult * ATR4);
def S4 = if c4 < S4[1] then Round(UP4 / TickSize(), 0) * TickSize() else Round(DN4 / TickSize(), 0) * TickSize();

def h5 = Fundamental(Fh, period = agg5);
def l5 = Fundamental(Fl, period = agg5);
def c5 = Fundamental(Fc, period = agg5);
def hl5 = Fundamental(Fhl2, period = agg5);
def ATR5 = MovingAverage(AvgType, TrueRange(h5, c5, l5), nATR);
def UP5 = hl5 + (AtrMult * ATR5);
def DN5 = hl5 + (-AtrMult * ATR5);
def S5 = if c5 < S5[1] then Round(UP5 / TickSize(), 0) * TickSize() else Round(DN5 / TickSize(), 0) * TickSize();

plot hLine = Line ;
hLine.SetDefaultColor(GlobalColor("Line"));
plot lLine = -Line;
lLine.SetDefaultColor(GlobalColor("Line"));
def cl = close;
def x = IsNaN(cl[2]) and !IsNaN(cl[3]);

def FirstAgg = if c > S then 1 else 0;
plot FirstAggPlot = if IsNaN(cl) then Double.NaN else 1;
FirstAggPlot.SetStyle(Curve.POINTS);
FirstAggPlot.SetLineWeight(2);
FirstAggPlot.AssignValueColor(if FirstAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));
AddChartBubble(x, 1, (agg1 / 1000 / 60) + " min", Color.WHITE, yes);

def SecondAgg =  if c2 > S2 then 1 else 0;
plot SecondAggPlot = if IsNaN(cl) then Double.NaN else 0.5;
SecondAggPlot.SetStyle(Curve.POINTS);
SecondAggPlot.SetLineWeight(3);
SecondAggPlot.AssignValueColor(if SecondAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));
AddChartBubble(x, 0.5, (agg2 / 1000 / 60) + " min", Color.WHITE, yes);

def ThirdAgg =  if c3 > S3 then 1 else 0;
plot ThirdAggPlot = if IsNaN(cl) then Double.NaN else 0;
ThirdAggPlot.SetStyle(Curve.POINTS);
ThirdAggPlot.SetLineWeight(3);
ThirdAggPlot.AssignValueColor(if ThirdAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));
AddChartBubble(x, 0, (agg3 / 1000 / 60) + " min", Color.WHITE, yes);

def FourthAgg =  if c4 > S4 then 1 else 0;
plot FourthAggPlot = if IsNaN(cl) then Double.NaN else -0.5;
FourthAggPlot.SetStyle(Curve.POINTS);
FourthAggPlot.SetLineWeight(4);
FourthAggPlot.AssignValueColor(if FourthAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));
AddChartBubble(x, -0.5, (agg4 / 1000 / 60) + " min", Color.WHITE, yes);

def FifthAgg =  if c5 > S5 then 1 else 0;
plot FifthAggPlot = if IsNaN(cl) then Double.NaN else -1;
FifthAggPlot.SetStyle(Curve.POINTS);
FifthAggPlot.SetLineWeight(4);
FifthAggPlot.AssignValueColor(if FifthAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));

AddChartBubble(x, -1, (agg5 / 1000 / 60) + " min", Color.WHITE, yes);
plot Direction = if (FirstAgg and SecondAgg and ThirdAgg and FourthAgg and FifthAgg) then hLine + .5 else if (!FirstAgg and !SecondAgg and !ThirdAgg and !FourthAgg and !FifthAgg) then lLine - .5 else Double.NaN;

def Bullish = (if FirstAgg and SecondAgg and ThirdAgg and FourthAgg and FifthAgg then 1 else 0);
def Bearish = (if !FirstAgg and !SecondAgg and !ThirdAgg and !FourthAgg and !FifthAgg then 1 else 0);

Direction.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
Direction.SetLineWeight(4);
Direction.AssignValueColor(if Bullish then GlobalColor ("Buy") else if Bearish then GlobalColor ("Sell") else Color.BLACK);

Alert(audibleAlerts and Bullish, "SuperTrend UpTrend Started",   Alert.BAR, Sound.Ding);
Alert(audibleAlerts and Bearish, "SuperTrend DownTrend Started", Alert.BAR, Sound.Ring);

# End Code ST MTF

What do each row of green and red dots represent; different time frames or ... ? If so, what are they? Also, thank you for the work on this.
 
What do each row of green and red dots represent; different time frames or ... ? If so, what are they? Also, thank you for the work on this.
Yes, they represent current frame and 4 more higher frames, the 4 higher change based on your chart frame. as for what they are, you could see them if you set up your charts for 15 bar space on the timeframe options, in your chart settings.
 
Was debating for a while, if the forum needs yet another Super Trend Indicator. Anyways, decided to post since there isn't one that is selecting Higher Frames automatically based on chart frames. Base parameters of this not not my own, this is a equivalent of Super Trend yahoo version parameters. Feel free to make it your own, with modified nATR and ATRMulti inputs.

There are version that get passed as MTF, but there is only one HF (Higher Frame) defined, that may be fine for an upper indicator, but in my opinion a True, lower MTF version should have more than one higher TF and should be able to auto switch the Higher TF automatically based on Chart TF.

Note: Indicator Repaints, till the candle closes, that's applicable for Higher Frame plots too.

Ruby:
# SuperTrend Multiple Time Frames
# Modifled by SuryaKiranC
# V05.06.2021
# An attempt to Support autoswitch of Highr Frames with chart frame changes.
# Provide Support for Chart Frame 1m to 4H.
# Aggrigate of SuperTrend Bullish is plotted in Green above Dots/ Bearish is plotted in Red below Dots.
# ATRMult & nATR values are different from original and can be adjusted by user.
# Mobius
# V03.01.2016

# I pulled this study down from MyTrade for a reason. It wasn't
# plotting correctly with the multiple aggregations. And like
# all studies with secondary aggregations it tends to replot the
# higher ones. I decided to think about it some more and this is
# where I am with the ST MTF study now.
#
# It's still squirrely and blinks a lot. Using declare Once_Per_Bar
# does some bad things to it. I was considering making intra
# aggregation higher time frames. A pain to do but it gives more
# control over how it plots.
#
# Row 6 is supposed to be the output for all aggregations and the
# signal line. After hours when data isn't moving it's steady and
# has good signals. But since it's after hours, totally useless
# for any intraday trading.

declare hide_on_daily;
declare lower;
declare once_per_bar;
declare real_size;

input audibleAlerts = yes;

def _aP1 = GetAggregationPeriod();
def _aP2 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.THREE_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.FOUR_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.FIVE_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.TWENTY_MIN else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.FOUR_HOURS else AggregationPeriod.DAY);

def _aP3 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.FIVE_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.DAY else AggregationPeriod.TWO_DAYS);

def _aP4 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.TWENTY_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.DAY else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.TWO_DAYS else AggregationPeriod.THREE_DAYS);

def _aP5 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.TWENTY_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.DAY else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.TWO_DAYS else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.THREE_DAYS else AggregationPeriod.FOUR_DAYS);

def agg1 = _aP1;
def agg2 = _aP2;
def agg3 = _aP3;
def agg4 = _aP4;
def agg5 = _aP5;

input AtrMult = 1;
input nATR = 6;
input AvgType = AverageType.HULL;

DefineGlobalColor ("Line", Color.LIGHT_GRAY);
DefineGlobalColor ("TrendUp", Color.LIGHT_GREEN);
DefineGlobalColor ("TrendDown", Color.LIGHT_RED);
DefineGlobalColor ("Buy", Color.GREEN);
DefineGlobalColor ("Sell", Color.RED);

def Line = 1.75;

def Fh = FundamentalType.HIGH;
def Fl = FundamentalType.LOW;
def Fc = FundamentalType.CLOSE;
def Fhl2 = FundamentalType.HL2;

def h = Fundamental(Fh, period = agg1);
def l = Fundamental(Fl, period = agg1);
def c = Fundamental(Fc, period = agg1);
def hl = Fundamental(Fhl2, period = agg1);
def ATR = MovingAverage(AvgType, TrueRange(h, c, l), nATR);
def UP = hl + (AtrMult * ATR);
def DN = hl + (-AtrMult * ATR);
def S = if c < S[1] then Round(UP / TickSize(), 0) * TickSize() else Round(DN / TickSize(), 0) * TickSize();

def h2 = Fundamental(Fh, period = agg2);
def l2 = Fundamental(Fl, period = agg2);
def c2 = Fundamental(Fc, period = agg2);
def hl2 = Fundamental(Fhl2, period = agg2);
def ATR2 = MovingAverage(AvgType, TrueRange(h2, c2, l2), nATR);
def UP2 = hl2 + (AtrMult * ATR2);
def DN2 = hl2 + (-AtrMult * ATR2);
def S2 = if c2 < S2[1] then Round(UP2 / TickSize(), 0) * TickSize() else Round(DN2 / TickSize(), 0) * TickSize();

def h3 = Fundamental(Fh, period = agg3);
def l3 = Fundamental(Fl, period = agg3);
def c3 = Fundamental(Fc, period = agg3);
def hl3 = Fundamental(Fhl2, period = agg3);
def ATR3 = MovingAverage(AvgType, TrueRange(h3, c3, l3), nATR);
def UP3 = hl3 + (AtrMult * ATR3);
def DN3 = hl3 + (-AtrMult * ATR3);
def S3 = if c3 < S3[1] then Round(UP3 / TickSize(), 0) * TickSize() else Round(DN3 / TickSize(), 0) * TickSize();

def h4 = Fundamental(Fh, period = agg4);
def l4 = Fundamental(Fl, period = agg4);
def c4 = Fundamental(Fc, period = agg4);
def hl4 = Fundamental(Fhl2, period = agg4);
def ATR4 = MovingAverage(AvgType, TrueRange(h4, c4, l4), nATR);
def UP4 = hl4 + (AtrMult * ATR4);
def DN4 = hl4 + (-AtrMult * ATR4);
def S4 = if c4 < S4[1] then Round(UP4 / TickSize(), 0) * TickSize() else Round(DN4 / TickSize(), 0) * TickSize();

def h5 = Fundamental(Fh, period = agg5);
def l5 = Fundamental(Fl, period = agg5);
def c5 = Fundamental(Fc, period = agg5);
def hl5 = Fundamental(Fhl2, period = agg5);
def ATR5 = MovingAverage(AvgType, TrueRange(h5, c5, l5), nATR);
def UP5 = hl5 + (AtrMult * ATR5);
def DN5 = hl5 + (-AtrMult * ATR5);
def S5 = if c5 < S5[1] then Round(UP5 / TickSize(), 0) * TickSize() else Round(DN5 / TickSize(), 0) * TickSize();

plot hLine = Line ;
hLine.SetDefaultColor(GlobalColor("Line"));
plot lLine = -Line;
lLine.SetDefaultColor(GlobalColor("Line"));
def cl = close;
def x = IsNaN(cl[2]) and !IsNaN(cl[3]);

def FirstAgg = if c > S then 1 else 0;
plot FirstAggPlot = if IsNaN(cl) then Double.NaN else 1;
FirstAggPlot.SetStyle(Curve.POINTS);
FirstAggPlot.SetLineWeight(2);
FirstAggPlot.AssignValueColor(if FirstAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));
AddChartBubble(x, 1, (agg1 / 1000 / 60) + " min", Color.WHITE, yes);

def SecondAgg =  if c2 > S2 then 1 else 0;
plot SecondAggPlot = if IsNaN(cl) then Double.NaN else 0.5;
SecondAggPlot.SetStyle(Curve.POINTS);
SecondAggPlot.SetLineWeight(3);
SecondAggPlot.AssignValueColor(if SecondAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));
AddChartBubble(x, 0.5, (agg2 / 1000 / 60) + " min", Color.WHITE, yes);

def ThirdAgg =  if c3 > S3 then 1 else 0;
plot ThirdAggPlot = if IsNaN(cl) then Double.NaN else 0;
ThirdAggPlot.SetStyle(Curve.POINTS);
ThirdAggPlot.SetLineWeight(3);
ThirdAggPlot.AssignValueColor(if ThirdAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));
AddChartBubble(x, 0, (agg3 / 1000 / 60) + " min", Color.WHITE, yes);

def FourthAgg =  if c4 > S4 then 1 else 0;
plot FourthAggPlot = if IsNaN(cl) then Double.NaN else -0.5;
FourthAggPlot.SetStyle(Curve.POINTS);
FourthAggPlot.SetLineWeight(4);
FourthAggPlot.AssignValueColor(if FourthAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));
AddChartBubble(x, -0.5, (agg4 / 1000 / 60) + " min", Color.WHITE, yes);

def FifthAgg =  if c5 > S5 then 1 else 0;
plot FifthAggPlot = if IsNaN(cl) then Double.NaN else -1;
FifthAggPlot.SetStyle(Curve.POINTS);
FifthAggPlot.SetLineWeight(4);
FifthAggPlot.AssignValueColor(if FifthAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));

AddChartBubble(x, -1, (agg5 / 1000 / 60) + " min", Color.WHITE, yes);
plot Direction = if (FirstAgg and SecondAgg and ThirdAgg and FourthAgg and FifthAgg) then hLine + .5 else if (!FirstAgg and !SecondAgg and !ThirdAgg and !FourthAgg and !FifthAgg) then lLine - .5 else Double.NaN;

def Bullish = (if FirstAgg and SecondAgg and ThirdAgg and FourthAgg and FifthAgg then 1 else 0);
def Bearish = (if !FirstAgg and !SecondAgg and !ThirdAgg and !FourthAgg and !FifthAgg then 1 else 0);

Direction.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
Direction.SetLineWeight(4);
Direction.AssignValueColor(if Bullish then GlobalColor ("Buy") else if Bearish then GlobalColor ("Sell") else Color.BLACK);

Alert(audibleAlerts and Bullish, "SuperTrend UpTrend Started",   Alert.BAR, Sound.Ding);
Alert(audibleAlerts and Bearish, "SuperTrend DownTrend Started", Alert.BAR, Sound.Ring);

# End Code ST MTF
I love this thing. I do keep flipping back and forth between different time frames and this thing is a game changer, thank you. However, It seems to flicker on and off. Sometimes its not there, then a few minutes later it appears. I also get this error. THank you for the help.
The error reads "(yes, 1, 6, HULL): Trying to self-assign a non-initialized rec: S3."
 
It seems to flicker on and off. Sometimes its not there, then a few minutes later it appears.
Yes, the 'flickering' / repainting is the drawback of all MTF indicators.
Want to know why?
https://usethinkscript.com/threads/...-indicators-in-thinkorswim.16606/#post-131220

I also get this error.
The error reads "(yes, 1, 6, HULL): Trying to self-assign a non-initialized rec: S3."
No, there is no error with the script. Maybe you didn't copy&paste it correctly?

You can load it another way, guaranteed to load the script without errors:
Shared Chart Link: http://tos.mx/LwoHdde Click here for --> Easiest way to load shared links
 
@krahsloop is the upper chart label instead of the lower indicator or in addition? the later would be resource intensive as you are doing the same calculation twice. TOS is not known to scale beyond 1 core in the system.

Now if you are looking for instead, all you have to do is mute the plot statements by replacing plot with def and disable all the plot styles, and add the Label for all Red or all Green conditions.
Can someone please help with the label code for the MTF Supertrend? I dont want the lower indicator showing at all- just buttons above corresponding with the coded timelines. i tried to code this can I am just cant figure it out.
 
Yes, the 'flickering' / repainting is the drawback of all MTF indicators.
Want to know why?
https://usethinkscript.com/threads/...-indicators-in-thinkorswim.16606/#post-131220


No, there is no error with the script. Maybe you didn't copy&paste it correctly?

You can load it another way, guaranteed to load the script without errors:
Shared Chart Link: http://tos.mx/LwoHdde Click here for --> Easiest way to load shared links
Works like a charm. I really appreciate it.
 
Can someone please help with the label code for the MTF Supertrend? I dont want the lower indicator showing at all- just buttons above corresponding with the coded timelines. i tried to code this can I am just cant figure it out.

Here is the post #1 made into an upper indicator with colored labels matching the dots in the original.

Screenshot 2023-11-01 140152.png
Code:
# SuperTrend Multiple Time Frames
# Modifled by SuryaKiranC
# V05.06.2021
# An attempt to Support autoswitch of Highr Frames with chart frame changes.
# Provide Support for Chart Frame 1m to 4H.
# Aggrigate of SuperTrend Bullish is plotted in Green above Dots/ Bearish is plotted in Red below Dots.
# ATRMult & nATR values are different from original and can be adjusted by user.
# Mobius
# V03.01.2016

# I pulled this study down from MyTrade for a reason. It wasn't
# plotting correctly with the multiple aggregations. And like
# all studies with secondary aggregations it tends to replot the
# higher ones. I decided to think about it some more and this is
# where I am with the ST MTF study now.
#
# It's still squirrely and blinks a lot. Using declare Once_Per_Bar
# does some bad things to it. I was considering making intra
# aggregation higher time frames. A pain to do but it gives more
# control over how it plots.
#
# Row 6 is supposed to be the output for all aggregations and the
# signal line. After hours when data isn't moving it's steady and
# has good signals. But since it's after hours, totally useless
# for any intraday trading.

# 11.1.2023 Added Labels, Hid Lines, Hid Bubbles and changed this to an Upper indicator

declare hide_on_daily;
#declare lower;
#declare once_per_bar;
#declare real_size;


input labels = yes;
input hidelines = yes;
input bubbles = no;
input audibleAlerts = no;

def _aP1 = GetAggregationPeriod();
def _aP2 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.THREE_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.FOUR_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.FIVE_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.TWENTY_MIN else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.FOUR_HOURS else AggregationPeriod.DAY);

def _aP3 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.FIVE_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.DAY else AggregationPeriod.TWO_DAYS);

def _aP4 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.TEN_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.TWENTY_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.DAY else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.TWO_DAYS else AggregationPeriod.THREE_DAYS);

def _aP5 = (
if _aP1 == AggregationPeriod.MIN then AggregationPeriod.FIFTEEN_MIN else
if _aP1 == AggregationPeriod.TWO_MIN then AggregationPeriod.TWENTY_MIN else
if _aP1 == AggregationPeriod.THREE_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.FOUR_MIN then AggregationPeriod.THIRTY_MIN else
if _aP1 == AggregationPeriod.FIVE_MIN then AggregationPeriod.HOUR else
if _aP1 == AggregationPeriod.TEN_MIN then AggregationPeriod.TWO_HOURS else
if _aP1 == AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.TWENTY_MIN then AggregationPeriod.FOUR_HOURS else
if _aP1 == AggregationPeriod.THIRTY_MIN then AggregationPeriod.DAY else
if _aP1 == AggregationPeriod.HOUR then AggregationPeriod.TWO_DAYS else
if _aP1 == AggregationPeriod.TWO_HOURS then AggregationPeriod.THREE_DAYS else AggregationPeriod.FOUR_DAYS);

def agg1 = _aP1;
def agg2 = _aP2;
def agg3 = _aP3;
def agg4 = _aP4;
def agg5 = _aP5;

input AtrMult = 1;
input nATR = 6;
input AvgType = AverageType.HULL;

DefineGlobalColor ("Line", Color.LIGHT_GRAY);
DefineGlobalColor ("TrendUp", Color.LIGHT_GREEN);
DefineGlobalColor ("TrendDown", Color.LIGHT_RED);
DefineGlobalColor ("Buy", Color.GREEN);
DefineGlobalColor ("Sell", Color.RED);

def Line = 1.75;

def Fh = FundamentalType.HIGH;
def Fl = FundamentalType.LOW;
def Fc = FundamentalType.CLOSE;
def Fhl2 = FundamentalType.HL2;

def h = Fundamental(Fh, period = agg1);
def l = Fundamental(Fl, period = agg1);
def c = Fundamental(Fc, period = agg1);
def hl = Fundamental(Fhl2, period = agg1);
def ATR = MovingAverage(AvgType, TrueRange(h, c, l), nATR);
def UP = hl + (AtrMult * ATR);
def DN = hl + (-AtrMult * ATR);
def S = if c < S[1] then Round(UP / TickSize(), 0) * TickSize() else Round(DN / TickSize(), 0) * TickSize();

def h2 = Fundamental(Fh, period = agg2);
def l2 = Fundamental(Fl, period = agg2);
def c2 = Fundamental(Fc, period = agg2);
def hl2 = Fundamental(Fhl2, period = agg2);
def ATR2 = MovingAverage(AvgType, TrueRange(h2, c2, l2), nATR);
def UP2 = hl2 + (AtrMult * ATR2);
def DN2 = hl2 + (-AtrMult * ATR2);
def S2 = if c2 < S2[1] then Round(UP2 / TickSize(), 0) * TickSize() else Round(DN2 / TickSize(), 0) * TickSize();

def h3 = Fundamental(Fh, period = agg3);
def l3 = Fundamental(Fl, period = agg3);
def c3 = Fundamental(Fc, period = agg3);
def hl3 = Fundamental(Fhl2, period = agg3);
def ATR3 = MovingAverage(AvgType, TrueRange(h3, c3, l3), nATR);
def UP3 = hl3 + (AtrMult * ATR3);
def DN3 = hl3 + (-AtrMult * ATR3);
def S3 = if c3 < S3[1] then Round(UP3 / TickSize(), 0) * TickSize() else Round(DN3 / TickSize(), 0) * TickSize();

def h4 = Fundamental(Fh, period = agg4);
def l4 = Fundamental(Fl, period = agg4);
def c4 = Fundamental(Fc, period = agg4);
def hl4 = Fundamental(Fhl2, period = agg4);
def ATR4 = MovingAverage(AvgType, TrueRange(h4, c4, l4), nATR);
def UP4 = hl4 + (AtrMult * ATR4);
def DN4 = hl4 + (-AtrMult * ATR4);
def S4 = if c4 < S4[1] then Round(UP4 / TickSize(), 0) * TickSize() else Round(DN4 / TickSize(), 0) * TickSize();

def h5 = Fundamental(Fh, period = agg5);
def l5 = Fundamental(Fl, period = agg5);
def c5 = Fundamental(Fc, period = agg5);
def hl5 = Fundamental(Fhl2, period = agg5);
def ATR5 = MovingAverage(AvgType, TrueRange(h5, c5, l5), nATR);
def UP5 = hl5 + (AtrMult * ATR5);
def DN5 = hl5 + (-AtrMult * ATR5);
def S5 = if c5 < S5[1] then Round(UP5 / TickSize(), 0) * TickSize() else Round(DN5 / TickSize(), 0) * TickSize();



plot hLine = Line ;
hLine.SetDefaultColor(GlobalColor("Line"));
plot lLine = -Line;
hLine.SetHiding(hidelines);
lLine.SetDefaultColor(GlobalColor("Line"));
lLine.SetHiding(hidelines);
def cl = close;
def x = bubbles and IsNaN(cl[2]) and !IsNaN(cl[3]);

def FirstAgg = if c > S then 1 else 0;
plot FirstAggPlot = if IsNaN(cl) then Double.NaN else 1;
FirstAggPlot.SetStyle(Curve.POINTS);
FirstAggPlot.SetLineWeight(2);
FirstAggPlot.SetHiding(hidelines);
FirstAggPlot.AssignValueColor(if FirstAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));
AddChartBubble(x, 1, (agg1 / 1000 / 60) + " min", Color.WHITE, yes);

def SecondAgg =  if c2 > S2 then 1 else 0;
plot SecondAggPlot = if IsNaN(cl) then Double.NaN else 0.5;
SecondAggPlot.SetStyle(Curve.POINTS);
SecondAggPlot.SetLineWeight(3);
SecondAggPlot.SetHiding(hidelines);
SecondAggPlot.AssignValueColor(if SecondAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));
AddChartBubble(x, 0.5, (agg2 / 1000 / 60) + " min", Color.WHITE, yes);

def ThirdAgg =  if c3 > S3 then 1 else 0;
plot ThirdAggPlot = if IsNaN(cl) then Double.NaN else 0;
ThirdAggPlot.SetStyle(Curve.POINTS);
ThirdAggPlot.SetLineWeight(3);
ThirdAggPlot.SetHiding(hidelines);
ThirdAggPlot.AssignValueColor(if ThirdAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));
AddChartBubble(x, 0, (agg3 / 1000 / 60) + " min", Color.WHITE, yes);

def FourthAgg =  if c4 > S4 then 1 else 0;
plot FourthAggPlot = if IsNaN(cl) then Double.NaN else -0.5;
FourthAggPlot.SetStyle(Curve.POINTS);
FourthAggPlot.SetLineWeight(4);
FourthAggPlot.SetHiding(hidelines);
FourthAggPlot.AssignValueColor(if FourthAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));
AddChartBubble(x, -0.5, (agg4 / 1000 / 60) + " min", Color.WHITE, yes);

def FifthAgg =  if c5 > S5 then 1 else 0;
plot FifthAggPlot = if IsNaN(cl) then Double.NaN else -1;
FifthAggPlot.SetStyle(Curve.POINTS);
FifthAggPlot.SetLineWeight(4);
FifthAggPlot.SetHiding(hidelines);
FifthAggPlot.AssignValueColor(if FifthAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));

AddChartBubble(x, -1, (agg5 / 1000 / 60) + " min", Color.WHITE, yes);
plot Direction = if (FirstAgg and SecondAgg and ThirdAgg and FourthAgg and FifthAgg) then hLine + .5 else if (!FirstAgg and !SecondAgg and !ThirdAgg and !FourthAgg and !FifthAgg) then lLine - .5 else Double.NaN;

def Bullish = (if FirstAgg and SecondAgg and ThirdAgg and FourthAgg and FifthAgg then 1 else 0);
def Bearish = (if !FirstAgg and !SecondAgg and !ThirdAgg and !FourthAgg and !FifthAgg then 1 else 0);

Direction.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
Direction.SetLineWeight(4);
Direction.SetHiding(hidelines);
Direction.AssignValueColor(if Bullish then GlobalColor ("Buy") else if Bearish then GlobalColor ("Sell") else Color.BLACK);

Alert(audibleAlerts and Bullish, "SuperTrend UpTrend Started",   Alert.BAR, Sound.Ding);
Alert(audibleAlerts and Bearish, "SuperTrend DownTrend Started", Alert.BAR, Sound.Ring);

#Labels
AddLabel(labels, (agg1 / 1000 / 60) + " min", if FirstAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));
AddLabel(labels, (agg2 / 1000 / 60) + " min", if SecondAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));
AddLabel(labels, (agg3 / 1000 / 60) + " min", if ThirdAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));
AddLabel(labels, (agg4 / 1000 / 60) + " min", if FourthAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));
AddLabel(labels, (agg5 / 1000 / 60) + " min", if FifthAgg then GlobalColor("TrendUp") else  GlobalColor("TrendDown"));
AddLabel(labels, if Bullish then "Buy" else if Bearish then "Sell" else "No Direction", if Bullish then GlobalColor ("Buy") else if Bearish then GlobalColor ("Sell") else Color.WHITE);
# End Code ST MTF
 

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
598 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