Triple SuperTrend overlap For ThinkOrSwim

chackiejan

New member
I'd like to create a scanner that scans sp500 stocks where these three indicators are met on 15m timeframe for intraday trading. I'm new to TOS

1. ATR 10 HL2 MP 1
2. ATR 11 HL2 MP 2
3. ATR 12 HL2 MP 3
 
I am looking for something similar to this. I want to scan for a triple supertrend occurance where all 3 Supertrends are now the same color using the setting from the OP post
1. ATR 10 HL2 MP 1
2. ATR 11 HL2 MP 2
3. ATR 12 HL2 MP 3
I want to add a 200 EMA also. It would be great if all the supertrend values could be changed but the defaults are the ones shown. Same for the EMA so that it could be changed to different types of MA such as HULL and the length could be changed, but default at 200. Here is YT video discussing this method YT Video here
It would be nice to have an all in one indicator and a scan that could be used with it. Thanks in advance for any help
 
The ToS platform finds most Supertrend studies too complex to be used in the Stock Scan Hacker
Which would mean THREE Supertrend studies would not be possible.
 
I'd like to create a scanner that scans sp500 stocks where these three indicators are met on 15m timeframe for intraday trading. I'm new to TOS

1. ATR 10 HL2 MP 1
2. ATR 11 HL2 MP 2
3. ATR 12 HL2 MP 3
If you set Supertrend to cross below price for bullish signal and Supertrend to cross above price for bearish signal should work. The only issue would be that you would have to wait for the candle to close to confirm signal from the scan. Hope this helps!
 
Last edited:
Is it possible to plot this Triple Supertrend as a red dot/ green dot ribbon as a lower indicator so it might look like this
EMGYWcV.png


I want to be able to track 3 different Supertrends with 3 different settings
 
I Hope someone of the group can help!! this is look very good idea.
not the best coding. pls verify :)

# 3 + Super Trend
# 06/2022
#3 Super Trend - Mod by SAM4COK


declare lower;

input ATR1 = 1.0; # Between 1 - 100
input Period1 = 10; #Between 1 - 100
input ATR2 = 2.0; # Between 1 - 100
input Period2 = 11; #Between 1 - 100
input ATR3 = 3.0; # Between 1 - 100
input Period3 = 12; #Between 1 - 100
input changeATR = no;
input ShowLabel = yes;
input AvgType = AverageType.SIMPLE;

Assert(ATR1 > 0 and ATR2 > 0 and ATR3 > 0, "'atr factor' must be positive");

def Agg = GetAggregationPeriod();

def closePrice = close(period = Agg);
def highPrice = high(period = Agg);
def lowPrice = low(period = Agg);
def PriceST = hl2(period = Agg);
def Na = Double.NaN;

def iATR1 = if changeATR then ATR(Period1) else MovingAverage(AvgType, Max(Max(highPrice - lowPrice, AbsValue(highPrice - closePrice[1])), AbsValue(lowPrice - closePrice[1])), Period1);
def iATR2 = if changeATR then ATR(Period2) else MovingAverage(AvgType, Max(Max(highPrice - lowPrice, AbsValue(highPrice - closePrice[1])), AbsValue(lowPrice - closePrice[1])), Period2);
def iATR3 = if changeATR then ATR(Period3) else MovingAverage(AvgType, Max(Max(highPrice - lowPrice, AbsValue(highPrice - closePrice[1])), AbsValue(lowPrice - closePrice[1])), Period3);

def UP_Band_Basic1 = PriceST + (ATR1 * iATR1);
def LW_Band_Basic1 = PriceST - (ATR1 * iATR1);
def UP_Band_Basic2 = PriceST + (ATR2 * iATR2);
def LW_Band_Basic2 = PriceST - (ATR2 * iATR2);
def UP_Band_Basic3 = PriceST + (ATR3 * iATR3);
def LW_Band_Basic3 = PriceST - (ATR3 * iATR3);

def UP_Band1 = if ((UP_Band_Basic1 < UP_Band1[1]) or (closePrice[1] > UP_Band1[1])) then UP_Band_Basic1 else UP_Band1[1];
def LW_Band1 = if ((LW_Band_Basic1 > LW_Band1[1]) or (closePrice[1] < LW_Band1[1])) then LW_Band_Basic1 else LW_Band1[1];

def UP_Band2 = if ((UP_Band_Basic2 < UP_Band2[1]) or (closePrice[1] > UP_Band2[1])) then UP_Band_Basic2 else UP_Band2[1];
def LW_Band2 = if ((LW_Band_Basic2 > LW_Band2[1]) or (closePrice[1] < LW_Band2[1])) then LW_Band_Basic2 else LW_Band2[1];

def UP_Band3 = if ((UP_Band_Basic3 < UP_Band3[1]) or (closePrice[1] > UP_Band3[1])) then UP_Band_Basic3 else UP_Band3[1];
def LW_Band3 = if ((LW_Band_Basic3 > LW_Band3[1]) or (closePrice[1] < LW_Band3[1])) then LW_Band_Basic3 else LW_Band3[1];


def ST1 = if ((ST1[1] == UP_Band1[1]) and (closePrice < UP_Band1)) then UP_Band1 else
if ((ST1[1] == UP_Band1[1]) and (closePrice > UP_Band1)) then LW_Band1 else
if ((ST1[1] == LW_Band1[1]) and (closePrice > LW_Band1)) then LW_Band1 else
if ((ST1[1] == LW_Band1) and (closePrice < LW_Band1)) then UP_Band1 else LW_Band1;

def ST2 = if ((ST2[1] == UP_Band2[1]) and (closePrice < UP_Band2)) then UP_Band2 else
if ((ST2[1] == UP_Band2[1]) and (closePrice > UP_Band2)) then LW_Band2 else
if ((ST2[1] == LW_Band2[1]) and (closePrice > LW_Band2)) then LW_Band2 else
if ((ST2[1] == LW_Band2) and (closePrice < LW_Band2)) then UP_Band2 else LW_Band2;

def ST3 = if ((ST3[1] == UP_Band3[1]) and (closePrice < UP_Band3)) then UP_Band3 else
if ((ST3[1] == UP_Band3[1]) and (closePrice > UP_Band3)) then LW_Band3 else
if ((ST3[1] == LW_Band3[1]) and (closePrice > LW_Band3)) then LW_Band3 else
if ((ST3[1] == LW_Band3) and (closePrice < LW_Band3)) then UP_Band3 else LW_Band3;

Plot Long1 = if closePrice > ST1 then 1 else 0;
long1.SetPaintingStrategy(PaintingStrategy.POINTS);
Long1.AssignValueColor(if Long1 == 0 then color.black else CreateColor(100, 181, 246));
long1.SetLineWeight(1);
Plot Short1 = if closePrice < ST1 then 1 else 0;
Short1.SetPaintingStrategy(PaintingStrategy.POINTS);
short1.AssignValueColor(if short1 == 0 then color.black else CreateColor(239, 83, 80));
Short1.SetLineWeight(1);

Plot Long2 = if closePrice > ST2 then 2 else 0;
long2.SetPaintingStrategy(PaintingStrategy.POINTS);
Long2.AssignValueColor(if Long2 == 0 then color.black else CreateColor(100, 181, 246));
long2.SetLineWeight(1);
Plot Short2 = if closePrice < ST2 then 2 else 0;
Short2.SetPaintingStrategy(PaintingStrategy.POINTS);
short2.AssignValueColor(if short2 == 0 then color.black else CreateColor(239, 83, 80));
Short2.SetLineWeight(1);

Plot Long3 = if closePrice > ST3 then 3 else 0;
long3.SetPaintingStrategy(PaintingStrategy.POINTS);
Long3.AssignValueColor(if Long3 == 0 then color.black else CreateColor(100, 181, 246));
long3.SetLineWeight(1);
Plot Short3 = if closePrice < ST3 then 3 else 0;
Short3.SetPaintingStrategy(PaintingStrategy.POINTS);
short3.AssignValueColor(if short3 == 0 then color.black else CreateColor(239, 83, 80));
Short3.SetLineWeight(1);

Plot trendUP = if (Long1 + long2 + long3) > 1 then 4 else Na;
Plot trendDN = if (Short1 + Short2 + Short3) > 1 then 4 else Na;

trendUP.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
trendUP.AssignValueColor(if long1 > 0 and long2 > 0 and long3 > 0 then color.GREEN else color.orange);
trendUP.SetLineWeight(1);
trendDN.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
trendDN.AssignValueColor(if short1 > 0 and short2 > 0 and short3 > 0 then color.RED else color.orange);
trendDN.SetLineWeight(1);

addlabel (ShowLabel, "Trend", if long1 > 0 and long2 > 0 and long3 > 0 then color.GREEN else if short1 > 0 and short2 > 0 and short3 > 0 then color.RED else color.orange);
 
I am looking for something similar to this. I want to scan for a triple supertrend occurance where all 3 Supertrends are now the same color using the setting from the OP post
1. ATR 10 HL2 MP 1
2. ATR 11 HL2 MP 2
3. ATR 12 HL2 MP 3
I want to add a 200 EMA also. It would be great if all the supertrend values could be changed but the defaults are the ones shown. Same for the EMA so that it could be changed to different types of MA such as HULL and the length could be changed, but default at 200. Here is YT video discussing this method YT Video here
It would be nice to have an all in one indicator and a scan that could be used with it. Thanks in advance for any help
paste the below in the scanner. Change change the # for uptrend or down trend.

# 3 + Super Trend Scan
# 06/2022
#3 Super Trend - Mod by SAM4COK

declare lower;

input ATR1 = 1.0; # Between 1 - 100
input Period1 = 10; #Between 1 - 100
input ATR2 = 2.0; # Between 1 - 100
input Period2 = 11; #Between 1 - 100
input ATR3 = 3.0; # Between 1 - 100
input Period3 = 12; #Between 1 - 100

input AvgType = AverageType.SIMPLE;


def Na = Double.NaN;

def iATR1 = ATR(Period1);
def iATR2 = ATR(Period2);
def iATR3 = ATR(Period3);

def UP_Band_Basic1 = hl2 + (ATR1 * iATR1);
def LW_Band_Basic1 = hl2 - (ATR1 * iATR1);

def UP_Band_Basic2 = hl2 + (ATR2 * iATR2);
def LW_Band_Basic2 = hl2 - (ATR2 * iATR2);

def UP_Band_Basic3 = hl2 + (ATR3 * iATR3);
def LW_Band_Basic3 = hl2 - (ATR3 * iATR3);

def UP_Band1 = if ((UP_Band_Basic1 < UP_Band1[1]) or (close[1] > UP_Band1[1])) then UP_Band_Basic1 else UP_Band1[1];
def LW_Band1 = if ((LW_Band_Basic1 > LW_Band1[1]) or (close[1] < LW_Band1[1])) then LW_Band_Basic1 else LW_Band1[1];

def UP_Band2 = if ((UP_Band_Basic2 < UP_Band2[1]) or (close[1] > UP_Band2[1])) then UP_Band_Basic2 else UP_Band2[1];
def LW_Band2 = if ((LW_Band_Basic2 > LW_Band2[1]) or (close[1] < LW_Band2[1])) then LW_Band_Basic2 else LW_Band2[1];

def UP_Band3 = if ((UP_Band_Basic3 < UP_Band3[1]) or (close[1] > UP_Band3[1])) then UP_Band_Basic3 else UP_Band3[1];
def LW_Band3 = if ((LW_Band_Basic3 > LW_Band3[1]) or (close[1] < LW_Band3[1])) then LW_Band_Basic3 else LW_Band3[1];


def ST1 = if ((ST1[1] == UP_Band1[1]) and (close < UP_Band1)) then UP_Band1 else
if ((ST1[1] == UP_Band1[1]) and (close > UP_Band1)) then LW_Band1 else
if ((ST1[1] == LW_Band1[1]) and (close > LW_Band1)) then LW_Band1 else
if ((ST1[1] == LW_Band1) and (close < LW_Band1)) then UP_Band1 else LW_Band1;

def ST2 = if ((ST2[1] == UP_Band2[1]) and (close < UP_Band2)) then UP_Band2 else
if ((ST2[1] == UP_Band2[1]) and (close > UP_Band2)) then LW_Band2 else
if ((ST2[1] == LW_Band2[1]) and (close > LW_Band2)) then LW_Band2 else
if ((ST2[1] == LW_Band2) and (close < LW_Band2)) then UP_Band2 else LW_Band2;

def ST3 = if ((ST3[1] == UP_Band3[1]) and (close < UP_Band3)) then UP_Band3 else
if ((ST3[1] == UP_Band3[1]) and (close > UP_Band3)) then LW_Band3 else
if ((ST3[1] == LW_Band3[1]) and (close > LW_Band3)) then LW_Band3 else
if ((ST3[1] == LW_Band3) and (close < LW_Band3)) then UP_Band3 else LW_Band3;

def Long1 = if close > ST1 then 1 else 0;
def Short1 = if close < ST1 then 1 else 0;

def Long2 = if close > ST2 then 1 else 0;
def Short2 = if close < ST2 then 1 else 0;

def Long3 = if close > ST3 then 1 else 0;
def Short3 = if close < ST3 then 1 else 0;

def Long = if (Long1 + long2 + long3) == 3 then 1 else na;
def Short = if (Short1 + Short2 + Short3) == 3 then 1 else na ;

Plot trendUP = Long;
#Plot trendDN = Short;
 
Complete newbie to coding, so please bear with my questions:
(1) What do the 3 time periods 10, 11, and 12 mean?
(2) Is period 1 the most sensitive?
(3) Can this indicator placed on any timeframe?
Thanks
 
Complete newbie to coding, so please bear with my questions:
(1) What do the 3 time periods 10, 11, and 12 mean? Number of backward bars used for calculation .
(2) Is period 1 the most sensitive? Depends on the inputs. lowers inputs usually more sensitive to recent price action.
(3) Can this indicator placed on any timeframe? yes.
Thanks

I am not expert either but hope above answer you.
 
I Hope someone of the group can help!! this is look very good idea.
I found this on another website.. tell me if this is what you are looking for..

# SuperTrend Multiple Time Frames

declare lower;

input agg1 = AggregationPeriod.FIVE_MIN;
input agg2 = AggregationPeriod.TEN_MIN;
input agg3 = AggregationPeriod.FIFTEEN_MIN;
input agg4 = AggregationPeriod.THIRTY_MIN;
input agg5 = AggregationPeriod.HOUR;
input AtrMult = .70;
input nATR = 4;
input AvgType = AverageType.HULL;

script ST {
input agg = AggregationPeriod.FIVE_MIN;
input AtrMult = .70;
input nATR = 4;
input AvgType = AverageType.HULL;
def Fh = FundamentalType.HIGH;
def Fl = FundamentalType.LOW;
def Fc = FundamentalType.CLOSE;
def Fhl2 = FundamentalType.HL2;
def h = Fundamental(Fh, period = agg);
def l = Fundamental(Fl, period = agg);
def c = Fundamental(Fc, period = agg);
def hl = Fundamental(Fhl2, period = agg);
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();
plot ST = if c > S then 1 else 0;
}
def cl = close;
def x = IsNaN(cl[2]) and !IsNaN(cl[3]);
def FirstAgg = ST(agg = agg1, AtrMult = AtrMult, nATR = nATR, AvgType = AvgType);
plot FirstAggPlot = if IsNaN(cl)
then Double.NaN
else 1;
FirstAggPlot.SetStyle(Curve.POINTS);
FirstAggPlot.SetLineWeight(3);
FirstAggPlot.AssignValueColor(if FirstAgg == 1
then Color.GREEN
else Color.RED);
AddChartBubble(x, 1, (agg1 / 1000 / 60) + " min", Color.WHITE, yes);
def SecondAgg = ST(agg = agg2, AtrMult = AtrMult, nATR = nATR, AvgType = AvgType);
plot SecondAggPlot = if IsNaN(cl)
then Double.NaN
else 2;
SecondAggPlot.SetStyle(Curve.POINTS);
SecondAggPlot.SetLineWeight(3);
SecondAggPlot.AssignValueColor(if SecondAgg == 1
then Color.GREEN
else Color.RED);
AddChartBubble(x, 2, (agg2 / 1000 / 60) + " min", Color.WHITE, yes);
def ThirdAgg = ST(agg = agg3, AtrMult = AtrMult, nATR = nATR, AvgType = AvgType);
plot ThirdAggPlot = if IsNaN(cl)
then Double.NaN
else 3;
ThirdAggPlot.SetStyle(Curve.POINTS);
ThirdAggPlot.SetLineWeight(3);
ThirdAggPlot.AssignValueColor(if ThirdAgg == 1
then Color.GREEN
else Color.RED);
AddChartBubble(x, 3, (agg3 / 1000 / 60) + " min", Color.WHITE, yes);
def FourthAgg = ST(agg = agg4, AtrMult = AtrMult, nATR = nATR, AvgType = AvgType);
plot FourthAggPlot = if IsNaN(cl)
then Double.NaN
else 4;
FourthAggPlot.SetStyle(Curve.POINTS);
FourthAggPlot.SetLineWeight(3);
FourthAggPlot.AssignValueColor(if FourthAgg == 1
then Color.GREEN
else Color.RED);
AddChartBubble(x, 4, (agg4 / 1000 / 60) + " min", Color.WHITE, yes);
def FifthAgg = ST(agg = agg5, AtrMult = AtrMult, nATR = nATR, AvgType = AvgType);
plot FifthAggPlot = if IsNaN(cl)
then Double.NaN
else 5;
FifthAggPlot.SetStyle(Curve.POINTS);
FifthAggPlot.SetLineWeight(3);
FifthAggPlot.AssignValueColor(if FifthAgg == 1
then Color.GREEN
else Color.RED);
AddChartBubble(x, 5, (agg5 / 1000 / 60) + " min", Color.WHITE, yes);
plot Six = if IsNaN(cl)
then Double.NaN
else 6;
Six.SetStyle(Curve.POINTS);
Six.SetLineWeight(3);
Six.AssignValueColor(if FirstAgg and
SecondAgg and
ThirdAgg and
FourthAgg and
FifthAgg
then Color.GREEN
else if !FirstAgg and
!SecondAgg and
!ThirdAgg and
!FourthAgg and
!FifthAgg
then Color.RED
else Color.BLUE);
# End Code SUPERTREND MTF
 
I found this on another website.. tell me if this is what you are looking for..

# SuperTrend Multiple Time Frames

declare lower;

input agg1 = AggregationPeriod.FIVE_MIN;
input agg2 = AggregationPeriod.TEN_MIN;
input agg3 = AggregationPeriod.FIFTEEN_MIN;
input agg4 = AggregationPeriod.THIRTY_MIN;
input agg5 = AggregationPeriod.HOUR;
input AtrMult = .70;
input nATR = 4;
input AvgType = AverageType.HULL;

script ST {
input agg = AggregationPeriod.FIVE_MIN;
input AtrMult = .70;
input nATR = 4;
input AvgType = AverageType.HULL;
def Fh = FundamentalType.HIGH;
def Fl = FundamentalType.LOW;
def Fc = FundamentalType.CLOSE;
def Fhl2 = FundamentalType.HL2;
def h = Fundamental(Fh, period = agg);
def l = Fundamental(Fl, period = agg);
def c = Fundamental(Fc, period = agg);
def hl = Fundamental(Fhl2, period = agg);
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();
plot ST = if c > S then 1 else 0;
}
def cl = close;
def x = IsNaN(cl[2]) and !IsNaN(cl[3]);
def FirstAgg = ST(agg = agg1, AtrMult = AtrMult, nATR = nATR, AvgType = AvgType);
plot FirstAggPlot = if IsNaN(cl)
then Double.NaN
else 1;
FirstAggPlot.SetStyle(Curve.POINTS);
FirstAggPlot.SetLineWeight(3);
FirstAggPlot.AssignValueColor(if FirstAgg == 1
then Color.GREEN
else Color.RED);
AddChartBubble(x, 1, (agg1 / 1000 / 60) + " min", Color.WHITE, yes);
def SecondAgg = ST(agg = agg2, AtrMult = AtrMult, nATR = nATR, AvgType = AvgType);
plot SecondAggPlot = if IsNaN(cl)
then Double.NaN
else 2;
SecondAggPlot.SetStyle(Curve.POINTS);
SecondAggPlot.SetLineWeight(3);
SecondAggPlot.AssignValueColor(if SecondAgg == 1
then Color.GREEN
else Color.RED);
AddChartBubble(x, 2, (agg2 / 1000 / 60) + " min", Color.WHITE, yes);
def ThirdAgg = ST(agg = agg3, AtrMult = AtrMult, nATR = nATR, AvgType = AvgType);
plot ThirdAggPlot = if IsNaN(cl)
then Double.NaN
else 3;
ThirdAggPlot.SetStyle(Curve.POINTS);
ThirdAggPlot.SetLineWeight(3);
ThirdAggPlot.AssignValueColor(if ThirdAgg == 1
then Color.GREEN
else Color.RED);
AddChartBubble(x, 3, (agg3 / 1000 / 60) + " min", Color.WHITE, yes);
def FourthAgg = ST(agg = agg4, AtrMult = AtrMult, nATR = nATR, AvgType = AvgType);
plot FourthAggPlot = if IsNaN(cl)
then Double.NaN
else 4;
FourthAggPlot.SetStyle(Curve.POINTS);
FourthAggPlot.SetLineWeight(3);
FourthAggPlot.AssignValueColor(if FourthAgg == 1
then Color.GREEN
else Color.RED);
AddChartBubble(x, 4, (agg4 / 1000 / 60) + " min", Color.WHITE, yes);
def FifthAgg = ST(agg = agg5, AtrMult = AtrMult, nATR = nATR, AvgType = AvgType);
plot FifthAggPlot = if IsNaN(cl)
then Double.NaN
else 5;
FifthAggPlot.SetStyle(Curve.POINTS);
FifthAggPlot.SetLineWeight(3);
FifthAggPlot.AssignValueColor(if FifthAgg == 1
then Color.GREEN
else Color.RED);
AddChartBubble(x, 5, (agg5 / 1000 / 60) + " min", Color.WHITE, yes);
plot Six = if IsNaN(cl)
then Double.NaN
else 6;
Six.SetStyle(Curve.POINTS);
Six.SetLineWeight(3);
Six.AssignValueColor(if FirstAgg and
SecondAgg and
ThirdAgg and
FourthAgg and
FifthAgg
then Color.GREEN
else if !FirstAgg and
!SecondAgg and
!ThirdAgg and
!FourthAgg and
!FifthAgg
then Color.RED
else Color.BLUE);
# End Code SUPERTREND MTF
How do you just use this for input agg = AggregationPeriod.Day; can you revise it just for daily aggregation?
 
Hi everyone. Could someone direct me to an explanation of this Triple Super Trend lower study? I get how to use the study but would be interested to hear thoughts on setting for 1 minute, 10 minute and 60 minute. Which moving average suites the different time frames: simple, exponential, etc.? My coding skill are not sufficient to contribute meaningfully to these discussions on this forum; nonetheless this forum has help me in so many ways. Thanks in advance, D.
 
Hello All,

This is my first ever ThinkScript, so don't expect super quality standards. I am still learning.
Please provide your feedback/comments/suggestions (be nice please, this is my first script and iam also new to TOS)

I found a video explaining how to use 3 SuperTrend for getting strong signals on trend reversal

Went ahead and tried to implement it as single indicator in TOS myself. I tried to generate strong signals only knowing I may miss some part of the rally or drop but I want reliable signals for confirmed reversal as I plan to use this for option trading 45dte and above. So, it is OK if I miss some of the move. As long as I can capture atleast 50% of the move, my options strategy will benefit.

Thanks,
JJ

Code:
# Multi SuperTrend by JJ - V1.0
# Buy/Sell signals are generated when 3 timeframe SuperTrends signals

script DoCalc {
input PriceSource = HL2;
input AtrMultiplier = 3.00;
input Periods = 10;
input AverageType = AverageType.SIMPLE;

def ATR = ATR("length" = Periods, "average type" = AverageType);
#def ATR = ATR("length" = Periods);
def tmpUP = PriceSource - (AtrMultiplier * ATR);
def tmpDN = PriceSource + (AtrMultiplier * ATR);
def finalUP = If(close[1] > finalUP[1], Max(tmpUP, finalUP[1]), tmpUP);
def finalDN = If(close[1] < finalDN[1], Min(tmpDN, finalDN[1]), tmpDN);
def trendDir = If( close > finalDN[1], 1, If( close < finalUP[1], -1, If(!IsNaN(trendDir[1]), trendDir[1], 1) ) );

plot upper_Band = finalUp;
plot lower_Band = finalDN;
plot trendDirection = trendDir;
plot trendLine = If(trendDir == 1, finalUP, finalDN);
plot buySignal = trendDir == 1 and trendDir[1] == -1;
plot sellSignal = trendDir == -1 and trendDir[1] == 1;
}

input PriceSource = HL2;
input AverageType = AverageType.WILDERS;

input AtrMultiplier_1 = 1.00;
input Periods_1 = 21;
input AtrMultiplier_2 = 2.00;
input Periods_2 = 14;
input AtrMultiplier_3 = 3.00;
input Periods_3 = 7;

input ShowArrows = yes;
input ShowBubbles = no;
input ShowLabels = no;
input ShowHighlight = no;
input ShowAllTrendsUI = no;

# Get Signal Info - start
def upper_Band_1 =  DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).upper_Band;
def lower_Band_1 =  DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).lower_Band;
def buySignal_1 = DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).buySignal;
def sellSignal_1 = DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).sellSignal;
def trendDir_1 = DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).trendDirection;
def SuperTrendOut_1 = DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).trendLine;

def upper_Band_2 =  DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).upper_Band;
def lower_Band_2 =  DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).lower_Band;
def buySignal_2 = DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).buySignal;
def sellSignal_2 = DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).sellSignal;
def trendDir_2 = DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).trendDirection;
def SuperTrendOut_2 = DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).trendLine;

def upper_Band_3 =  DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).upper_Band;
def lower_Band_3 =  DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).lower_Band;
def buySignal_3 = DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).buySignal;
def sellSignal_3 = DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).sellSignal;
def trendDir_3 = DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).trendDirection;
def SuperTrendOut_3 = DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).trendLine;
# Get Signal Info - end


# MULTI SUPERTREND CODE HERE - START
def buySignalOpen = (trendDir_1 == 1 and trendDir_2 == 1 and trendDir_3 == 1)
and (trendDir_3[1] == -1);
#def buySignalClose = (trendDir_3 == 1 and trendDir_2[1] == -1);
#def buySignalClose = (trendDir_3 == 1) and (trendDir_2 == -1 and trendDir_2[1] == 1);

def buySignalClose = 0;
#def sellSignalOpen = 0;
def sellSignalClose = 0;

def sellSignalOpen = (trendDir_1 == -1 and trendDir_2 == -1 and trendDir_3 == -1) and (trendDir_3[1] == 1);
#def sellSignalClose = (trendDir_1 == 1 and trendDir_2 == 1 and trendDir_3 == 1) and (trendDir_2[1] == -1);
#def sellSignalClose = (trendDir_3 == -1) and (trendDir_2 == 1 and trendDir_2[1] == -1);

# SHOW BUBBLES
AddChartBubble(ShowBubbles and buySignalOpen, high, "LONG", Color.BLUE, yes);
AddChartBubble(ShowBubbles and buySignalClose, high, "LONG Exit", Color.BLUE, yes);

AddChartBubble(ShowBubbles and sellSignalOpen, high, "SHORT", Color.ORANGE, yes);
AddChartBubble(ShowBubbles and sellSignalClose, high, "SHORT Exit", Color.ORANGE, yes);

# SHOW ARROWS
plot BuySignalArrowUp = if (ShowArrows and buySignalOpen) then low else Double.NaN;
BuySignalArrowUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
BuySignalArrowUp.SetDefaultColor(Color.BLUE);
BuySignalArrowUp.SetLineWeight(5);

plot BuySignalArrowDown = if (ShowArrows and buySignalClose) then low else Double.NaN;
BuySignalArrowDown.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
BuySignalArrowDown.SetDefaultColor(Color.BLUE);
BuySignalArrowDown.SetLineWeight(5);

plot SellSignalArrowUp = if (ShowArrows and sellSignalClose) then low else Double.NaN;
SellSignalArrowUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
SellSignalArrowUp.SetDefaultColor(Color.ORANGE);
SellSignalArrowUp.SetLineWeight(5);

plot SellSignalArrowDown = if (ShowArrows and sellSignalOpen) then low else Double.NaN;
SellSignalArrowDown.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
SellSignalArrowDown.SetDefaultColor(Color.ORANGE);
SellSignalArrowDown.SetLineWeight(5);


#plot ArrowDown = SuperTrendOut_3 crosses above close and ShowArrows;
#plot ArrowDown = high and ShowArrows;
#ArrowDown.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
#ArrowDown.SetDefaultColor(Color.ORANGE);
#ArrowDown.SetLineWeight(5);

#plot ArrowUp = SuperTrendOut_3 crosses below close and ShowArrows;
#plot ArrowUp = low and ShowArrows;
#ArrowUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
#ArrowUp.SetDefaultColor(Color.BLUE);
#ArrowUp.SetLineWeight(5);

# MULTI SUPERTREND CODE HERE - END


# SUPERTREND_1 --- DISPLAY RELATED SECTION - start
# PLOT lines
plot SuperTrend_1 = if ShowAllTrendsUI then SuperTrendOut_1 else Double.NaN;
SuperTrend_1.DefineColor( "up", Color.GREEN );
SuperTrend_1.DefineColor( "dn", Color.RED );
SuperTrend_1.AssignValueColor(SuperTrend_1.Color("up"));
SuperTrend_1.AssignValueColor( if close[1] > SuperTrend_1[1] then SuperTrend_1.Color( "up" ) else SuperTrend_1.Color( "dn" ) );
SuperTrend_1.SetLineWeight( 2 );

# PLOT the start point DOT (circle)
plot LongDot_1 = if buySignal_1 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_1 else Double.NaN;
LongDot_1.SetPaintingStrategy(PaintingStrategy.POINTS);
LongDot_1.AssignValueColor(Color.GREEN);
LongDot_1.SetLineWeight(5);
plot ShortDot_1 = if buySignal_1 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_1 else Double.NaN;
ShortDot_1.SetPaintingStrategy(PaintingStrategy.POINTS);
ShortDot_1.AssignValueColor(Color.RED);
ShortDot_1.SetLineWeight(4);

# SHOW THE LABELS ON TOP LEFT (Current state)
AddLabel((ShowAllTrendsUI and ShowLabels), "ST_1: " + (if close > SuperTrend_1 then "Bullish" else if close < SuperTrend_1 then "Bearish" else "Neutral"),
                     if close > SuperTrend_1 then Color.GREEN else if close < SuperTrend_1 then Color.RED else Color.GRAY);

# SHOW BUBBLES
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and buySignal_1, upper_Band_1, "B_1", Color.GREEN, no);
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and sellSignal_1, lower_Band_1, "S_1", Color.RED, yes);

# HIGHLIGHT THE AREA (Add cloud)
AddCloud(if (ShowAllTrendsUI and ShowHighlight) then SuperTrend_1 else Double.NaN, PriceSource, Color.RED, Color.GREEN, no);

#SUPERTREND_1 --- DISPLAY RELATED SECTION - end

# SUPERTREND_2 --- DISPLAY RELATED SECTION - start
# PLOT lines
plot SuperTrend_2 = if ShowAllTrendsUI then SuperTrendOut_2 else Double.NaN;
SuperTrend_2.DefineColor( "up", Color.GREEN );
SuperTrend_2.DefineColor( "dn", Color.RED );
SuperTrend_2.AssignValueColor(SuperTrend_2.Color("up"));
SuperTrend_2.AssignValueColor( if close[1] > SuperTrend_2[1] then SuperTrend_2.Color( "up" ) else SuperTrend_2.Color( "dn" ) );
SuperTrend_2.SetLineWeight( 2 );

# PLOT the start point DOT (circle)
plot LongDot_2 = if buySignal_2 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_2 else Double.NaN;
LongDot_2.SetPaintingStrategy(PaintingStrategy.POINTS);
LongDot_2.AssignValueColor(Color.GREEN);
LongDot_2.SetLineWeight(5);
plot ShortDot_2 = if buySignal_2 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_2 else Double.NaN;
ShortDot_2.SetPaintingStrategy(PaintingStrategy.POINTS);
ShortDot_2.AssignValueColor(Color.RED);
ShortDot_2.SetLineWeight(4);

# SHOW THE LABELS ON TOP LEFT (Current state)
AddLabel((ShowAllTrendsUI and ShowLabels), "ST_2: " + (if close > SuperTrend_2 then "Bullish" else if close < SuperTrend_2 then "Bearish" else "Neutral"),
                     if close > SuperTrend_2 then Color.GREEN else if close < SuperTrend_2 then Color.RED else Color.GRAY);

# SHOW BUBBLES
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and buySignal_2, upper_Band_2, "B_2", Color.GREEN, no);
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and sellSignal_2, lower_Band_2, "S_2", Color.RED, yes);

# HIGHLIGHT THE AREA (Add cloud)
AddCloud(if (ShowAllTrendsUI and ShowHighlight) then SuperTrend_2 else Double.NaN, PriceSource, Color.RED, Color.GREEN, no);

#SUPERTREND_2 --- DISPLAY RELATED SECTION - end

# SUPERTREND_3 --- DISPLAY RELATED SECTION - start
# PLOT lines
plot SuperTrend_3 = if ShowAllTrendsUI then SuperTrendOut_3 else Double.NaN;
SuperTrend_3.DefineColor( "up", Color.GREEN );
SuperTrend_3.DefineColor( "dn", Color.RED );
SuperTrend_3.AssignValueColor(SuperTrend_3.Color("up"));
SuperTrend_3.AssignValueColor( if close[1] > SuperTrend_3[1] then SuperTrend_3.Color( "up" ) else SuperTrend_3.Color( "dn" ) );
SuperTrend_3.SetLineWeight( 2 );

# PLOT the start point DOT (circle)
plot LongDot_3 = if buySignal_3 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_3 else Double.NaN;
LongDot_3.SetPaintingStrategy(PaintingStrategy.POINTS);
LongDot_3.AssignValueColor(Color.GREEN);
LongDot_3.SetLineWeight(5);
plot ShortDot_3 = if buySignal_3 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_3 else Double.NaN;
ShortDot_3.SetPaintingStrategy(PaintingStrategy.POINTS);
ShortDot_3.AssignValueColor(Color.RED);
ShortDot_3.SetLineWeight(4);

# SHOW THE LABELS ON TOP LEFT (Current state)
AddLabel((ShowAllTrendsUI and ShowLabels), "ST_3: " + (if close > SuperTrend_3 then "Bullish" else if close < SuperTrend_3 then "Bearish" else "Neutral"),
                     if close > SuperTrend_3 then Color.GREEN else if close < SuperTrend_3 then Color.RED else Color.GRAY);

# SHOW BUBBLES
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and buySignal_3, upper_Band_3, "B_3", Color.GREEN, no);
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and sellSignal_3, lower_Band_3, "S_3", Color.RED, yes);

# HIGHLIGHT THE AREA (Add cloud)
AddCloud(if (ShowAllTrendsUI and ShowHighlight) then SuperTrend_3 else Double.NaN, PriceSource, Color.RED, Color.GREEN, no);

#SUPERTREND_3 --- DISPLAY RELATED SECTION - end
 
Take that concept and merge the indicators into a simple bubble indicator that spits out a buy & sell signal on a chart. That way you can go on a 4 week vacation, then return and trade like you've always been behind the screen & be sharp about it all.
 
Last edited by a moderator:
I tried to simply add buy/sell arrows (see bottom of script) but they aren't working. Even when I deselect "show arrows" on the settings, the previous arrows still display.
Code:
# Multi SuperTrend by JJ - V1.0
# Buy/Sell signals are generated when 3 timeframe SuperTrends signals

script DoCalc {
input PriceSource = HL2;
input AtrMultiplier = 3.00;
input Periods = 10;
input AverageType = AverageType.SIMPLE;

def ATR = ATR("length" = Periods, "average type" = AverageType);
#def ATR = ATR("length" = Periods);
def tmpUP = PriceSource - (AtrMultiplier * ATR);
def tmpDN = PriceSource + (AtrMultiplier * ATR);
def finalUP = If(close[1] > finalUP[1], Max(tmpUP, finalUP[1]), tmpUP);
def finalDN = If(close[1] < finalDN[1], Min(tmpDN, finalDN[1]), tmpDN);
def trendDir = If( close > finalDN[1], 1, If( close < finalUP[1], -1, If(!IsNaN(trendDir[1]), trendDir[1], 1) ) );


plot upper_Band = finalUp;
plot lower_Band = finalDN;
plot trendDirection = trendDir;
plot trendLine = If(trendDir == 1, finalUP, finalDN);
plot buySignal = trendDir == 1 and trendDir[1] == -1;
plot sellSignal = trendDir == -1 and trendDir[1] == 1;
}

input PriceSource = HL2;
input AverageType = AverageType.WILDERS;

input AtrMultiplier_1 = 1.00;
input Periods_1 = 21;
input AtrMultiplier_2 = 2.00;
input Periods_2 = 14;
input AtrMultiplier_3 = 3.00;
input Periods_3 = 7;

input ShowArrows = yes;
input ShowBubbles = no;
input ShowLabels = no;
input ShowHighlight = no;
input ShowAllTrendsUI = no;

def StochRSI_main = reference StochRSI("slowing period" = 3);
def StochRSI_Signal = reference StochRSI().FullD;

# Get Signal Info - start
def upper_Band_1 =  DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).upper_Band;
def lower_Band_1 =  DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).lower_Band;
def buySignal_1 = DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).buySignal;
def sellSignal_1 = DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).sellSignal;
def trendDir_1 = DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).trendDirection;
def SuperTrendOut_1 = DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).trendLine;

def upper_Band_2 =  DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).upper_Band;
def lower_Band_2 =  DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).lower_Band;
def buySignal_2 = DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).buySignal;
def sellSignal_2 = DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).sellSignal;
def trendDir_2 = DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).trendDirection;
def SuperTrendOut_2 = DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).trendLine;

def upper_Band_3 =  DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).upper_Band;
def lower_Band_3 =  DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).lower_Band;
def buySignal_3 = DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).buySignal;
def sellSignal_3 = DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).sellSignal;
def trendDir_3 = DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).trendDirection;
def SuperTrendOut_3 = DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).trendLine;
# Get Signal Info - end


# MULTI SUPERTREND CODE HERE - START
def buySignalOpen = (trendDir_1 == 1 and trendDir_2 == 1 and trendDir_3 == 1)
and (trendDir_3[1] == -1);
#def buySignalClose = (trendDir_3 == 1 and trendDir_2[1] == -1);
#def buySignalClose = (trendDir_3 == 1) and (trendDir_2 == -1 and trendDir_2[1] == 1);

def buySignalClose = 0;
#def sellSignalOpen = 0;
def sellSignalClose = 0;

def sellSignalOpen = (trendDir_1 == -1 and trendDir_2 == -1 and trendDir_3 == -1) and (trendDir_3[1] == 1);
#def sellSignalClose = (trendDir_1 == 1 and trendDir_2 == 1 and trendDir_3 == 1) and (trendDir_2[1] == -1);
#def sellSignalClose = (trendDir_3 == -1) and (trendDir_2 == 1 and trendDir_2[1] == -1);

# SHOW BUBBLES
AddChartBubble(ShowBubbles and buySignalOpen, high, "LONG", Color.BLUE, yes);
AddChartBubble(ShowBubbles and buySignalClose, high, "LONG Exit", Color.BLUE, yes);

AddChartBubble(ShowBubbles and sellSignalOpen, high, "SHORT", Color.ORANGE, yes);
AddChartBubble(ShowBubbles and sellSignalClose, high, "SHORT Exit", Color.ORANGE, yes);

# SHOW ARROWS
plot BuySignalArrowUp = if (ShowArrows and buySignalOpen) then low else Double.NaN;
BuySignalArrowUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
BuySignalArrowUp.SetDefaultColor(Color.BLUE);
BuySignalArrowUp.SetLineWeight(5);

plot BuySignalArrowDown = if (ShowArrows and buySignalClose) then low else Double.NaN;
BuySignalArrowDown.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
BuySignalArrowDown.SetDefaultColor(Color.BLUE);
BuySignalArrowDown.SetLineWeight(5);

plot SellSignalArrowUp = if (ShowArrows and sellSignalClose) then low else Double.NaN;
SellSignalArrowUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
SellSignalArrowUp.SetDefaultColor(Color.ORANGE);
SellSignalArrowUp.SetLineWeight(5);

plot SellSignalArrowDown = if (ShowArrows and sellSignalOpen) then low else Double.NaN;
SellSignalArrowDown.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
SellSignalArrowDown.SetDefaultColor(Color.ORANGE);
SellSignalArrowDown.SetLineWeight(5);


#plot ArrowDown = SuperTrendOut_3 crosses above close and ShowArrows;
#plot ArrowDown = high and ShowArrows;
#ArrowDown.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
#ArrowDown.SetDefaultColor(Color.ORANGE);
#ArrowDown.SetLineWeight(5);

#plot ArrowUp = SuperTrendOut_3 crosses below close and ShowArrows;
#plot ArrowUp = low and ShowArrows;
#ArrowUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
#ArrowUp.SetDefaultColor(Color.BLUE);
#ArrowUp.SetLineWeight(5);

# MULTI SUPERTREND CODE HERE - END


# SUPERTREND_1 --- DISPLAY RELATED SECTION - start
# PLOT lines
def SuperTrend_1 = if ShowAllTrendsUI then SuperTrendOut_1 else Double.NaN;
#SuperTrend_1.DefineColor( "up", Color.GREEN );
#SuperTrend_1.DefineColor( "dn", Color.RED );
#SuperTrend_1.AssignValueColor(SuperTrend_1.Color("up"));
#SuperTrend_1.AssignValueColor( if close[1] > SuperTrend_1[1] then SuperTrend_1.Color( "up" ) else SuperTrend_1.Color( "dn" ) );
#SuperTrend_1.SetLineWeight( 2 );

# PLOT the start point DOT (circle)
plot LongDot_1 = if buySignal_1 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_1 else Double.NaN;
LongDot_1.SetPaintingStrategy(PaintingStrategy.POINTS);
LongDot_1.AssignValueColor(Color.GREEN);
LongDot_1.SetLineWeight(5);
plot ShortDot_1 = if buySignal_1 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_1 else Double.NaN;
ShortDot_1.SetPaintingStrategy(PaintingStrategy.POINTS);
ShortDot_1.AssignValueColor(Color.RED);
ShortDot_1.SetLineWeight(4);

# SHOW THE LABELS ON TOP LEFT (Current state)
AddLabel((ShowAllTrendsUI and ShowLabels), "ST_1: " + (if close > SuperTrend_1 then "Bullish" else if close < SuperTrend_1 then "Bearish" else "Neutral"),
                     if close > SuperTrend_1 then Color.GREEN else if close < SuperTrend_1 then Color.RED else Color.GRAY);

# SHOW BUBBLES
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and buySignal_1, upper_Band_1, "B_1", Color.GREEN, no);
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and sellSignal_1, lower_Band_1, "S_1", Color.RED, yes);

# HIGHLIGHT THE AREA (Add cloud)
AddCloud(if (ShowAllTrendsUI and ShowHighlight) then SuperTrend_1 else Double.NaN, PriceSource, Color.RED, Color.GREEN, no);

#SUPERTREND_1 --- DISPLAY RELATED SECTION - end

# SUPERTREND_2 --- DISPLAY RELATED SECTION - start
# PLOT lines
def SuperTrend_2 = if ShowAllTrendsUI then SuperTrendOut_2 else Double.NaN;
#SuperTrend_2.DefineColor( "up", Color.GREEN );
#SuperTrend_2.DefineColor( "dn", Color.RED );
#SuperTrend_2.AssignValueColor(SuperTrend_2.Color("up"));
#SuperTrend_2.AssignValueColor( if close[1] > SuperTrend_2[1] then SuperTrend_2.Color( "up" ) else SuperTrend_2.Color( "dn" ) );
#SuperTrend_2.SetLineWeight( 2 );

# PLOT the start point DOT (circle)
plot LongDot_2 = if buySignal_2 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_2 else Double.NaN;
LongDot_2.SetPaintingStrategy(PaintingStrategy.POINTS);
LongDot_2.AssignValueColor(Color.GREEN);
LongDot_2.SetLineWeight(5);
plot ShortDot_2 = if buySignal_2 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_2 else Double.NaN;
ShortDot_2.SetPaintingStrategy(PaintingStrategy.POINTS);
ShortDot_2.AssignValueColor(Color.RED);
ShortDot_2.SetLineWeight(4);

# SHOW THE LABELS ON TOP LEFT (Current state)
AddLabel((ShowAllTrendsUI and ShowLabels), "ST_2: " + (if close > SuperTrend_2 then "Bullish" else if close < SuperTrend_2 then "Bearish" else "Neutral"),
                     if close > SuperTrend_2 then Color.GREEN else if close < SuperTrend_2 then Color.RED else Color.GRAY);

# SHOW BUBBLES
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and buySignal_2, upper_Band_2, "B_2", Color.GREEN, no);
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and sellSignal_2, lower_Band_2, "S_2", Color.RED, yes);

# HIGHLIGHT THE AREA (Add cloud)
AddCloud(if (ShowAllTrendsUI and ShowHighlight) then SuperTrend_2 else Double.NaN, PriceSource, Color.RED, Color.GREEN, no);

#SUPERTREND_2 --- DISPLAY RELATED SECTION - end

# SUPERTREND_3 --- DISPLAY RELATED SECTION - start
# PLOT lines
def SuperTrend_3 = if ShowAllTrendsUI then SuperTrendOut_3 else Double.NaN;
#SuperTrend_3.DefineColor( "up", Color.GREEN );
#SuperTrend_3.DefineColor( "dn", Color.RED );
#SuperTrend_3.AssignValueColor(SuperTrend_3.Color("up"));
#SuperTrend_3.AssignValueColor( if close[1] > SuperTrend_3[1] then SuperTrend_3.Color( "up" ) else SuperTrend_3.Color( "dn" ) );
#SuperTrend_3.SetLineWeight( 2 );

# PLOT the start point DOT (circle)
plot LongDot_3 = if buySignal_3 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_3 else Double.NaN;
LongDot_3.SetPaintingStrategy(PaintingStrategy.POINTS);
LongDot_3.AssignValueColor(Color.GREEN);
LongDot_3.SetLineWeight(5);
plot ShortDot_3 = if buySignal_3 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_3 else Double.NaN;
ShortDot_3.SetPaintingStrategy(PaintingStrategy.POINTS);
ShortDot_3.AssignValueColor(Color.RED);
ShortDot_3.SetLineWeight(4);

# SHOW THE LABELS ON TOP LEFT (Current state)
AddLabel((ShowAllTrendsUI and ShowLabels), "ST_3: " + (if close > SuperTrend_3 then "Bullish" else if close < SuperTrend_3 then "Bearish" else "Neutral"),
                     if close > SuperTrend_3 then Color.GREEN else if close < SuperTrend_3 then Color.RED else Color.GRAY);

# SHOW BUBBLES
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and buySignal_3, upper_Band_3, "B_3", Color.GREEN, no);
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and sellSignal_3, lower_Band_3, "S_3", Color.RED, yes);

# HIGHLIGHT THE AREA (Add cloud)
AddCloud(if (ShowAllTrendsUI and ShowHighlight) then SuperTrend_3 else Double.NaN, PriceSource, Color.RED, Color.GREEN, no);

#SUPERTREND_3 --- DISPLAY RELATED SECTION - end

plot buysignal = close > supertrend_1 and close > supertrend_2 and StochRSI_Signal [1] < StochRSI_Main[1] and StochRSI_Signal > StochRSI_Main and StochRSI_Signal[1] < 20 and StochRSI_Signal >= 20 and close > reference movAvgExponential(close,200);
buysignal.setPaintingStrategy(paintingStrategy.BOOLEAN_ARROW_UP);
buysignal.setdefaultColor(Color.MAGENTA);
buysignal.setlineweight(5);

plot sellsignal = close < supertrend_1 and close < supertrend_2 and StochRSI_Signal [1] > StochRSI_Main[1] and StochRSI_Signal < StochRSI_Main and StochRSI_Signal[1] > 80 and StochRSI_Signal <= 80 and close < reference movAvgExponential(close,200);;
sellsignal.setPaintingStrategy(paintingStrategy.BOOLEAN_ARROW_DOWN);
sellsignal.setdefaultColor(Color.MAGENTA);
sellsignal.setlineweight(5);
 
I am adding it as a STRATEGY by adding this code at the end of the script but no buy/sell signal. What am I missing here? Thanks


Code:
############################Order ###########################################
AddOrder(OrderType.BUY_TO_OPEN, close > supertrend_1 and close > supertrend_2 and StochRSI_Signal [1] < StochRSI_Main[1] and StochRSI_Signal > StochRSI_Main and StochRSI_Signal[1] < 20 and StochRSI_Signal >= 20 and close > reference movAvgExponential(close,200), price = open[-1],tickcolor = Color.cyan, arrowcolor = Color.cyan, name = "Buy", tradeSize = 1);
#AddOrder(OrderType.BUY_AUTO, isopen and SignalUp[-1], tickcolor = Color.cyan, arrowcolor = Color.cyan, name = "Buy_long", tradeSize = 10);
AddOrder(OrderType.SELL_TO_CLOSE, close < supertrend_1 and close < supertrend_2 and StochRSI_Signal [1] > StochRSI_Main[1] and StochRSI_Signal < StochRSI_Main and StochRSI_Signal[1] > 80 and StochRSI_Signal <= 80 and close < reference movAvgExponential(close,200), price = open[-1], tickcolor = Color.red, arrowcolor = Color.red, name = "sell_long", tradeSize = 1);
 
I am adding it as a STRATEGY by adding this code at the end of the script but no buy/sell signal. What am I missing here? Thanks


Code:
############################Order ###########################################
AddOrder(OrderType.BUY_TO_OPEN, close > supertrend_1 and close > supertrend_2 and StochRSI_Signal [1] < StochRSI_Main[1] and StochRSI_Signal > StochRSI_Main and StochRSI_Signal[1] < 20 and StochRSI_Signal >= 20 and close > reference movAvgExponential(close,200), price = open[-1],tickcolor = Color.cyan, arrowcolor = Color.cyan, name = "Buy", tradeSize = 1);
#AddOrder(OrderType.BUY_AUTO, isopen and SignalUp[-1], tickcolor = Color.cyan, arrowcolor = Color.cyan, name = "Buy_long", tradeSize = 10);
AddOrder(OrderType.SELL_TO_CLOSE, close < supertrend_1 and close < supertrend_2 and StochRSI_Signal [1] > StochRSI_Main[1] and StochRSI_Signal < StochRSI_Main and StochRSI_Signal[1] > 80 and StochRSI_Signal <= 80 and close < reference movAvgExponential(close,200), price = open[-1], tickcolor = Color.red, arrowcolor = Color.red, name = "sell_long", tradeSize = 1);
Did you copy all the indicator code and re-save it as a strategy?
 
Did you copy all the indicator code and re-save it as a strategy?
Yes. My whole code looks like this. Thank you.


Code:
# Multi SuperTrend by JJ - V1.0
# Buy/Sell signals are generated when 3 timeframe SuperTrends signals


script DoCalc {
input PriceSource = HL2;
input AtrMultiplier = 3.00;
input Periods = 10;
input AverageType = AverageType.SIMPLE;


def ATR = ATR("length" = Periods, "average type" = AverageType);
#def ATR = ATR("length" = Periods);
def tmpUP = PriceSource - (AtrMultiplier * ATR);
def tmpDN = PriceSource + (AtrMultiplier * ATR);
def finalUP = If(close[1] > finalUP[1], Max(tmpUP, finalUP[1]), tmpUP);
def finalDN = If(close[1] < finalDN[1], Min(tmpDN, finalDN[1]), tmpDN);
def trendDir = If( close > finalDN[1], 1, If( close < finalUP[1], -1, If(!IsNaN(trendDir[1]), trendDir[1], 1) ) );




plot upper_Band = finalUp;
plot lower_Band = finalDN;
plot trendDirection = trendDir;
plot trendLine = If(trendDir == 1, finalUP, finalDN);
plot buySignal = trendDir == 1 and trendDir[1] == -1;
plot sellSignal = trendDir == -1 and trendDir[1] == 1;
}


input PriceSource = HL2;
input AverageType = AverageType.WILDERS;


input AtrMultiplier_1 = 1.00;
input Periods_1 = 21;
input AtrMultiplier_2 = 2.00;
input Periods_2 = 14;
input AtrMultiplier_3 = 3.00;
input Periods_3 = 7;


input ShowArrows = yes;
input ShowBubbles = no;
input ShowLabels = no;
input ShowHighlight = no;
input ShowAllTrendsUI = no;


def StochRSI_main = reference StochRSI("slowing period" = 3);
def StochRSI_Signal = reference StochRSI().FullD;


# Get Signal Info - start
def upper_Band_1 =  DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).upper_Band;
def lower_Band_1 =  DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).lower_Band;
def buySignal_1 = DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).buySignal;
def sellSignal_1 = DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).sellSignal;
def trendDir_1 = DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).trendDirection;
def SuperTrendOut_1 = DoCalc(PriceSource, AtrMultiplier_1, Periods_1, AverageType).trendLine;


def upper_Band_2 =  DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).upper_Band;
def lower_Band_2 =  DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).lower_Band;
def buySignal_2 = DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).buySignal;
def sellSignal_2 = DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).sellSignal;
def trendDir_2 = DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).trendDirection;
def SuperTrendOut_2 = DoCalc(PriceSource, AtrMultiplier_2, Periods_2, AverageType).trendLine;


def upper_Band_3 =  DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).upper_Band;
def lower_Band_3 =  DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).lower_Band;
def buySignal_3 = DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).buySignal;
def sellSignal_3 = DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).sellSignal;
def trendDir_3 = DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).trendDirection;
def SuperTrendOut_3 = DoCalc(PriceSource, AtrMultiplier_3, Periods_3, AverageType).trendLine;
# Get Signal Info - end




# MULTI SUPERTREND CODE HERE - START
def buySignalOpen = (trendDir_1 == 1 and trendDir_2 == 1 and trendDir_3 == 1)
and (trendDir_3[1] == -1);
#def buySignalClose = (trendDir_3 == 1 and trendDir_2[1] == -1);
#def buySignalClose = (trendDir_3 == 1) and (trendDir_2 == -1 and trendDir_2[1] == 1);


def buySignalClose = 0;
#def sellSignalOpen = 0;
def sellSignalClose = 0;


def sellSignalOpen = (trendDir_1 == -1 and trendDir_2 == -1 and trendDir_3 == -1) and (trendDir_3[1] == 1);
#def sellSignalClose = (trendDir_1 == 1 and trendDir_2 == 1 and trendDir_3 == 1) and (trendDir_2[1] == -1);
#def sellSignalClose = (trendDir_3 == -1) and (trendDir_2 == 1 and trendDir_2[1] == -1);


# SHOW BUBBLES
AddChartBubble(ShowBubbles and buySignalOpen, high, "LONG", Color.BLUE, yes);
AddChartBubble(ShowBubbles and buySignalClose, high, "LONG Exit", Color.BLUE, yes);


AddChartBubble(ShowBubbles and sellSignalOpen, high, "SHORT", Color.ORANGE, yes);
AddChartBubble(ShowBubbles and sellSignalClose, high, "SHORT Exit", Color.ORANGE, yes);


# SHOW ARROWS
plot BuySignalArrowUp = if (ShowArrows and buySignalOpen) then low else Double.NaN;
BuySignalArrowUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
BuySignalArrowUp.SetDefaultColor(Color.BLUE);
BuySignalArrowUp.SetLineWeight(5);


plot BuySignalArrowDown = if (ShowArrows and buySignalClose) then low else Double.NaN;
BuySignalArrowDown.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
BuySignalArrowDown.SetDefaultColor(Color.BLUE);
BuySignalArrowDown.SetLineWeight(5);


plot SellSignalArrowUp = if (ShowArrows and sellSignalClose) then low else Double.NaN;
SellSignalArrowUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
SellSignalArrowUp.SetDefaultColor(Color.ORANGE);
SellSignalArrowUp.SetLineWeight(5);


plot SellSignalArrowDown = if (ShowArrows and sellSignalOpen) then low else Double.NaN;
SellSignalArrowDown.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
SellSignalArrowDown.SetDefaultColor(Color.ORANGE);
SellSignalArrowDown.SetLineWeight(5);




#plot ArrowDown = SuperTrendOut_3 crosses above close and ShowArrows;
#plot ArrowDown = high and ShowArrows;
#ArrowDown.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
#ArrowDown.SetDefaultColor(Color.ORANGE);
#ArrowDown.SetLineWeight(5);


#plot ArrowUp = SuperTrendOut_3 crosses below close and ShowArrows;
#plot ArrowUp = low and ShowArrows;
#ArrowUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
#ArrowUp.SetDefaultColor(Color.BLUE);
#ArrowUp.SetLineWeight(5);


# MULTI SUPERTREND CODE HERE - END




# SUPERTREND_1 --- DISPLAY RELATED SECTION - start
# PLOT lines
def SuperTrend_1 = if ShowAllTrendsUI then SuperTrendOut_1 else Double.NaN;
#SuperTrend_1.DefineColor( "up", Color.GREEN );
#SuperTrend_1.DefineColor( "dn", Color.RED );
#SuperTrend_1.AssignValueColor(SuperTrend_1.Color("up"));
#SuperTrend_1.AssignValueColor( if close[1] > SuperTrend_1[1] then SuperTrend_1.Color( "up" ) else SuperTrend_1.Color( "dn" ) );
#SuperTrend_1.SetLineWeight( 2 );


# PLOT the start point DOT (circle)
plot LongDot_1 = if buySignal_1 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_1 else Double.NaN;
LongDot_1.SetPaintingStrategy(PaintingStrategy.POINTS);
LongDot_1.AssignValueColor(Color.GREEN);
LongDot_1.SetLineWeight(5);
plot ShortDot_1 = if buySignal_1 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_1 else Double.NaN;
ShortDot_1.SetPaintingStrategy(PaintingStrategy.POINTS);
ShortDot_1.AssignValueColor(Color.RED);
ShortDot_1.SetLineWeight(4);


# SHOW THE LABELS ON TOP LEFT (Current state)
AddLabel((ShowAllTrendsUI and ShowLabels), "ST_1: " + (if close > SuperTrend_1 then "Bullish" else if close < SuperTrend_1 then "Bearish" else "Neutral"),
                     if close > SuperTrend_1 then Color.GREEN else if close < SuperTrend_1 then Color.RED else Color.GRAY);


# SHOW BUBBLES
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and buySignal_1, upper_Band_1, "B_1", Color.GREEN, no);
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and sellSignal_1, lower_Band_1, "S_1", Color.RED, yes);


# HIGHLIGHT THE AREA (Add cloud)
AddCloud(if (ShowAllTrendsUI and ShowHighlight) then SuperTrend_1 else Double.NaN, PriceSource, Color.RED, Color.GREEN, no);


#SUPERTREND_1 --- DISPLAY RELATED SECTION - end


# SUPERTREND_2 --- DISPLAY RELATED SECTION - start
# PLOT lines
def SuperTrend_2 = if ShowAllTrendsUI then SuperTrendOut_2 else Double.NaN;


# PLOT the start point DOT (circle)
plot LongDot_2 = if buySignal_2 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_2 else Double.NaN;
LongDot_2.SetPaintingStrategy(PaintingStrategy.POINTS);
LongDot_2.AssignValueColor(Color.GREEN);
LongDot_2.SetLineWeight(5);
plot ShortDot_2 = if buySignal_2 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_2 else Double.NaN;
ShortDot_2.SetPaintingStrategy(PaintingStrategy.POINTS);
ShortDot_2.AssignValueColor(Color.RED);
ShortDot_2.SetLineWeight(4);


# SHOW THE LABELS ON TOP LEFT (Current state)
AddLabel((ShowAllTrendsUI and ShowLabels), "ST_2: " + (if close > SuperTrend_2 then "Bullish" else if close < SuperTrend_2 then "Bearish" else "Neutral"),
                     if close > SuperTrend_2 then Color.GREEN else if close < SuperTrend_2 then Color.RED else Color.GRAY);


# SHOW BUBBLES
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and buySignal_2, upper_Band_2, "B_2", Color.GREEN, no);
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and sellSignal_2, lower_Band_2, "S_2", Color.RED, yes);


# HIGHLIGHT THE AREA (Add cloud)
AddCloud(if (ShowAllTrendsUI and ShowHighlight) then SuperTrend_2 else Double.NaN, PriceSource, Color.RED, Color.GREEN, no);


#SUPERTREND_2 --- DISPLAY RELATED SECTION - end


# SUPERTREND_3 --- DISPLAY RELATED SECTION - start
# PLOT lines
def SuperTrend_3 = if ShowAllTrendsUI then SuperTrendOut_3 else Double.NaN;


# PLOT the start point DOT (circle)
plot LongDot_3 = if buySignal_3 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_3 else Double.NaN;
LongDot_3.SetPaintingStrategy(PaintingStrategy.POINTS);
LongDot_3.AssignValueColor(Color.GREEN);
LongDot_3.SetLineWeight(5);
plot ShortDot_3 = if buySignal_3 and (ShowAllTrendsUI and ShowBubbles) then SuperTrend_3 else Double.NaN;
ShortDot_3.SetPaintingStrategy(PaintingStrategy.POINTS);
ShortDot_3.AssignValueColor(Color.RED);
ShortDot_3.SetLineWeight(4);


# SHOW THE LABELS ON TOP LEFT (Current state)
AddLabel((ShowAllTrendsUI and ShowLabels), "ST_3: " + (if close > SuperTrend_3 then "Bullish" else if close < SuperTrend_3 then "Bearish" else "Neutral"),
                     if close > SuperTrend_3 then Color.GREEN else if close < SuperTrend_3 then Color.RED else Color.GRAY);


# SHOW BUBBLES
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and buySignal_3, upper_Band_3, "B_3", Color.GREEN, no);
AddChartBubble((ShowAllTrendsUI and ShowBubbles) and sellSignal_3, lower_Band_3, "S_3", Color.RED, yes);


# HIGHLIGHT THE AREA (Add cloud)
AddCloud(if (ShowAllTrendsUI and ShowHighlight) then SuperTrend_3 else Double.NaN, PriceSource, Color.RED, Color.GREEN, no);


#SUPERTREND_3 --- DISPLAY RELATED SECTION - end


plot buysignal = close > supertrend_1 and close > supertrend_2 and StochRSI_Signal [1] < StochRSI_Main[1] and StochRSI_Signal > StochRSI_Main and StochRSI_Signal[1] < 20 and StochRSI_Signal >= 20 and close > reference movAvgExponential(close,200);
buysignal.setPaintingStrategy(paintingStrategy.BOOLEAN_ARROW_UP);
buysignal.setdefaultColor(Color.MAGENTA);
buysignal.setlineweight(5);


plot sellsignal = close < supertrend_1 and close < supertrend_2 and StochRSI_Signal [1] > StochRSI_Main[1] and StochRSI_Signal < StochRSI_Main and StochRSI_Signal[1] > 80 and StochRSI_Signal <= 80 and close < reference movAvgExponential(close,200);;
sellsignal.setPaintingStrategy(paintingStrategy.BOOLEAN_ARROW_DOWN);
sellsignal.setdefaultColor(Color.MAGENTA);
sellsignal.setlineweight(5);










############################Order ###########################################
AddOrder(OrderType.BUY_TO_OPEN, close > supertrend_1 and close > supertrend_2 and StochRSI_Signal [1] < StochRSI_Main[1] and StochRSI_Signal > StochRSI_Main and StochRSI_Signal[1] < 20 and StochRSI_Signal >= 20 and close > reference movAvgExponential(close,200), price = open[-1],tickcolor = Color.cyan, arrowcolor = Color.cyan, name = "Buy", tradeSize = 1);
#AddOrder(OrderType.BUY_AUTO, isopen and SignalUp[-1], tickcolor = Color.cyan, arrowcolor = Color.cyan, name = "Buy_long", tradeSize = 10);
AddOrder(OrderType.SELL_TO_CLOSE, close < supertrend_1 and close < supertrend_2 and StochRSI_Signal [1] > StochRSI_Main[1] and StochRSI_Signal < StochRSI_Main and StochRSI_Signal[1] > 80 and StochRSI_Signal <= 80 and close < reference movAvgExponential(close,200), price = open[-1], tickcolor = Color.red, arrowcolor = Color.red, name = "sell_long", tradeSize = 1);


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

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

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

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