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

Repaints
This has been a useful thread for me. I borrowed @chewie76 supertrend indicator. I'm having difficulty setting up a scan that informs me that a trend has gone in the opposite direction. In other words, a long trend would begin when the price breaks above the short trend. How can I scan for that event? Tried using LongDot and ShortDot but it didn't work properly. This is the code:

#Hull_SuperTrend_Trading_System
# assembled by Chewie 4/10/2022
input Target_Bubbles = no;
input Entry_SL_Bubbles = no;
input Targetlines = yes;
input Labels = yes;
input alertON = yes;
input Bands = yes;
input AvgType = AverageType.HULL;
input STAtrMult = 2.75;
input nATR = 12;
#======== Calculate the Supertrend =====================================================
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;
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);
#======== End of Supertrend calcs
 
This has been a useful thread for me. I borrowed @chewie76 supertrend indicator. I'm having difficulty setting up a scan that informs me that a trend has gone in the opposite direction. In other words, a long trend would begin when the price breaks above the short trend. How can I scan for that event? Tried using LongDot and ShortDot but it didn't work properly. This is the code:

#Hull_SuperTrend_Trading_System
# assembled by Chewie 4/10/2022
input Target_Bubbles = no;
input Entry_SL_Bubbles = no;
input Targetlines = yes;
input Labels = yes;
input alertON = yes;
input Bands = yes;
input AvgType = AverageType.HULL;
input STAtrMult = 2.75;
input nATR = 12;
#======== Calculate the Supertrend =====================================================
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;
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);
#======== End of Supertrend calcs
https://usethinkscript.com/threads/...ystem-for-thinkorswim.10894/page-5#post-97511
 
@chewie76 @AnimalMother The following step-by-step outlines how to successfully create a scan when TOS says "it's too complex to scan"...
  1. Open the Hull SuperTrend System code in your preferred text editor
  2. Change all "plots" to "def" (except if part of a Script or an Input)
  3. Delete all corresponding plot formatting code
  4. Add desired Scan Query using plot statement
Below is a sample excerpt of the conversion:

#200 DAY MOVING AVERAGE​
def price1 = close;​
def displace = 0;​
input lengthAvgEXP = 200;​
Delete the plot and replace with def
plot def AvgExp = ExpAverage(price1[-displace], lengthAvgExp);​
Delete all plot formatting code
AvgExp.SetDefaultColor(Color.white);
AvgExp.setlineweight(2);
Add desired Scan Query
plot bullscan = close > open and close > AvgExp and AvgExp > AvgExp[1];​
#plot bearscan = close < open and close < AvgExp and AvgExp < AvgExp[1];​


Complete conversion of Chewie's SuperTrend/Hull Average/Donchian Trend Ribbon Trading System:

Rich (BB code):
# filename: Hull_SuperTrend_System_SCAN

#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 = yes;
#input Entry_SL_Bubbles = yes;
#input labels = yes;
#input alertON = no;
input Bands = no;
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;

def Long = if close > ST then ST else Double.NaN;
def Short = if close < ST then ST else Double.NaN;

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

def LongDot = if LongTrigger then ST else Double.NaN;
def ShortDot = if ShortTrigger then ST else Double.NaN;

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

declare upper;

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

def price = HL2;
def 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;

def turning_point = if concavity[1] != concavity then HMA else Double.NaN;

def MA_Max = if HMA[-1] < HMA and HMA > HMA[1] then HMA else Double.NaN;
def MA_Min = if HMA[-1] > HMA and HMA < HMA[1] then HMA else Double.NaN;

#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);
#sell.hide();

#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);
#buy.hide();

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);
#CCD_D.hide();

#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);
#CCD_I.hide();

#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);
#CCU_D.hide();

#plot CCU_I = if concavity == 1 and HMA > HMA[1] then HMA else Double.NaN;
#CCU_I.SetDefaultColor(Color.GREEN);
#CCU_I.SetLineWeight(1);
#CCU_I.hide();

#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];
def L_stoploss = if IsNaN(MA_Min) then line else Double.NaN;
def LSL = (if IsNaN(L_stoploss[1]) then L_stoploss else Double.NaN);

rec line2 = if IsNaN(MA_Max) then line2[1] else MA_Max[0];
def S_stoploss = if IsNaN(MA_Max) then line2 else Double.NaN;
def SSL = (if IsNaN(S_stoploss[1]) then S_stoploss else Double.NaN);

#Short Entry
rec line3 = if IsNaN(Long) then line3[1] else Long[0];
def S_Entry = if IsNaN(Long) then line3 else Double.NaN;
def SE = (if IsNaN(S_Entry[1]) then S_Entry else Double.NaN);

#Long Entry
rec line4 = if IsNaN(Short) then line4[1] else Short[0];
def L_Entry = if IsNaN(Short) then line4 else Double.NaN;
def LE = (if IsNaN(L_Entry[1]) then L_Entry else Double.NaN);


#HalfX Long
def x1a_Long =  (L_Entry + (L_Entry - L_stoploss) / 2) ;

#OneX Long
def x1_Long = if x1a_Long > line4 then (L_Entry + (L_Entry - L_stoploss)) else Double.NaN;

#TwoX Long
def x2_Long = x1_Long + (L_Entry - L_stoploss) ;
def X2L = (if IsNaN(x2_Long[1]) then x2_Long else Double.NaN);

#ThreeX Long
def x3_Long = x2_Long + (L_Entry - L_stoploss) ;
def X3L = (if IsNaN(x3_Long[1]) then x3_Long else Double.NaN);

#FourX Long
def x4_Long = x3_Long + (L_Entry - L_stoploss) ;
def X4L = (if IsNaN(x4_Long[1]) then x4_Long else Double.NaN);


#HalfX Short
def x1a_Short = (S_Entry - (S_stoploss - S_Entry) / 2);

#OneX Short
def x1_Short = if x1a_Short < line3 then (S_Entry - (S_stoploss - S_Entry)) else Double.NaN;

#TwoX Short
def x2_Short = x1_Short - (S_stoploss - S_Entry);
def X2S = (if IsNaN(x2_Short[1]) then x2_Short else Double.NaN);

#ThreeX Short
def x3_Short = x2_Short - (S_stoploss - S_Entry);
def X3S = (if IsNaN(x3_Short[1]) then x3_Short else Double.NaN);

#FourX Short
def x4_Short = x3_Short - (S_stoploss - S_Entry);
def X4S = (if IsNaN(x4_Short[1]) then x4_Short else Double.NaN);

#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
def LR = LinReg;
def EMA_LinReg = EMA_LR;

#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);
def HighBand = if Bands then EMA_LinReg + deviations * stdDeviation else Double.NaN;
def LowBand = if Bands then EMA_LinReg - deviations * stdDeviation else Double.NaN;

#200 DAY MOVING AVERAGE

def price1 = close;
def displace = 0;
input lengthAvgEXP = 200;

def AvgExp = ExpAverage(price[-displace], lengthAvgEXP);
AvgExp.SetDefaultColor(Color.white);
AvgExp.setlineweight(2);

plot bullscan = close > open and close > AvgExp and AvgExp > AvgExp[1];
#plot bearscan = close < open and close < AvgExp and AvgExp < AvgExp[1];


Rich (BB code):
# filename: Donchian_Trend_Ribbon_SCAN

# donchian_trend_ribbon_0e

# convert - donchian trend ribbon
# halcyonguy
# 22-04-07

# 00e
# can chg secondary colors ( 1 , -1) to yellow or diff shades

# 00d
# add histogram , sum of color numbers

# https://usethinkscript.com/threads/convert-tradingview-donchian-trend-ribbon.10822/
# Convert Tradingview Donchian Trend Ribbon
# chewie76  4/4
# Can someone convert the Donchian Trend Ribbon into TOS?
# --------------------------------
# https://www.tradingview.com/script/PxLqmP8o-Donchian-Trend-Ribbon/
#I think you all know Donchian Channels . so I am not going to write about it.
#https://www.tradingview.com/scripts/donchianchannels/
#With this indicator I tried to create Donchian Trend Ribbon by using Donchian Channels .

# How it works ?
# - it calculates main trend direction by using the length that is user-defined. so you can change it as you wish
# - then it calculates trend direction for each 9 lower lengths. if you set the length = 20 then the lengths are 19, 18,...11
# - and it checks if the trend directions that came from lower lengths is same or not with main trend direction.
# - it changes the trend color of the ribbon.
# -----------------------------

#declare lower;

input Donchian_Channel_Period = 20;
def dlen = if Donchian_Channel_Period < 10 then 10 else Donchian_Channel_Period;
input show_data_rows = yes;
input show_sum_histo = yes;
def na = double.nan;

input secondary_colors = { default yellow , green_red };
input show_full_height_of_histogram = yes;
def z = if show_full_height_of_histogram and !isnan(close) then 0 else na;

script dchannel {
  input len = 0;
  def hh = highest(high, len);
  def ll = lowest(low, len);
  def trend = if barnumber() == 1 then 0 else if close > hh[1] then 1 else if close < ll[1] then -1 else trend[1];
  plot z = trend;
}

script dchannelalt {
  input len = 0;
  input maintrend = 0;
  def hh = highest(high, len);
  def ll = lowest(low, len);
  def trend = if barnumber() == 1 then 0 else if close > hh[1] then 1 else if close < ll[1] then -1 else trend[1];
 
 def maincolor =
  if maintrend == 1 then if trend == 1 then 2 else 1
  else if maintrend == -1 then if trend == -1 then -2 else -1
  else 0;

  plot color = maincolor;
#  plot tr = trend;
}

def maintrend = dchannel(dlen);

# ---------------------------------

# input secondary_colors = { default yellow , green_red };
def seccolor;
switch (secondary_colors) {
case yellow:
  seccolor = 1;
case green_red:
  seccolor = 2;
}

#   colors
# 2 - up trend - green
# 1 - up trend - dark green
# 0 no trend
# -1 - down trend - dark red
# -2 - down trend - red

DefineGlobalColor("up2", color.green);
DefineGlobalColor("up1", color.dark_green);
DefineGlobalColor("none", color.dark_gray);
DefineGlobalColor("dwn1", color.dark_red);
DefineGlobalColor("dwn2", color.red);
# GlobalColor("up1")
DefineGlobalColor("alt1", color.yellow);
# GlobalColor("alt1")
#----------------------------------------

input bottom_row = 0;
def rowstart = if bottom_row <> 0 then bottom_row
  else if ( show_data_rows and show_sum_histo ) then 25
  else 0;

input rowskip = 5;
input square_size = 4;

#plot( 5, color = dchannelalt(dlen - 0, maintrend), style = plot.style_columns, histbase= 0)
def c01 = dchannelalt(dlen - 0, maintrend);
def row01 = if isnan(close) then double.nan else (rowstart + ( 1 * rowskip));

def c02 = dchannelalt(dlen - 1, maintrend);
def row02 = if isnan(close) then double.nan else (rowstart + ( 2 * rowskip));

def c03 = dchannelalt(dlen - 2, maintrend);
def row03 = if isnan(close) then double.nan else (rowstart + ( 3 * rowskip));

def c04 = dchannelalt(dlen - 3, maintrend);
def row04 = if isnan(close) then double.nan else (rowstart + ( 4 * rowskip));

def c05 = dchannelalt(dlen - 4, maintrend);
def row05 = if isnan(close) then double.nan else (rowstart + ( 5 * rowskip));

def c06 = dchannelalt(dlen - 5, maintrend);
def row06 = if isnan(close) then double.nan else (rowstart + ( 6 * rowskip));

def c07 = dchannelalt(dlen - 6, maintrend);
def row07 = if isnan(close) then double.nan else (rowstart + ( 7 * rowskip));

def c08 = dchannelalt(dlen - 7, maintrend);
def row08 = if isnan(close) then double.nan else (rowstart + ( 8 * rowskip));

def c09 = dchannelalt(dlen - 8, maintrend);
def row09 = if isnan(close) then double.nan else (rowstart + ( 9 * rowskip));

def c10 = dchannelalt(dlen - 9, maintrend);
def row10 = if isnan(close) then double.nan else (rowstart + ( 10 * rowskip));

# -----------------------------

# add up color numbers, to come up with a 'trend' number , 20 to -20
def colorsum = ( c01 + c02 + c03 + c04 + c05 + c06 + c07 + c08 + c09 + c10 );

# plot a histogram of colorsum.
# it uses absvalue( ), so it is positive numbers, 0 to 20
#input vert1 = 0;  + vert1
def zc = if show_sum_histo then (absvalue(colorsum)) else na;

plot bullscan = colorsum >= 19;
#plot bearscan = colorsum <= -19;


Hope this helps...

Good Luck and Good Trading :cool:
This is really good. When setting up the scanner, consider adding Market cap, $M (i.e. >25 billion dollar market cap), Shares float (i.e. >500 million), and ATR > 5. You can certainly adjust the filters to your liking. But works great!
 
@chewie76 @ponos1207
This thread is like Wack-A-Mole.... The repainting AddOrder scripts keep getting deleted and they keep popping back up.

While the short and long entry bubbles based on the supertrend portion of this indicator do not repaint;
The rest of this indicator still repaints:
The rest of the calculations pull from MA_Min and MA_Max which are calculated with future bars.

Therefore, all subsequent values will repaint until the future bars close.

Repainting studies do not have misleading P&Ls so repainters have a place on the forum. On the highest of our three timeframes, they provide important information about cycle.

Strategies, created from this script, use AddOrder statements generate useless, misleading P&Ls.
They are erases losses and only reporting profits. Which is why they cannot be posted to this forum.
 
Last edited:
which of the 3 indicators repaints?
While the short and long entry bubbles based on the supertrend portion of this indicator do not repaint;
The rest of this indicator still repaints:
The rest of the calculations pull from MA_Min and MA_Max which are calculated with future bars.
Therefore, all subsequent values will repaint until the future bars close.

thank you, so the Donchian Trend Ribbon also repaints then?
No the Donchian Ribbon is separate and not part of the Hull Repainting Strategy.
 
Last edited:

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

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
369 Online
Create Post

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