Chewie's Super Trend, Hull Average, Donchian Trend Ribbon Trading System for ThinkorSwim

Goingdark365

New member
Hey all. I am trying to get a scan to work for this strategy. I think I am on the right track, however, I do not know what option to select when in the edit window. What I would like an alert / watchlist to populate by, is the "Square" and "Triangle". I think these are called Hull Buy and Hull Sell but this option isn't available in the dropdown list. I saved this strategy as a study in order to be able to access it in the edit window of the scanner as it doesn't have the option to choose strategy from the list. Is this correct? I would like for this scan to be sent to a watchlist and the stocks that get the "Hull Buy" (I think) will show up and leave after a bit or maybe an alert just so I know when it happens. Hope this makes sense.

KJKF5zC.jpg
I think it’s just close crossing 200 ema
 

METAL

New member
So I have tested this strategy countless times on 1 min, 3 min, 5 min, and 15 min time frames. I have lost way more times than I won. I was stupid and tried it in actual live trading and lost $324.00. So I then decided to try it Paper trading. I would like to know if others are actually using this strat on a daily basis and if so, what timeline?
 

Trader_Rich

Member
VIP
So I have tested this strategy countless times on 1 min, 3 min, 5 min, and 15 min time frames. I have lost way more times than I won. I was stupid and tried it in actual live trading and lost $324.00. So I then decided to try it Paper trading. I would like to know if others are actually using this strat on a daily basis and if so, what timeline?
I went back and started using this strat again a few weeks ago but I use 1000tick volume bars strictly paper trading but I've been very consistent.

With that said I dont like the Donchian lower indicator with 1000tick charts. Ive been using the TMO by mobius and another indicator that im working on insteas
 

chewie76

Well-known member
VIP
VIP Enthusiast
So I have tested this strategy countless times on 1 min, 3 min, 5 min, and 15 min time frames. I have lost way more times than I won. I was stupid and tried it in actual live trading and lost $324.00. So I then decided to try it Paper trading. I would like to know if others are actually using this strat on a daily basis and if so, what timeline?
I like the 3 or 4 minute the best. I'm very consistent when trading. Also remember to go with the 200.
 

chewie76

Well-known member
VIP
VIP Enthusiast
@chewie76 - any tips on avoiding the chop, and being ready for the big move? When you trade, do you just have your 4 minute timeframe up or do you have a couple others? Looking back, I guess I should've had a closer eye on the 200 and noticed that 2-3 long attempts couldn't break it...

Also.. any tips on playing the open when there's a big gap down (like today)? Would you recommend having a lower timeframe (1/2 minutes) on your chart as well? I sat there watching this all day and never pulled the trigger.. darn.

Sometimes there is no avoiding chop, unless you look at longer timeframes. I like the 3 and 4 min.
 

METAL

New member
I like the 3 or 4 minute the best. I'm very consistent when trading. Also remember to go with the 2When you say, "Go with the 200" Do you mean, Buy when the 200 is above the candles and sell when it is below the candles.

I like the 3 or 4 minute the best. I'm very consistent when trading. Also remember to go with the 200.
When you say, "Go with the 200" Do you mean, Buy when the 200 is above the candles and sell when it is below the candles.
 

tosman

New member
VIP
Has anyone tried this indicator with larger timeframes (aimed towards swing trading) such as 1h, 2h, 1D for stocks? Also, interested to hear whether to use the same settings for air mult and hma length.
 

Cybersloth

New member
VIP
I've had excellent results using a 2 min chart using ES and NQ futures, although I never stray into after-hours trades due to erratic price swings experienced there. I'm extremely grateful to Chewie for posting this strategy. One vexing point, however, is I haven't determined a reasonable location to consistently place a stop loss. Placing a stop loss at the ST line addresses (the sometimes harrowing) wild swings which often reverse and end in a win, but when that doesn't happen, the loss is often substantial --at least 3:1 which is hard to stomach. Does qimmy6688 and/or other posters have any thoughts about where to place a stop loss?
 

METAL

New member
buy when price is above 200, sell when price is below 200.
Well...I had that backwards.

I thought that I was supposed to only BUY when candles/price is below the 200 MA and SELL when candles/price is above the 200 MA line. So I had it the opposite of what Chewie said.
 
Last edited by a moderator:

beerguyster

New member
How do I get his code to only plot current line and not plot every time it triggers and cover my chart in lines? An option to turn it off/on would ideal for all previous (not current) resistance/support lines. Seen it done and looked at other code but not experienced enough to make it work here.




#Short Entry
rec line3 = if IsNaN(long) then line3[1] else long[0];
plot S_Entry = if IsNaN(long) then line3 else double.nan;
S_Entry.setpaintingStrategy(paintingStrategy.LINE);
S_Entry.setlineWeight(3);
S_Entry.setdefaultColor(color.red);
S_Entry.hideBubble();
def SE =(if isNaN(S_Entry[1]) then S_Entry else Double.NaN);
addchartBubble(Entry_SL_Bubbles and S_Entry, SE,"S/E",color.RED);


#Hull_SuperTrend_Trading_System<break />
# assembled by Chewie 4/10/2022<break />
# many thanks to all the other noted contributors to this system.<break />
<break />
# SuperTrend Yahoo Finance Replica - Modified from Modius SuperTrend<break />
# Modified Modius ver. by RConner7<break />
# Modified by Barbaros to replicate look from TradingView version<break />
# Modified by Barbaros to add EMA cross for bubbles and alerts<break />
# Modified by Barbaros to update bar color painting<break />
# v3.3<break />
<break />
input Target_Bubbles = no;<break />
input Entry_SL_Bubbles = no;<break />
input Targetlines = yes;<break />
input Labels = yes;<break />
input alertON = yes;<break />
input Bands = yes;<break />
input EMA1 = 10;<break />
input EMA2 = 20;<break />
input AvgType = AverageType.HULL;<break />
input STAtrMult = 2.75;<break />
input nATR = 12;<break />
<break />
def ATR = ATR(length = nATR"]
) or (close[1] > UP_Band[1])) then UP_Band_Basic else UP_Band[1];
def LW_Band = if ((LW_Band_Basic > LW_Band[1]) or (close[1] < LW_Band[1])) then LW_Band_Basic else LW_Band[1];

def ST = if ((ST[1] == UP_Band[1]) and (close < UP_Band)) then UP_Band
else if ((ST[1] == UP_Band[1]) and (close > Up_Band)) then LW_Band
else if ((ST[1] == LW_Band[1]) and (close > LW_Band)) then LW_Band
else if ((ST[1] == LW_Band) and (close < LW_Band)) then UP_Band
else LW_Band;

def EMA1Val = MovAvgExponential(close, EMA1);
def EMA2Val = MovAvgExponential(close, EMA2);
def EMADirection = if EMA1Val > EMA2Val then 1 else if EMA1Val < EMA2Val then -1 else 0;

plot Long = if close > ST then ST else Double.NaN;
Long.AssignValueColor(Color.cyan);
Long.SetLineWeight(3);

plot Short = if close < ST then ST else Double.NaN;
Short.AssignValueColor(Color.magenta);
Short.SetLineWeight(3);

def LongTrigger = isNaN(Long[1]) and !isNaN(Long);
def ShortTrigger = isNaN(Short[1]) and !isNaN(Short);

plot LongDot = if LongTrigger then ST else Double.NaN;
LongDot.SetPaintingStrategy(PaintingStrategy.POINTS);
LongDot.AssignValueColor(Color.cyan);
LongDot.SetLineWeight(4);

plot ShortDot = if ShortTrigger then ST else Double.NaN;
ShortDot.SetPaintingStrategy(PaintingStrategy.POINTS);
ShortDot.AssignValueColor(Color.magenta);
ShortDot.SetLineWeight(4);

AddChartBubble(Entry_SL_Bubbles and LongTrigger, ST, "BUY", Color.GREEN, no);
AddChartBubble(Entry_SL_Bubbles and ShortTrigger, ST, "SELL", Color.RED, yes);

#Super Trend Labels

AddLabel(yes and labels and Long, "ST:LONG", color.CYAN);
AddLabel(yes and labels and Short, "ST:SHORT", color.magenta);

#
# Hull Moving Average Concavity and Turning Points
#
# Author: Seth Urion (Mahsume)
# Version: 2020-05-01 V4
#
# Now with support for ToS Mobile
#

declare upper;

input HMA_Length = 60;
input lookback = 3;
input arrows = no;

def price = HL2;
plot HMA = HullMovingAvg(price = price, length = HMA_Length);
def delta = HMA[1] - HMA[lookback + 1];
def delta_per_bar = delta / lookback;
def next_bar = HMA[1] + delta_per_bar;
def concavity = if HMA > next_bar then 1 else -1;

plot turning_point = if concavity[1] != concavity then HMA else double.nan;

HMA.AssignValueColor(color = if concavity[1] == -1 then
if HMA > HMA[1] then color.dark_orange else color.red else
if HMA < HMA[1] then color.dark_green else color.green);

HMA.SetLineWeight(3);

turning_point.SetLineWeight(2);
turning_point.SetPaintingStrategy(paintingStrategy = PaintingStrategy.POINTS);
turning_point.SetDefaultColor(color.white);

plot MA_Max = if HMA[-1] < HMA and HMA > HMA[1] then HMA else Double.NaN;
MA_Max.SetDefaultColor(Color.WHITE);
MA_Max.SetPaintingStrategy(PaintingStrategy.SQUARES);
MA_Max.SetLineWeight(5);

plot MA_Min = if HMA[-1] > HMA and HMA < HMA[1] then HMA else Double.Nan;
MA_Min.SetDefaultColor(Color.WHITE);

MA_Min.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
MA_Min.SetLineWeight(5);

def BuySetup = HMA > HMA[1] and HMA[1] < HMA[2];
def SellSetup = HMA < HMA[1] and HMA[1] > HMA[2];

plot sell = if arrows and turning_point and concavity == -1 then high else double.nan;
sell.SetDefaultColor(Color.DARK_ORANGE);
sell.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
sell.SetLineWeight(3);

plot buy = if arrows and turning_point and concavity == 1 then low else double.nan;
buy.SetDefaultColor(Color.CYAN);
buy.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
buy.SetLineWeight(3);

def divergence = HMA - next_bar;


###################
#
# 2020-05-01
#
# MOBILE TOS SUPPORT
#
# Each color of the HMA needs to be a separate plot as ToS Mobile
# lacks the ability to assign colors the way ToS Desktop does.
# I recommend a plain colored HMA behind the line
# Set the line color of the HMA above to gray or some neutral
#
# CCD_D -> ConCave Down and Decreasing
# CCD_I -> ConCave Down and Increasing
# CCU_D -> ConCave Up and Decreasing
# CCU_I -> ConCave Up and Increasing
#
###################
plot CCD_D = if concavity == -1 and HMA < HMA[1] then HMA else double.nan;
CCD_D.SetDefaultColor(Color.RED);
CCD_D.SetLineWeight(1);

plot CCD_I = if concavity == -1 and HMA >= HMA[1] then HMA else double.nan;
CCD_I.SetDefaultColor(Color.DARK_ORANGE);
CCD_I.SetLineWeight(1);

plot CCU_D = if concavity == 1 and HMA <= HMA[1] then HMA else double.nan;
CCU_D.SetDefaultColor(COLOR.DARK_GREEN);
CCU_D.SetLineWeight(1);

plot CCU_I = if concavity == 1 and HMA > HMA[1] then HMA else double.nan;
CCU_I.SetDefaultColor(COLOR.GREEN);
CCU_I.SetLineWeight(1);

#Hull Label

AddLabel(yes and labels and CCD_D, "HULL:SELL", color.RED);
AddLabel(yes and labels and CCU_I, "HULL:BUY", color.green);
AddLabel(yes and labels and CCU_D, "HULL:WEAK SELL", color.dark_green);
AddLabel(yes and labels and CCD_I, "HULL:WEAK BUY", color.DARK_ORANGE);

#Target lines
# created by chewie

rec line = if IsNaN(MA_Min) then line[1] else MA_Min[0];
plot L_stoploss= if isnan(MA_Min) then line else double.nan;
L_stoploss.setpaintingStrategy(paintingStrategy.LINE);
L_stoploss.setlineWeight(3);
L_stoploss.setdefaultColor(color.dark_green);
L_stoploss.hideBubble();
def LSL =(if isNaN(L_stoploss[1]) then L_stoploss else Double.NaN);
addchartBubble(Entry_SL_Bubbles and L_stoploss, LSL,"L/SL",color.DARK_GREEN);

rec line2 = if IsNaN(MA_Max) then line2[1] else MA_Max[0];
plot S_stoploss = if IsNaN(MA_MAX) then line2 else double.nan;
S_stoploss.setpaintingStrategy(paintingStrategy.LINE);
S_stoploss.setlineWeight(3);
S_stoploss.setdefaultColor(color.dark_red);
S_stoploss.hideBubble();
def SSL =(if isNaN(S_stoploss[1]) then S_stoploss else Double.NaN);
addchartBubble(Entry_SL_Bubbles and S_stoploss, SSL,"S/SL",color.DARK_RED);

#Short Entry
rec line3 = if IsNaN(long) then line3[1] else long[0];
plot S_Entry = if IsNaN(long) then line3 else double.nan;
S_Entry.setpaintingStrategy(paintingStrategy.LINE);
S_Entry.setlineWeight(3);
S_Entry.setdefaultColor(color.red);
S_Entry.hideBubble();
def SE =(if isNaN(S_Entry[1]) then S_Entry else Double.NaN);
addchartBubble(Entry_SL_Bubbles and S_Entry, SE,"S/E",color.RED);

#Long Entry
rec line4 = if IsNaN(short) then line4[1] else short[0];
plot L_Entry = if IsNaN(short) then line4 else double.nan;
L_Entry.setpaintingStrategy(paintingStrategy.LINE);
L_Entry.setlineWeight(3);
L_Entry.setdefaultColor(color.green);
L_Entry.hideBubble();
def LE =(if isNaN(L_Entry[1]) then L_Entry else Double.NaN);
addchartBubble(Entry_SL_Bubbles and L_Entry, LE,"L/E",color.GREEN);

#HalfX Long
plot x1a_Long = if Targetlines then (L_Entry +(L_Entry - L_Stoploss)/2) else double.nan;
x1a_Long.setpaintingStrategy(paintingStrategy.dashes);
x1a_Long.setlineWeight(1);
x1a_Long.setdefaultColor(color.magenta);
x1a_Long.hideBubble();

#OneX Long
plot x1_Long = if Targetlines and x1a_Long > line4 then (L_Entry +(L_Entry - L_Stoploss)) else double.nan;
x1_Long.setpaintingStrategy(paintingStrategy.dashes);
x1_Long.setlineWeight(1);
x1_Long.setdefaultColor(color.yellow);

#TwoX Long
plot x2_Long = if Targetlines then x1_Long +(L_Entry - L_Stoploss) else double.nan;
x2_Long.setpaintingStrategy(paintingStrategy.line);
x2_Long.setlineWeight(2);
x2_Long.setdefaultColor(color.light_red);
def X2L =(if isNaN(x2_Long[1]) then x2_Long else Double.NaN);
addchartBubble(Target_Bubbles and x2_Long, x2L,"2xL",color.light_red);

#ThreeX Long
plot x3_Long = if Targetlines then x2_Long +(L_Entry - L_Stoploss) else double.nan;
x3_Long.setpaintingStrategy(paintingStrategy.dashes);
x3_Long.setlineWeight(1);
x3_Long.setdefaultColor(color.cyan);
def X3L =(if isNaN(x3_Long[1]) then x3_Long else Double.NaN);
addchartBubble(Target_Bubbles and x3_Long, x3L,"3xL",color.cyan);

#FourX Long
plot x4_Long = if Targetlines then x3_Long +(L_Entry - L_Stoploss) else double.nan;
x4_Long.setpaintingStrategy(paintingStrategy.dashes);
x4_Long.setlineWeight(1);
x4_Long.setdefaultColor(color.white);
def X4L =(if isNaN(x4_Long[1]) then x4_Long else Double.NaN);
addchartBubble(Target_Bubbles and x4_Long, x4L,"4xL",color.white);

#HalfX Short
plot x1a_Short = if Targetlines then (S_Entry -(S_Stoploss - S_Entry)/2) else double.nan;
x1a_Short.setpaintingStrategy(paintingStrategy.dashes);
x1a_Short.setlineWeight(1);
x1a_Short.setdefaultColor(color.magenta);
x1a_Short.hideBubble();

#OneX Short
plot x1_Short = if Targetlines and x1a_short < line3 then (S_Entry -(S_Stoploss - S_Entry)) else double.nan;
x1_Short.setpaintingStrategy(paintingStrategy.dashes);
x1_Short.setlineWeight(1);
x1_Short.setdefaultColor(color.yellow);

#TwoX Short
plot x2_Short = if Targetlines then x1_Short -(S_Stoploss - S_Entry) else double.nan;
x2_Short.setpaintingStrategy(paintingStrategy.line);
x2_Short.setlineWeight(2);
x2_Short.setdefaultColor(color.light_green);
def X2S =(if isNaN(x2_Short[1]) then x2_Short else Double.NaN);
addchartBubble(Target_Bubbles and x2_Short, x2S,"2xS",color.light_green);

#ThreeX Short
plot x3_Short = if Targetlines then x2_Short -(S_Stoploss - S_Entry) else double.nan;
x3_Short.setpaintingStrategy(paintingStrategy.dashes);
x3_Short.setlineWeight(1);
x3_Short.setdefaultColor(color.cyan);
def X3S =(if isNaN(x3_Short[1]) then x3_Short else Double.NaN);
addchartBubble(Target_Bubbles and x3_Short, x3S,"3xS",color.cyan);

#FourX Short
plot x4_Short = if Targetlines then x3_Short -(S_Stoploss - S_Entry) else double.nan;
x4_Short.setpaintingStrategy(paintingStrategy.dashes);
x4_Short.setlineWeight(1);
x4_Short.setdefaultColor(color.white);
def X4S =(if isNaN(x4_Short[1]) then x4_Short else Double.NaN);
addchartBubble(Target_Bubbles and x4_Short, x4S,"4xS",color.white);

#LinearRegCh100 RegressionDivergence - Trigger Lines - Trend Cross
# From Lizard Indicators Link: https://www.lizardindicators.com/trigger-lines-cross-vs-thrust/
# Line #1 - Fast = LinReg (80)
# Line #2 - Slow = EXPEMA[LinReg (80)]

input LinRegLength = 80;
input EMAlength = 20;
input ColorOn = yes;

#Definitions
def price1 = close;
def displace = 0;
def LinReg = Inertia(price1[-displace], LinRegLength);
def EMA_LR = ExpAverage(LinReg[-displace], EMAlength);
def Body = (open + close)/2;

# Defining Long/Short Filters (these instructions determine entries / exits)
# Entry Requirements
def Long_Entry = close > LinReg and close > EMA_LR and body > LinReg and body > EMA_LR and close > high[1] and body > body[1];
# LinReg > LinReg[1] and
def Long_Stay_In = close > LinReg and close > EMA_LR;
def Long_Exit = (close < LinReg or close < EMA_LR) or Long_Stay_In == 0;
def Long_State = If Long_Entry then 1 else if Long_Exit then 0 else Long_State[1];
def Long1 = Long_State;

# Exit Requirements
def Short_Entry = close < LinReg and close < EMA_LR and body < LinReg and body < EMA_LR and close < low[1] and body < body[1];
# LinReg < LinReg[1] and
def Short_Stay_In = close < LinReg and close < EMA_LR;
def Short_Exit = (close > LinReg or close > EMA_LR) or Short_Stay_In == 0;
def Short_State = If Short_Entry then 1 else if Short_Exit then 0 else Short_State[1];
def Short1 = Short_State;

#Adding Linear Regression averages
plot LR = LinReg;
LR.SetDefaultColor(CreateColor(0, 130, 255));
plot EMA_LinReg = EMA_LR;
EMA_LinReg.SetDefaultColor(CreateColor(255, 215,0));
LR.setlineweight(1);
EMA_LinReg.setlineweight(2);

#DYNO Label

AddLabel(yes and labels and Short1, "DYNO:BEARISH", color.RED);
AddLabel(yes and labels and Long1, "DYNO:BULLISH", color.green);
AddLabel(yes and labels and Long1 == Short1, "DYNO:NEUTRAL", color.YELLOW);

#Regression Bands

input deviations = 1.618; #set your deviation units here.
input length = 500; #set your channel lookback period here.

def stdDeviation = StDevAll(price, length);
plot HighBand = if Bands then EMA_LinReg + deviations * stdDeviation else double.nan;
HighBand.SetDefaultColor(Color.red);
plot LowBand = if Bands then EMA_LinReg - deviations * stdDeviation else double.nan;
LowBand.SetDefaultColor(Color.green);
DefineGlobalColor("Bullish", Color.light_green);
DefineGlobalColor("Bearish", Color.light_RED);


#200 DAY MOVING AVERAGE

input lengthAvgEXP = 200;

plot AvgExp = ExpAverage(price[-displace], lengthAvgExp);

AvgExp.SetDefaultColor(Color.white);
AvgExp.setlineweight(2);

# Coloring Bars
AssignPriceColor(if ColorON and Long_State then Color.GREEN else if ColorON and Short_State then Color.RED else Color.Yellow);
DefineGlobalColor("Bullish", Color.dark_Green);
DefineGlobalColor("Bearish", Color.dark_Red);
AddCloud(EMA_LR, LinReg, GlobalColor("Bearish"), GlobalColor("Bullish"));


###################
#
# ALERTS
#
###################

Alert(alertON and LongTrigger, "Long Entry", Alert.BAR, Sound.Ding);

Alert(alertON and ShortTrigger, "Short Entry", Alert.BAR, Sound.Ding);

Alert(alertON and Buysetup, "HULL Buy", Alert.BAR, Sound.Bell);

Alert(alertON and Sellsetup, "HULL Sell", Alert.BAR, Sound.Bell);

Alert(alertON and high > highband, "Short Band", Alert.BAR, Sound.Ding);

Alert(alertON and low < lowband, "Long Band", Alert.BAR, Sound.Ding);
 
Last edited:

APOT7

Member
VIP
6Og7rXF.png

Okay did some tweaks to the 2 minute, Hull 55, ATR 2.25.

Added the RSIL Laguerre indicator for confirmation / being able to stay in the trades longer after 1-4x profit targets. Notice, $VOLD and $ADD donchian green, all 3 confirmations on Chewie's system, RSIL is sloping upwards then pins at the top, along with lower donchian being Cyan (major buying pressure) and the move skyrockets with 0 indication to get out or even stress about your trade. Obviously hindsight though.

Back tested it over 30 days and it seems to work wonders on /ES and /NQ.

Clearly a handpicked example, but it is incredible on just about every entry once all confirmations line up.

Thanks again @chewie76.
Is there a way to to puts arrows on /es, spy, mnq, /mes chart when all three $vold, $add , $tick. And es. donchian turn red and green? I'm not a code so im not sure how to go about it.

Or Is there a way to have Donchian of $vold, $add and $ tick show up as lower study on any chart ie /es, /mes, spy,..?

Please help!!

Thanks in advance!
 
Last edited:

APOT7

Member
VIP
I assembled this indicator that includes a few combined indicators based on watching this video.
I changed a few of the settings however. This is a trading system or strategy that includes where to enter a trade, where to place your stop loss, and 5 targets, and when to close your trade. There is a real "strategy" below that can be loaded as well to view actual profit/loss. Many thanks to the other contributors who created these indicators. NOTE: I know some people love a clean chart and will say that this is too messy. I understand that. You can uncheck viewing any of the plots within the indicator, like certain target lines you don't want to see or anything else if you prefer. Ok, let's carry on. Below is first the trading system summary, and a bunch of chart examples.

SUMMARY OF TRADING SYSTEM:

1.The best trades are in the direction of the 200 EMA (white line). Important point that is why it is #1. Always check first where is the white line 200 EMA.

2. SETUP: You must see three things to define an entry position.
1. A top or bottom reversal signal of the Hull Moving Avg plotted with a white square (top) or white triangle (bottom).
2. Lower Donchian Trend Ribbon either green or red in the color of the direction you are entering the trade. (Shout out to @halcyonguy who converted this into TOS. Much appreciated, you are awesome!!!)
3. Break of the Super Trend indicator. (Default setting is 2.75. Feel free to adjust this if you want in the settings)
4. Stop Loss is placed at or just below the reversal Hull Moving Avg square or triangle. (In some instances, the 200 EMA could be your stop loss.)

3. The first thing that you should expect to see when all 3 triggers are set is when price breaks through the Super Trend, there is sometimes resistance at the first magenta dashed line. This is half of the 1st target. That could be your first trade with trade orders set in place prior to seeing the 3 triggers take effect. Sometimes it is safer to watch price break through the Super Trend, retrace back below, and enter at the entry line as it breaks through the second time.

4. Once price hits the dashed magenta line, it typically either continues in a strong move, or it will come back to the entry line or below. A secondary move will typically push past the magenta line to the next 1x yellow dashed target.

5.Once price hits the first 1x target, it will typically either continue to the 2x target, or retrace back to the 1x or Entry line. 2x target is the goal, but sometimes price will blast to 3x or 4x target.

6.There are times when price will extend beyond the 4x target.

7.The Hull reversal point (white square or triangle) will have a line drawn which is the stop loss. This level is sometimes used as support or resistance, so take note of this area and how price reacts to it.

8.Included is a DYNO regression average that will color the candles green when price is above, red when price is below and yellow when price is between the two lines. Regression bands are also displayed and can be turned on/off in the settings. Your trade should correspond to the color of the candles. Long trade = green candles, short trade = red candles.

9.TRADE EXIT: Place your exit order at any of the target levels of your choice. If price goes beyond the first magenta line, consider moving your stop loss to the entry line (break even), or to the magenta line. You could also move your stop loss to either trail with the Super Trend, or with the Hull moving average. Typically breaking the Hull moving average closes the trade.

This indicator includes labels for the Super Trend, Hull avg, and Dyno regression average. These labels can be turned on/off in the settings.
This indicator includes bubbles for target levels and bubbles for trade entry and stop loss. Bubbles are off by default. These bubbles can be turned on/off in the settings.
This indicator includes various alerts for when Super Trend breaks, when the Hull avg creates a reversal buy/sell signal, and when price crosses the regression bands. These alerts can be turned on/off in the settings.

All example charts are on the 4 minute timeframe. I like the 4 min. Different timeframes will obviously give you different results. Let's get to it!


ArvBkeM.png


In the above chart, you have all 3 conditions trigger in the same red candle. 1. Hull reversal point, 2. Red color Donchian Trend Ribbon, 3. Break below of the cyan Super Trend. Take note on how price first hits the magenta dashed line and retraces beyond the Entry Line. It hits the 1X target and continues all the way to 4X target. If you didn't take the 4x target, price breaking the Hull moving average indicates time to close the trade.


M4iTGih.png


In the above chart, there are two trades long and short. Look for all 3 conditions to trigger. 1. Hull reversal point, 2. color Donchian Trend Ribbon, 3. Break of the Super Trend. In the first trade, price goes above the 200 EMA and hits the 2x target. Closing below the Hull average would close the trade. In the second trade, price hits 3x target, and breaking the Hull avg would close the trade.



CRTAVrq.png


In the above chart, there is a slight downward slope of the 200 EMA, the top Hull reversal plots, Donchian Trend Ribbon is red, you are looking to short at the break of the Super Trend. It rapidly goes to the 4x target and breaks the Hull avg closing the trade.



SNPHRco.png


In the above chart, all 3 trade setups take place to enter the trade. Price retraces back to the 200 EMA which is above your stop loss. It then continues higher to 4x target. Either have an exit order at the 4x level, or trail stop loss with Super Trend or the yellow Dyno average.



1DTFxZW.png


In the above chart, all 3 trade setups take place to enter the trade. Price retraces back to the 200 EMA which is above your stop loss. It then continues higher to beyond the 4x target. You must take your profits. Don’t be greedy.



mt1GJYm.png


In the above chart, all 3 trade setups take place to enter the trade. Price is below the 200 EMA and you short. Here is a tricky situation. It barely breaks the Super Trend. It hits your stop loss, but never closes above your stop loss. It then goes to tag the 3x target. Better to be safe and have your stop loss hit, or have a wider stop loss at the 200 EMA.



sv7xIBT.png


In the above chart, all 3 trade setups take place to enter the trade. Price is below the 200 EMA and you think it could tag it. Price stays above the Hull avg and hits both the 4x target and the 200 EMA. Be cautious because typically you want to trade in the direction of the 200, but when price is far from it, there is a chance it will come back to it.



FbqdeO6.png


In the above chart, all 3 trade setups take place to enter the trade. Price previously is rejected at the 200 EMA and it is rejected a second time. You take the short setup. Price stays below the Hull avg and hits the 3x target. If you didn’t get out at the 3x, you would exit the trade at the break of the Hull avg. Nice trade!



cSXCWLO.png


In the above chart, all 3 trade setups take place to enter the trade. Price breaks above the 200 EMA at your entry. 2x target is hit and price breaks the Hull avg. Good time to take profits, or trail your stop at the Super Trend and take profit at the 4x target.



N69m8Tq.png



I created a strategy, however, it does not incorporate the lower Donchian Trend Ribbon. It also exits trades if it hits levels and breaks back, so it’s pretty conservative. On the 4 min chart, ES would have a profit of $33,234 in the last 30 days.


And now for the codes.

SHAREABLE LINKS:

Upper Indicator Code: http://tos.mx/xwmHCKc
Donchian Trend Ribbon Indicator Code: http://tos.mx/MMxMs6u This can also be found at this post. https://usethinkscript.com/threads/donchian-trend-ribbon-for-thinkorswim.10861/#post-95366
Note: the Donchian Trend Ribbon has a lower histogram. When the lower histogram is magenta color, it is sign of major selling. When cyan, it is major buying, when it is dark green or dark red, it is in consolidation.
Strategy Code: NOTE: Strategy does not take into account the Hull Avg or the Donchian Ribbon, only the Super Trend break and the target levels. http://tos.mx/neHVQml

Code:
#Hull_SuperTrend_Trading_System
# assembled by Chewie 4/10/2022
# many thanks to all the other noted contributors to this system.

# SuperTrend Yahoo Finance Replica - Modified from Modius SuperTrend
# Modified Modius ver. by RConner7
# Modified by Barbaros to replicate look from TradingView version
# Modified by Barbaros to add EMA cross for bubbles and alerts
# Modified by Barbaros to update bar color painting
# v3.3

input Target_Bubbles = no;
input Entry_SL_Bubbles = no;
input Targetlines = yes;
input Labels = yes;
input alertON = yes;
input Bands = yes;
input EMA1 = 10;
input EMA2 = 20;
input AvgType = AverageType.HULL;
input STAtrMult = 2.75;
input nATR = 12;

def ATR = ATR("length" = nATR, "average type" = AvgType);
def UP_Band_Basic = HL2 + (STAtrMult * ATR);
def LW_Band_Basic = HL2 + (-STAtrMult * ATR);
def UP_Band = if ((UP_Band_Basic < UP_Band[1]) or (close[1] > UP_Band[1])) then UP_Band_Basic else UP_Band[1];
def LW_Band = if ((LW_Band_Basic > LW_Band[1]) or (close[1] < LW_Band[1])) then LW_Band_Basic else LW_Band[1];

def ST = if ((ST[1] == UP_Band[1]) and (close < UP_Band)) then UP_Band
else if ((ST[1] == UP_Band[1]) and (close > Up_Band)) then LW_Band
else if ((ST[1] == LW_Band[1]) and (close > LW_Band)) then LW_Band
else if ((ST[1] == LW_Band) and (close < LW_Band)) then UP_Band
else LW_Band;

def EMA1Val = MovAvgExponential(close, EMA1);
def EMA2Val = MovAvgExponential(close, EMA2);
def EMADirection = if EMA1Val > EMA2Val then 1 else if EMA1Val < EMA2Val then -1 else 0;

plot Long = if close > ST then ST else Double.NaN;
Long.AssignValueColor(Color.cyan);
Long.SetLineWeight(3);

plot Short = if close < ST then ST else Double.NaN;
Short.AssignValueColor(Color.magenta);
Short.SetLineWeight(3);

def LongTrigger = isNaN(Long[1]) and !isNaN(Long);
def ShortTrigger = isNaN(Short[1]) and !isNaN(Short);

plot LongDot = if LongTrigger then ST else Double.NaN;
LongDot.SetPaintingStrategy(PaintingStrategy.POINTS);
LongDot.AssignValueColor(Color.cyan);
LongDot.SetLineWeight(4);

plot ShortDot = if ShortTrigger then ST else Double.NaN;
ShortDot.SetPaintingStrategy(PaintingStrategy.POINTS);
ShortDot.AssignValueColor(Color.magenta);
ShortDot.SetLineWeight(4);

AddChartBubble(Entry_SL_Bubbles and LongTrigger, ST, "BUY", Color.GREEN, no);
AddChartBubble(Entry_SL_Bubbles and ShortTrigger, ST, "SELL", Color.RED, yes);

#Super Trend Labels

AddLabel(yes and labels and Long, "ST:LONG", color.CYAN);
AddLabel(yes and labels and Short, "ST:SHORT", color.magenta);

#
# Hull Moving Average Concavity and Turning Points
#
# Author: Seth Urion (Mahsume)
# Version: 2020-05-01 V4
#
# Now with support for ToS Mobile
#

declare upper;

input HMA_Length = 60;
input lookback = 3;
input arrows = no;

def price = HL2;
plot HMA = HullMovingAvg(price = price, length = HMA_Length);
def delta = HMA[1] - HMA[lookback + 1];
def delta_per_bar = delta / lookback;
def next_bar = HMA[1] + delta_per_bar;
def concavity = if HMA > next_bar then 1 else -1;

plot turning_point = if concavity[1] != concavity then HMA else double.nan;

HMA.AssignValueColor(color = if concavity[1] == -1 then
    if HMA > HMA[1] then color.dark_orange else color.red else
    if HMA < HMA[1] then color.dark_green else color.green);

HMA.SetLineWeight(3);

turning_point.SetLineWeight(2);
turning_point.SetPaintingStrategy(paintingStrategy = PaintingStrategy.POINTS);
turning_point.SetDefaultColor(color.white);

plot MA_Max = if HMA[-1] < HMA and HMA > HMA[1] then HMA else Double.NaN;
MA_Max.SetDefaultColor(Color.WHITE);
MA_Max.SetPaintingStrategy(PaintingStrategy.SQUARES);
MA_Max.SetLineWeight(5);

plot MA_Min = if HMA[-1] > HMA and HMA < HMA[1] then HMA else Double.Nan;
MA_Min.SetDefaultColor(Color.WHITE);

MA_Min.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
MA_Min.SetLineWeight(5);

def BuySetup = HMA > HMA[1] and HMA[1] < HMA[2];
def SellSetup =  HMA < HMA[1] and HMA[1] > HMA[2];

plot sell = if arrows and turning_point and concavity == -1 then high else double.nan;
sell.SetDefaultColor(Color.DARK_ORANGE);
sell.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
sell.SetLineWeight(3);

plot buy = if arrows and turning_point and concavity == 1 then low else double.nan;
buy.SetDefaultColor(Color.CYAN);
buy.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
buy.SetLineWeight(3);

def divergence = HMA - next_bar;


###################
#
# 2020-05-01
#
# MOBILE TOS SUPPORT
#
# Each color of the HMA needs to be a separate plot as ToS Mobile
# lacks the ability to assign colors the way ToS Desktop does.
# I recommend a plain colored HMA behind the line
# Set the line color of the HMA above to gray or some neutral
#
# CCD_D -> ConCave Down and Decreasing
# CCD_I -> ConCave Down and Increasing
# CCU_D -> ConCave Up and Decreasing
# CCU_I -> ConCave Up and Increasing
#
###################
plot CCD_D = if concavity == -1 and HMA < HMA[1] then HMA else double.nan;
CCD_D.SetDefaultColor(Color.RED);
CCD_D.SetLineWeight(1);

plot CCD_I = if concavity == -1 and HMA >= HMA[1] then HMA else double.nan;
CCD_I.SetDefaultColor(Color.DARK_ORANGE);
CCD_I.SetLineWeight(1);

plot CCU_D = if concavity == 1 and HMA <= HMA[1] then HMA else double.nan;
CCU_D.SetDefaultColor(COLOR.DARK_GREEN);
CCU_D.SetLineWeight(1);

plot CCU_I = if concavity == 1 and HMA > HMA[1] then HMA else double.nan;
CCU_I.SetDefaultColor(COLOR.GREEN);
CCU_I.SetLineWeight(1);

#Hull Label

AddLabel(yes and labels and CCD_D, "HULL:SELL", color.RED);
AddLabel(yes and labels and CCU_I, "HULL:BUY", color.green);
AddLabel(yes and labels and CCU_D, "HULL:WEAK SELL", color.dark_green);
AddLabel(yes and labels and CCD_I, "HULL:WEAK BUY", color.DARK_ORANGE);

#Target lines
# created by chewie

rec line = if IsNaN(MA_Min) then line[1] else MA_Min[0];
plot L_stoploss= if isnan(MA_Min) then line else double.nan;
L_stoploss.setpaintingStrategy(paintingStrategy.LINE);
L_stoploss.setlineWeight(3);
L_stoploss.setdefaultColor(color.dark_green);
L_stoploss.hideBubble();
def LSL =(if isNaN(L_stoploss[1]) then L_stoploss else Double.NaN);
addchartBubble(Entry_SL_Bubbles and L_stoploss, LSL,"L/SL",color.DARK_GREEN);

rec line2 = if IsNaN(MA_Max) then line2[1] else MA_Max[0];
plot S_stoploss = if IsNaN(MA_MAX) then line2 else double.nan;
S_stoploss.setpaintingStrategy(paintingStrategy.LINE);
S_stoploss.setlineWeight(3);
S_stoploss.setdefaultColor(color.dark_red);
S_stoploss.hideBubble();
def SSL =(if isNaN(S_stoploss[1]) then S_stoploss else Double.NaN);
addchartBubble(Entry_SL_Bubbles and S_stoploss, SSL,"S/SL",color.DARK_RED);

#Short Entry
rec line3 = if IsNaN(long) then line3[1] else long[0];
plot S_Entry = if IsNaN(long) then line3 else double.nan;
S_Entry.setpaintingStrategy(paintingStrategy.LINE);
S_Entry.setlineWeight(3);
S_Entry.setdefaultColor(color.red);
S_Entry.hideBubble();
def SE =(if isNaN(S_Entry[1]) then S_Entry else Double.NaN);
addchartBubble(Entry_SL_Bubbles and S_Entry, SE,"S/E",color.RED);

#Long Entry
rec line4 = if IsNaN(short) then line4[1] else short[0];
plot L_Entry = if IsNaN(short) then line4 else double.nan;
L_Entry.setpaintingStrategy(paintingStrategy.LINE);
L_Entry.setlineWeight(3);
L_Entry.setdefaultColor(color.green);
L_Entry.hideBubble();
def LE =(if isNaN(L_Entry[1]) then L_Entry else Double.NaN);
addchartBubble(Entry_SL_Bubbles and L_Entry, LE,"L/E",color.GREEN);

#HalfX Long
plot x1a_Long =  if Targetlines then (L_Entry +(L_Entry - L_Stoploss)/2) else double.nan;
x1a_Long.setpaintingStrategy(paintingStrategy.dashes);
x1a_Long.setlineWeight(1);
x1a_Long.setdefaultColor(color.magenta);
x1a_Long.hideBubble();

#OneX Long
plot x1_Long = if Targetlines and x1a_Long > line4 then (L_Entry +(L_Entry - L_Stoploss)) else double.nan;
x1_Long.setpaintingStrategy(paintingStrategy.dashes);
x1_Long.setlineWeight(1);
x1_Long.setdefaultColor(color.yellow);

#TwoX Long
plot x2_Long = if Targetlines then x1_Long +(L_Entry - L_Stoploss) else double.nan;
x2_Long.setpaintingStrategy(paintingStrategy.line);
x2_Long.setlineWeight(2);
x2_Long.setdefaultColor(color.light_red);
def X2L =(if isNaN(x2_Long[1]) then x2_Long else Double.NaN);
addchartBubble(Target_Bubbles and x2_Long, x2L,"2xL",color.light_red);

#ThreeX Long
plot x3_Long = if Targetlines then x2_Long +(L_Entry - L_Stoploss) else double.nan;
x3_Long.setpaintingStrategy(paintingStrategy.dashes);
x3_Long.setlineWeight(1);
x3_Long.setdefaultColor(color.cyan);
def X3L =(if isNaN(x3_Long[1]) then x3_Long else Double.NaN);
addchartBubble(Target_Bubbles and x3_Long, x3L,"3xL",color.cyan);

#FourX Long
plot x4_Long = if Targetlines then x3_Long +(L_Entry - L_Stoploss) else double.nan;
x4_Long.setpaintingStrategy(paintingStrategy.dashes);
x4_Long.setlineWeight(1);
x4_Long.setdefaultColor(color.white);
def X4L =(if isNaN(x4_Long[1]) then x4_Long else Double.NaN);
addchartBubble(Target_Bubbles and x4_Long, x4L,"4xL",color.white);

#HalfX Short
plot x1a_Short = if Targetlines then (S_Entry -(S_Stoploss - S_Entry)/2) else double.nan;
x1a_Short.setpaintingStrategy(paintingStrategy.dashes);
x1a_Short.setlineWeight(1);
x1a_Short.setdefaultColor(color.magenta);
x1a_Short.hideBubble();

#OneX Short
plot x1_Short = if Targetlines and x1a_short < line3 then (S_Entry -(S_Stoploss - S_Entry)) else double.nan;
x1_Short.setpaintingStrategy(paintingStrategy.dashes);
x1_Short.setlineWeight(1);
x1_Short.setdefaultColor(color.yellow);

#TwoX Short
plot x2_Short = if Targetlines then x1_Short -(S_Stoploss - S_Entry) else double.nan;
x2_Short.setpaintingStrategy(paintingStrategy.line);
x2_Short.setlineWeight(2);
x2_Short.setdefaultColor(color.light_green);
def X2S =(if isNaN(x2_Short[1]) then x2_Short else Double.NaN);
addchartBubble(Target_Bubbles and x2_Short, x2S,"2xS",color.light_green);

#ThreeX Short
plot x3_Short = if Targetlines then x2_Short -(S_Stoploss - S_Entry) else double.nan;
x3_Short.setpaintingStrategy(paintingStrategy.dashes);
x3_Short.setlineWeight(1);
x3_Short.setdefaultColor(color.cyan);
def X3S =(if isNaN(x3_Short[1]) then x3_Short else Double.NaN);
addchartBubble(Target_Bubbles and x3_Short, x3S,"3xS",color.cyan);

#FourX Short
plot x4_Short = if Targetlines then x3_Short -(S_Stoploss - S_Entry) else double.nan;
x4_Short.setpaintingStrategy(paintingStrategy.dashes);
x4_Short.setlineWeight(1);
x4_Short.setdefaultColor(color.white);
def X4S =(if isNaN(x4_Short[1]) then x4_Short else Double.NaN);
addchartBubble(Target_Bubbles and x4_Short, x4S,"4xS",color.white);

#LinearRegCh100 RegressionDivergence - Trigger Lines - Trend Cross
# From Lizard Indicators Link: https://www.lizardindicators.com/trigger-lines-cross-vs-thrust/
# Line #1 - Fast = LinReg (80)
# Line #2 - Slow = EXPEMA[LinReg (80)]

input LinRegLength = 80;
input EMAlength = 20;
input ColorOn = yes;

#Definitions
def price1 = close;
def displace = 0;
def LinReg = Inertia(price1[-displace], LinRegLength);
def EMA_LR = ExpAverage(LinReg[-displace], EMAlength);
def Body = (open + close)/2;

# Defining Long/Short Filters (these instructions determine entries / exits)
# Entry Requirements
def Long_Entry = close > LinReg and close > EMA_LR and body > LinReg and body > EMA_LR and close > high[1] and body > body[1];
# LinReg > LinReg[1] and
def Long_Stay_In = close > LinReg and close > EMA_LR;
def Long_Exit = (close < LinReg or close < EMA_LR) or Long_Stay_In == 0;
def Long_State = If Long_Entry then 1 else if Long_Exit then 0 else Long_State[1];
def Long1 = Long_State;

# Exit Requirements
def Short_Entry = close < LinReg and close < EMA_LR and body < LinReg and body < EMA_LR and close < low[1] and body < body[1];
# LinReg < LinReg[1] and
def Short_Stay_In = close < LinReg and close < EMA_LR;
def Short_Exit = (close > LinReg or close > EMA_LR) or Short_Stay_In == 0;
def Short_State = If Short_Entry then 1 else if Short_Exit then 0 else Short_State[1];
def Short1 = Short_State;

#Adding Linear Regression averages
plot LR = LinReg;
LR.SetDefaultColor(CreateColor(0, 130, 255));
plot EMA_LinReg = EMA_LR;
EMA_LinReg.SetDefaultColor(CreateColor(255, 215,0));
LR.setlineweight(1);
EMA_LinReg.setlineweight(2);

#DYNO Label

AddLabel(yes and labels and Short1, "DYNO:BEARISH", color.RED);
AddLabel(yes and labels and Long1, "DYNO:BULLISH", color.green);
AddLabel(yes and labels and Long1 == Short1, "DYNO:NEUTRAL", color.YELLOW);

#Regression Bands

input deviations = 1.618;  #set your deviation units here.
input length = 500; #set your channel lookback period here.

def stdDeviation = StDevAll(price, length);
plot HighBand = if Bands then EMA_LinReg + deviations * stdDeviation else double.nan;
HighBand.SetDefaultColor(Color.red);
plot LowBand = if Bands then EMA_LinReg - deviations * stdDeviation else double.nan;
LowBand.SetDefaultColor(Color.green);
DefineGlobalColor("Bullish", Color.light_green);
DefineGlobalColor("Bearish", Color.light_RED);


#200 DAY MOVING AVERAGE

input lengthAvgEXP = 200;

plot AvgExp = ExpAverage(price[-displace], lengthAvgExp);

AvgExp.SetDefaultColor(Color.white);
AvgExp.setlineweight(2);

# Coloring Bars
AssignPriceColor(if ColorON and Long_State then Color.GREEN else if ColorON and Short_State then Color.RED else Color.Yellow);
DefineGlobalColor("Bullish", Color.dark_Green);
DefineGlobalColor("Bearish", Color.dark_Red);
AddCloud(EMA_LR, LinReg, GlobalColor("Bearish"), GlobalColor("Bullish"));


###################
#
# ALERTS
#
###################

Alert(alertON and LongTrigger, "Long Entry", Alert.BAR, Sound.Ding);

Alert(alertON and ShortTrigger, "Short Entry", Alert.BAR, Sound.Ding);

Alert(alertON and Buysetup, "HULL Buy", Alert.BAR, Sound.Bell);

Alert(alertON and Sellsetup, "HULL Sell", Alert.BAR, Sound.Bell);

Alert(alertON and high > highband, "Short Band", Alert.BAR, Sound.Ding);

Alert(alertON and low < lowband, "Long Band", Alert.BAR, Sound.Ding);


Thanks, and enjoy!!
hi,
@chewie76 what are your setting for Donchian Trend Ribbon?
 

chewie76

Well-known member
VIP
VIP Enthusiast
How do I get his code to only plot current line and not plot every time it triggers and cover my chart in lines? An option to turn it off/on would ideal for all previous (not current) resistance/support lines. Seen it done and looked at other code but not experienced enough to make it work here.




#Short Entry
rec line3 = if IsNaN(long) then line3[1] else long[0];
plot S_Entry = if IsNaN(long) then line3 else double.nan;
S_Entry.setpaintingStrategy(paintingStrategy.LINE);
S_Entry.setlineWeight(3);
S_Entry.setdefaultColor(color.red);
S_Entry.hideBubble();
def SE =(if isNaN(S_Entry[1]) then S_Entry else Double.NaN);
addchartBubble(Entry_SL_Bubbles and S_Entry, SE,"S/E",color.RED);
This version only shows recent targets. http://tos.mx/H7Qoddz
 

TDTOS

New member
Is there a way to to puts arrows on /es, spy, mnq, /mes chart when all three $vold, $add , $tick. And es. donchian turn red and green? I'm not a code so im not sure how to go about it.

Or Is there a way to have Donchian of $vold, $add and $ tick show up as lower study on any chart ie /es, /mes, spy,..?

Please help!!

Thanks in advance!
Do you mind sharing your chart?
 

trader_

New member
If anyone wants it. Here is the code for the SuperTrend which was converted to match the video exactly

Code:
#JT_SuperTrend v1.0 (Replica From TradingView)

Declare Upper;

##################################################################
#                          Hull Suite                            #
##################################################################
def length = 60;

def HMA = wma(2 * wma(close, (length*3) / 2) - wma(close, (length*3)), round(sqrt((length*3))));

def HULL = HMA;
def MHULL = HULL[0];
def SHULL = HULL[2];

plot HMA1 = MHULL;
HMA1.AssignValueColor(if HULL > HULL[2] then COLOR.GREEN else COLOR.RED);
HMA1.SetLineWeight(1);

plot HMA2 = SHULL;
HMA2.AssignValueColor(if HULL > HULL[2] then COLOR.GREEN else COLOR.RED);
HMA2.SetLineWeight(1);

AddCloud (HMA1, HMA2);

##################################################################
#                         SuperTrend                             #
##################################################################
def AtrMult = 5;
def nATR = 50;
input AvgType = AverageType.HULL;

def ATR = ATR("length" = nATR, "average type" = AvgType);
def UP_Band_Basic = HL2 + (AtrMult * ATR);
def LW_Band_Basic = HL2 + (-AtrMult * ATR);
def UP_Band = if ((UP_Band_Basic < UP_Band[1]) or (close[1] > UP_Band[1])) then UP_Band_Basic else UP_Band[1];
def LW_Band = if ((LW_Band_Basic > LW_Band[1]) or (close[1] < LW_Band[1])) then LW_Band_Basic else LW_Band[1];

def ST = if ((ST[1] == UP_Band[1]) and (close < UP_Band)) then UP_Band
else if ((ST[1] == UP_Band[1]) and (close > Up_Band)) then LW_Band
else if ((ST[1] == LW_Band[1]) and (close > LW_Band)) then LW_Band
else if ((ST[1] == LW_Band) and (close < LW_Band)) then UP_Band
else LW_Band;

plot Long = if close > ST then ST else Double.NaN;
Long.AssignValueColor(Color.GREEN);
Long.SetLineWeight(2);

plot Short = if close < ST then ST else Double.NaN;
Short.AssignValueColor(Color.RED);
Short.SetLineWeight(3);

def LongTrigger = isNaN(Long[1]) and !isNaN(Long);
def ShortTrigger = isNaN(Short[1]) and !isNaN(Short);

plot LongDot = if LongTrigger then ST else Double.NaN;
LongDot.SetPaintingStrategy(PaintingStrategy.POINTS);
LongDot.AssignValueColor(Color.GREEN);
LongDot.SetLineWeight(4);

plot ShortDot = if ShortTrigger then ST else Double.NaN;
ShortDot.SetPaintingStrategy(PaintingStrategy.POINTS);
ShortDot.AssignValueColor(Color.RED);
ShortDot.SetLineWeight(4);

##################################################################
#                             Cloud                              #
##################################################################
AddCloud(if close > long then long else double.nan, close, color.light_green, color.light_green);
AddCloud(if close< short then short else double.nan, close, color.pink, color.pink);
Do you know where I can find this on TradingView by chance?
 

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.
Top