Need Help with MTF variables

jefepollo

New member
Don't know if I asked the question properly but what I'm trying to do is add variables to the "period" input so that I don't have to add the indicator for each time frame that I'm interested in. Won't let me define "time_frame" in the code.

Code:
def time_frame = if GetAggregationPeriod() == AggregationPeriod.MONTH then AggregationPeriod.MONTH
else if AggregationPeriod.WEEK then AggregationPeriod.WEEK
else if AggregationPeriod.FOUR_DAYS then AggregationPeriod.FOUR_DAYS
else if AggregationPeriod.THREE_DAYS then AggregationPeriod.THREE_DAYS
else if AggregationPeriod.TWO_DAYS then AggregationPeriod.TWO_DAYS
else if AggregationPeriod.DAY then AggregationPeriod.DAY
else if AggregationPeriod.FOUR_HOURS then AggregationPeriod.FOUR_HOURS
else if AggregationPeriod.TWO_HOURS then AggregationPeriod.TWO_HOURS
else if AggregationPeriod.HOUR then AggregationPeriod.HOUR
else if AggregationPeriod.THIRTY_MIN then AggregationPeriod.THIRTY_MIN
else if AggregationPeriod.TWENTY_MIN then AggregationPeriod.TWENTY_MIN
else if AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.FIFTEEN_MIN
else if AggregationPeriod.TEN_MIN then AggregationPeriod.TEN_MIN
else if AggregationPeriod.FIVE_MIN then AggregationPeriod.FIVE_MIN
else if AggregationPeriod.FOUR_MIN then AggregationPeriod.FOUR_MIN
else if AggregationPeriod.THREE_MIN then AggregationPeriod.THREE_MIN
else if AggregationPeriod.TWO_MIN then AggregationPeriod.TWO_MIN
else if AggregationPeriod.MIN then AggregationPeriod.MIN
else "";

input period = time_frame;

Here is the original snippet of code in it's entirety that I'm trying to modify.
Code:
input period = AggregationPeriod.DAY;

DefineGlobalColor("UpTrend", Color.Green);
DefineGlobalColor("DownTrend", Color.RED);
DefineGlobalColor("NoTrend", Color.GRAY);

script RSM_ {

    input aP = AggregationPeriod.DAY;
    # RSI
    def lengthRSI = 7;
    def averageTypeRSI = AverageType.WILDERS;
    # Stochastic
    def over_boughtSt = 80;
    def over_soldSt = 20;
    def KPeriod = 14;
    def DPeriod = 3;
    input averageTypeStoch = AverageType.SIMPLE;
    # MACD
    def fastLength = 12;
    def slowLength = 26;
    def MACDLength = 9;
    def averageTypeMACD = AverageType.EXPONENTIAL;

    ###############################################################
    ##########                 RSI                         #########
    ################################################################

    def NetChgAvg = MovingAverage(averageTypeRSI, close(period = aP) - close(period = aP)[1], lengthRSI);
    def TotChgAvg = MovingAverage(averageTypeRSI, AbsValue(close(period = aP) - close(period = aP)[1]), lengthRSI);
    def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0;
    def RSI_ = 50 * (ChgRatio + 1);

    ################################################################
    ##########                 Stochastic Slow             #########
    ################################################################

    def SlowK_ = reference StochasticFull(over_boughtSt,  over_soldSt,  KPeriod,  DPeriod,  high(period = aP),  low(period = aP),  close(period = aP),  3, if (averageTypeStoch == 1) then AverageType.SIMPLE else AverageType.EXPONENTIAL).FullK;
    def SlowD_ = reference StochasticFull(over_boughtSt,  over_soldSt,  KPeriod,  DPeriod,  high(period = aP),  low(period = aP),  close(period = aP),  3, if (averageTypeStoch == 1) then AverageType.SIMPLE else AverageType.EXPONENTIAL).FullD;

    ################################################################
    ##########                 MACD                      ###########
    ################################################################

    def Value_ = MovingAverage(averageTypeMACD, close(period = aP), fastLength) - MovingAverage(averageTypeMACD, close(period = aP), slowLength);
    def Avg_ = MovingAverage(averageTypeMACD, Value_, MACDLength);
    def Diff_ = Value_ - Avg_;

    #################################################################
    ##########          Trend  & Labels                   #########
    #################################################################
    def UpTrend_ = if RSI_ >= 50 and SlowD_ >= 50 and Value_ > Avg_ then 1 else 0;
    def DownTrend_ = if RSI_ < 50 and SlowD_ < 50 and Value_ < Avg_ then 1 else 0;
    plot Trend_ = if UpTrend_ then 1 else if DownTrend_ then 0 else -1;

}

def currentPeriod = GetAggregationPeriod();
def RSM;

if period >= currentPeriod {
    RSM = RSM_(aP = period);

} else {
    RSM = Double.NaN;

}

AddLabel(!IsNaN(RSM), if period == AggregationPeriod.MONTH then "M"
else if period == AggregationPeriod.WEEK then "W"
else if period == AggregationPeriod.FOUR_DAYS then "4D"
else if period == AggregationPeriod.THREE_DAYS then "3D"
else if period == AggregationPeriod.TWO_DAYS then "2D"
else if period == AggregationPeriod.DAY then "D"
else if period == AggregationPeriod.FOUR_HOURS then "4H"
else if period == AggregationPeriod.TWO_HOURS then "2H"
else if period == AggregationPeriod.HOUR then "60m"
else if period == AggregationPeriod.THIRTY_MIN then "30m"
else if period == AggregationPeriod.TWENTY_MIN then "20m"
else if period == AggregationPeriod.FIFTEEN_MIN then "15m"
else if period == AggregationPeriod.TEN_MIN then "10m"
else if period == AggregationPeriod.FIVE_MIN then "5m"
else if period == AggregationPeriod.FOUR_MIN then "4m"
else if period == AggregationPeriod.THREE_MIN then "3m"
else if period == AggregationPeriod.TWO_MIN then "2m"
else if period == AggregationPeriod.MIN then "1m"
else "", if RSM == 1 then GlobalColor("UpTrend") else if RSM == 0 then GlobalColor("DownTrend") else GlobalColor("NoTrend"));


I mean, I guess it's really not that big of a deal as I can change the 'input period = x' line to give me the time periods but I would rather only have to add the indicator once.
Thank you for any help that you can provide.
 
Don't know if I asked the question properly but what I'm trying to do is add variables to the "period" input so that I don't have to add the indicator for each time frame that I'm interested in. Won't let me define "time_frame" in the code.

Code:
def time_frame = if GetAggregationPeriod() == AggregationPeriod.MONTH then AggregationPeriod.MONTH
else if AggregationPeriod.WEEK then AggregationPeriod.WEEK
else if AggregationPeriod.FOUR_DAYS then AggregationPeriod.FOUR_DAYS
else if AggregationPeriod.THREE_DAYS then AggregationPeriod.THREE_DAYS
else if AggregationPeriod.TWO_DAYS then AggregationPeriod.TWO_DAYS
else if AggregationPeriod.DAY then AggregationPeriod.DAY
else if AggregationPeriod.FOUR_HOURS then AggregationPeriod.FOUR_HOURS
else if AggregationPeriod.TWO_HOURS then AggregationPeriod.TWO_HOURS
else if AggregationPeriod.HOUR then AggregationPeriod.HOUR
else if AggregationPeriod.THIRTY_MIN then AggregationPeriod.THIRTY_MIN
else if AggregationPeriod.TWENTY_MIN then AggregationPeriod.TWENTY_MIN
else if AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.FIFTEEN_MIN
else if AggregationPeriod.TEN_MIN then AggregationPeriod.TEN_MIN
else if AggregationPeriod.FIVE_MIN then AggregationPeriod.FIVE_MIN
else if AggregationPeriod.FOUR_MIN then AggregationPeriod.FOUR_MIN
else if AggregationPeriod.THREE_MIN then AggregationPeriod.THREE_MIN
else if AggregationPeriod.TWO_MIN then AggregationPeriod.TWO_MIN
else if AggregationPeriod.MIN then AggregationPeriod.MIN
else "";

input period = time_frame;

Here is the original snippet of code in it's entirety that I'm trying to modify.
Code:
input period = AggregationPeriod.DAY;

DefineGlobalColor("UpTrend", Color.Green);
DefineGlobalColor("DownTrend", Color.RED);
DefineGlobalColor("NoTrend", Color.GRAY);

script RSM_ {

    input aP = AggregationPeriod.DAY;
    # RSI
    def lengthRSI = 7;
    def averageTypeRSI = AverageType.WILDERS;
    # Stochastic
    def over_boughtSt = 80;
    def over_soldSt = 20;
    def KPeriod = 14;
    def DPeriod = 3;
    input averageTypeStoch = AverageType.SIMPLE;
    # MACD
    def fastLength = 12;
    def slowLength = 26;
    def MACDLength = 9;
    def averageTypeMACD = AverageType.EXPONENTIAL;

    ###############################################################
    ##########                 RSI                         #########
    ################################################################

    def NetChgAvg = MovingAverage(averageTypeRSI, close(period = aP) - close(period = aP)[1], lengthRSI);
    def TotChgAvg = MovingAverage(averageTypeRSI, AbsValue(close(period = aP) - close(period = aP)[1]), lengthRSI);
    def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0;
    def RSI_ = 50 * (ChgRatio + 1);

    ################################################################
    ##########                 Stochastic Slow             #########
    ################################################################

    def SlowK_ = reference StochasticFull(over_boughtSt,  over_soldSt,  KPeriod,  DPeriod,  high(period = aP),  low(period = aP),  close(period = aP),  3, if (averageTypeStoch == 1) then AverageType.SIMPLE else AverageType.EXPONENTIAL).FullK;
    def SlowD_ = reference StochasticFull(over_boughtSt,  over_soldSt,  KPeriod,  DPeriod,  high(period = aP),  low(period = aP),  close(period = aP),  3, if (averageTypeStoch == 1) then AverageType.SIMPLE else AverageType.EXPONENTIAL).FullD;

    ################################################################
    ##########                 MACD                      ###########
    ################################################################

    def Value_ = MovingAverage(averageTypeMACD, close(period = aP), fastLength) - MovingAverage(averageTypeMACD, close(period = aP), slowLength);
    def Avg_ = MovingAverage(averageTypeMACD, Value_, MACDLength);
    def Diff_ = Value_ - Avg_;

    #################################################################
    ##########          Trend  & Labels                   #########
    #################################################################
    def UpTrend_ = if RSI_ >= 50 and SlowD_ >= 50 and Value_ > Avg_ then 1 else 0;
    def DownTrend_ = if RSI_ < 50 and SlowD_ < 50 and Value_ < Avg_ then 1 else 0;
    plot Trend_ = if UpTrend_ then 1 else if DownTrend_ then 0 else -1;

}

def currentPeriod = GetAggregationPeriod();
def RSM;

if period >= currentPeriod {
    RSM = RSM_(aP = period);

} else {
    RSM = Double.NaN;

}

AddLabel(!IsNaN(RSM), if period == AggregationPeriod.MONTH then "M"
else if period == AggregationPeriod.WEEK then "W"
else if period == AggregationPeriod.FOUR_DAYS then "4D"
else if period == AggregationPeriod.THREE_DAYS then "3D"
else if period == AggregationPeriod.TWO_DAYS then "2D"
else if period == AggregationPeriod.DAY then "D"
else if period == AggregationPeriod.FOUR_HOURS then "4H"
else if period == AggregationPeriod.TWO_HOURS then "2H"
else if period == AggregationPeriod.HOUR then "60m"
else if period == AggregationPeriod.THIRTY_MIN then "30m"
else if period == AggregationPeriod.TWENTY_MIN then "20m"
else if period == AggregationPeriod.FIFTEEN_MIN then "15m"
else if period == AggregationPeriod.TEN_MIN then "10m"
else if period == AggregationPeriod.FIVE_MIN then "5m"
else if period == AggregationPeriod.FOUR_MIN then "4m"
else if period == AggregationPeriod.THREE_MIN then "3m"
else if period == AggregationPeriod.TWO_MIN then "2m"
else if period == AggregationPeriod.MIN then "1m"
else "", if RSM == 1 then GlobalColor("UpTrend") else if RSM == 0 then GlobalColor("DownTrend") else GlobalColor("NoTrend"));


I mean, I guess it's really not that big of a deal as I can change the 'input period = x' line to give me the time periods but I would rather only have to add the indicator once.
Thank you for any help that you can provide.

Are you trying to get your label to display the timeframe you have your indicator set to?

Example:

If you have a 5m chart, but you're applying your indicator on a 1hr basis, are you looking for your labels to reflect that your indicator is set to a 1hr timeframe?

OR

Are you trying to get two instances of your indicator on the same chart with two different timeframes?

Example:

On a 5m chart, you'd like to have your indicator show as a 5m and 1hr indicator?

OR

Have I guessed completely wrong?
 
Don't know if I asked the question properly but what I'm trying to do is add variables to the "period" input so that I don't have to add the indicator for each time frame that I'm interested in. Won't let me define "time_frame" in the code.

Code:
def time_frame = if GetAggregationPeriod() == AggregationPeriod.MONTH then AggregationPeriod.MONTH
else if AggregationPeriod.WEEK then AggregationPeriod.WEEK
else if AggregationPeriod.FOUR_DAYS then AggregationPeriod.FOUR_DAYS
else if AggregationPeriod.THREE_DAYS then AggregationPeriod.THREE_DAYS
else if AggregationPeriod.TWO_DAYS then AggregationPeriod.TWO_DAYS
else if AggregationPeriod.DAY then AggregationPeriod.DAY
else if AggregationPeriod.FOUR_HOURS then AggregationPeriod.FOUR_HOURS
else if AggregationPeriod.TWO_HOURS then AggregationPeriod.TWO_HOURS
else if AggregationPeriod.HOUR then AggregationPeriod.HOUR
else if AggregationPeriod.THIRTY_MIN then AggregationPeriod.THIRTY_MIN
else if AggregationPeriod.TWENTY_MIN then AggregationPeriod.TWENTY_MIN
else if AggregationPeriod.FIFTEEN_MIN then AggregationPeriod.FIFTEEN_MIN
else if AggregationPeriod.TEN_MIN then AggregationPeriod.TEN_MIN
else if AggregationPeriod.FIVE_MIN then AggregationPeriod.FIVE_MIN
else if AggregationPeriod.FOUR_MIN then AggregationPeriod.FOUR_MIN
else if AggregationPeriod.THREE_MIN then AggregationPeriod.THREE_MIN
else if AggregationPeriod.TWO_MIN then AggregationPeriod.TWO_MIN
else if AggregationPeriod.MIN then AggregationPeriod.MIN
else "";

input period = time_frame;

Here is the original snippet of code in it's entirety that I'm trying to modify.
Code:
input period = AggregationPeriod.DAY;

DefineGlobalColor("UpTrend", Color.Green);
DefineGlobalColor("DownTrend", Color.RED);
DefineGlobalColor("NoTrend", Color.GRAY);

script RSM_ {

    input aP = AggregationPeriod.DAY;
    # RSI
    def lengthRSI = 7;
    def averageTypeRSI = AverageType.WILDERS;
    # Stochastic
    def over_boughtSt = 80;
    def over_soldSt = 20;
    def KPeriod = 14;
    def DPeriod = 3;
    input averageTypeStoch = AverageType.SIMPLE;
    # MACD
    def fastLength = 12;
    def slowLength = 26;
    def MACDLength = 9;
    def averageTypeMACD = AverageType.EXPONENTIAL;

    ###############################################################
    ##########                 RSI                         #########
    ################################################################

    def NetChgAvg = MovingAverage(averageTypeRSI, close(period = aP) - close(period = aP)[1], lengthRSI);
    def TotChgAvg = MovingAverage(averageTypeRSI, AbsValue(close(period = aP) - close(period = aP)[1]), lengthRSI);
    def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0;
    def RSI_ = 50 * (ChgRatio + 1);

    ################################################################
    ##########                 Stochastic Slow             #########
    ################################################################

    def SlowK_ = reference StochasticFull(over_boughtSt,  over_soldSt,  KPeriod,  DPeriod,  high(period = aP),  low(period = aP),  close(period = aP),  3, if (averageTypeStoch == 1) then AverageType.SIMPLE else AverageType.EXPONENTIAL).FullK;
    def SlowD_ = reference StochasticFull(over_boughtSt,  over_soldSt,  KPeriod,  DPeriod,  high(period = aP),  low(period = aP),  close(period = aP),  3, if (averageTypeStoch == 1) then AverageType.SIMPLE else AverageType.EXPONENTIAL).FullD;

    ################################################################
    ##########                 MACD                      ###########
    ################################################################

    def Value_ = MovingAverage(averageTypeMACD, close(period = aP), fastLength) - MovingAverage(averageTypeMACD, close(period = aP), slowLength);
    def Avg_ = MovingAverage(averageTypeMACD, Value_, MACDLength);
    def Diff_ = Value_ - Avg_;

    #################################################################
    ##########          Trend  & Labels                   #########
    #################################################################
    def UpTrend_ = if RSI_ >= 50 and SlowD_ >= 50 and Value_ > Avg_ then 1 else 0;
    def DownTrend_ = if RSI_ < 50 and SlowD_ < 50 and Value_ < Avg_ then 1 else 0;
    plot Trend_ = if UpTrend_ then 1 else if DownTrend_ then 0 else -1;

}

def currentPeriod = GetAggregationPeriod();
def RSM;

if period >= currentPeriod {
    RSM = RSM_(aP = period);

} else {
    RSM = Double.NaN;

}

AddLabel(!IsNaN(RSM), if period == AggregationPeriod.MONTH then "M"
else if period == AggregationPeriod.WEEK then "W"
else if period == AggregationPeriod.FOUR_DAYS then "4D"
else if period == AggregationPeriod.THREE_DAYS then "3D"
else if period == AggregationPeriod.TWO_DAYS then "2D"
else if period == AggregationPeriod.DAY then "D"
else if period == AggregationPeriod.FOUR_HOURS then "4H"
else if period == AggregationPeriod.TWO_HOURS then "2H"
else if period == AggregationPeriod.HOUR then "60m"
else if period == AggregationPeriod.THIRTY_MIN then "30m"
else if period == AggregationPeriod.TWENTY_MIN then "20m"
else if period == AggregationPeriod.FIFTEEN_MIN then "15m"
else if period == AggregationPeriod.TEN_MIN then "10m"
else if period == AggregationPeriod.FIVE_MIN then "5m"
else if period == AggregationPeriod.FOUR_MIN then "4m"
else if period == AggregationPeriod.THREE_MIN then "3m"
else if period == AggregationPeriod.TWO_MIN then "2m"
else if period == AggregationPeriod.MIN then "1m"
else "", if RSM == 1 then GlobalColor("UpTrend") else if RSM == 0 then GlobalColor("DownTrend") else GlobalColor("NoTrend"));


I mean, I guess it's really not that big of a deal as I can change the 'input period = x' line to give me the time periods but I would rather only have to add the indicator once.
Thank you for any help that you can provide.

i have no idea what you are asking for.
what do you want to see on the chart?

your code,
else if AggregationPeriod.WEEK then AggregationPeriod.WEEK
this is useless. Another way of thinking about it , if X = 2 then set it equal to 2. it's redundant, it doesn't change anything. and its wrong.

The first line mentioning month is correct but everything after it is wrong.

you forgot 'get' . using the wrong aggregation function.
else if getAggregationPeriod() == AggregationPeriod.WEEK then 1
else


are you wanting words to appear to descibe the chosen timeframe?
my shortened version.
https://usethinkscript.com/threads/...icator-for-thinkorswim.1129/page-4#post-69106
 
Here is how I've approached having a label indicate the timeframe I have an indicator set for. As you'll see, it is set so that IF I have not set up a specific aggregationperiod, the label will direct me to "Add Selected Timeframe!".

In this example, replace the "OMSell" variable with your parameter of choice.

Links to millisecond values from the online ThinkScript manual:

At this link for the 30m aggregationperiod you will see a reference to the number of milliseconds under the "Description" section

You can choose your timeframe here

Code:
input timeframe = aggregationperiod.hour

# TimeFrame Conversion Definitions / milliseconds

def Day_Nano = 86400000;
def Week_Nano = 604800000;
def Month_Nano = 2592000000;
def Min_Nano = 60000;
def Five_Min_Nano = 300000;
def fourH_Nano = 14400000;
def Hour_Nano = 3600000;
def Thirty_Nano = 1800000;
def Twenty_Nano = 1200000;
def Fifteen_Nano = 900000;

AddLabel(if OMSell then yes else no,
            if Timeframe equals Day_Nano then "Daily TF SELL @ " + Round(OMSell, 2)
    else if Timeframe equals Week_Nano then "Wk TF SELL @ " + AsPrice(OMSell)
    else if Timeframe equals Month_Nano then "Month TF SELL @" + AsPrice(OMSell)
    else if Timeframe equals Min_Nano then "1m TF SELL@ " + AsPrice(OMSell)
    else if Timeframe equals fourH_Nano then "4hr TF SELL@ " + AsPrice(OMSell)
    else if Timeframe equals Hour_Nano then "1hr TF SELL@ " + AsPrice(OMSell)
    else if Timeframe equals Thirty_Nano then "30m TF SELL@ " + AsPrice(OMSell)
    else if Timeframe equals Five_Min_Nano then "5m TF SELL@" + AsPrice(OMSell)  
    else if Timeframe equals Fifteen_Nano then "15m TF Sell@" + AsPrice(OMSell)    
    else if Timeframe equals Twenty_Nano then "20m TF Sell@" + AsPrice(OMSell)
        else "ADD SELECTED TIMEFRAME!", OMSell.TakeValueColor());
 
Code:
input TimeFrame = AggregationPeriod.DAY;
AddLabel(yes,
    if TimeFrame < GetAggregationPeriod() then " ERROR "
    else if TimeFrame == AggregationPeriod.DAY then " Day "
    else if TimeFrame == AggregationPeriod.MONTH then " Month "
    else if TimeFrame == AggregationPeriod.WEEK then " Week "
    else " " + TimeFrame / 60000 + " min "
,color.blue);
 
Here is how I've approached having a label indicate the timeframe I have an indicator set for. As you'll see, it is set so that IF I have not set up a specific aggregationperiod, the label will direct me to "Add Selected Timeframe!".

In this example, replace the "OMSell" variable with your parameter of choice.

Links to millisecond values from the online ThinkScript manual:

At this link for the 30m aggregationperiod you will see a reference to the number of milliseconds under the "Description" section

You can choose your timeframe here

Code:
input timeframe = aggregationperiod.hour

# TimeFrame Conversion Definitions / milliseconds

def Day_Nano = 86400000;
def Week_Nano = 604800000;
def Month_Nano = 2592000000;
def Min_Nano = 60000;
def Five_Min_Nano = 300000;
def fourH_Nano = 14400000;
def Hour_Nano = 3600000;
def Thirty_Nano = 1800000;
def Twenty_Nano = 1200000;
def Fifteen_Nano = 900000;

AddLabel(if OMSell then yes else no,
            if Timeframe equals Day_Nano then "Daily TF SELL @ " + Round(OMSell, 2)
    else if Timeframe equals Week_Nano then "Wk TF SELL @ " + AsPrice(OMSell)
    else if Timeframe equals Month_Nano then "Month TF SELL @" + AsPrice(OMSell)
    else if Timeframe equals Min_Nano then "1m TF SELL@ " + AsPrice(OMSell)
    else if Timeframe equals fourH_Nano then "4hr TF SELL@ " + AsPrice(OMSell)
    else if Timeframe equals Hour_Nano then "1hr TF SELL@ " + AsPrice(OMSell)
    else if Timeframe equals Thirty_Nano then "30m TF SELL@ " + AsPrice(OMSell)
    else if Timeframe equals Five_Min_Nano then "5m TF SELL@" + AsPrice(OMSell) 
    else if Timeframe equals Fifteen_Nano then "15m TF Sell@" + AsPrice(OMSell)   
    else if Timeframe equals Twenty_Nano then "20m TF Sell@" + AsPrice(OMSell)
        else "ADD SELECTED TIMEFRAME!", OMSell.TakeValueColor());
Thank you and I see what I'm doing wrong
 

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
370 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