Multi-TimeFrame (MTF) MACD Indicator for ThinkorSwim

@mike101 I have fixed up your code so that the MTF plots properly. Also I have resequenced and cleaned up the code for variables not used as well as utilized more meaningful variable names for any future work you may wish to do. Load this study on a 1 minute chart of AAPL as an example

Code:
# MACD MTF
# Modified by tomsk
# 11.9.2019

declare lower;

input Agg1 = AggregationPeriod.THREE_MIN;
input Agg2 = AggregationPeriod.FIVE_MIN;
input Agg3 = AggregationPeriod.FIFTEEN_MIN;
input Agg4 = AggregationPeriod.Thirty_MIN;

input fastLength = 12;
input slowLength = 26;
input MACDLength = 9;
input averageType = AverageType.EXPONENTIAL;

DefineGlobalColor("UpTrend", Color.GREEN);
DefineGlobalColor("DownTrend", Color.MAGENTA);

# Aggregation 1

def Value1 = MovingAverage(averageType, close(period = Agg1), fastLength) -
             MovingAverage(averageType, close(period = Agg1), slowLength);
def Avg1 = MovingAverage(averageType, Value1, MACDLength);
def Diff1 = Value1 – Avg1;
def MACDAgg1 = if Diff1 > 0 then 1 else if Diff1 < 0 then -1 else 0;
plot MACD1 = if IsNaN(close) then Double.NaN else 1;
MACD1.SetPaintingStrategy(PaintingStrategy.POINTS);
MACD1.SetLineWeight(2);
MACD1.AssignValueColor(if MACDAgg1 == 1 then GlobalColor("UpTrend") else GlobalColor("DownTrend"));

# Aggregation 2

def Value2 = MovingAverage(averageType, close(period = Agg2), fastLength) -
             MovingAverage(averageType, close(period = Agg2), slowLength);
def Avg2 = MovingAverage(averageType, Value2, MACDLength);
def Diff2 = Value2 – Avg2;
def MACDAgg2 = if Diff2 > 0 then 1 else if Diff2 < 0 then -1 else 0;
plot MACD2 = if IsNaN(close) then Double.NaN else 2;
MACD2.SetPaintingStrategy(PaintingStrategy.POINTS);
MACD2.SetLineWeight(2);
MACD2.AssignValueColor(if MACDAgg2 == 1 then GlobalColor("UpTrend") else GlobalColor("DownTrend"));

# Aggregation 3

def Value3 = MovingAverage(averageType, close(period = Agg3), fastLength) -
             MovingAverage(averageType,close(period = Agg3), slowLength);
def Avg3 = MovingAverage(averageType, Value3, MACDLength);
def Diff3 = Value3 – Avg3;
def MACDAgg3 = if Diff3 > 0 then 1 else if Diff3 < 0 then -1 else 0;
plot MACD3 = if IsNaN(close) then Double.NaN else 3;
MACD3.SetPaintingStrategy(PaintingStrategy.POINTS);
MACD3.SetLineWeight(2);
MACD3.AssignValueColor(if MACDAgg3 == 1 then GlobalColor("UpTrend") else GlobalColor("DownTrend"));

# Aggregation 4

def Value4 = MovingAverage(averageType, close(period = Agg4), fastLength) -
             MovingAverage(averageType,close(period = Agg4), slowLength);
def Avg4 = MovingAverage(averageType, Value4, MACDLength);
def Diff4 = Value4 – Avg4;
def MACDAgg4 = if Diff4 > 0 then 1 else if Diff4 < 0 then -1 else 0;
plot MACD4 = if IsNaN(close) then Double.NaN else 4;
MACD4.SetPaintingStrategy(PaintingStrategy.POINTS);
MACD4.SetLineWeight(2);
MACD4.AssignValueColor(if MACDAgg4 == 1 then GlobalColor("UpTrend") else GlobalColor("DownTrend"));
Hello everyone,
Can someone help me in getting this exact code as arrows on upper chart.

I'm basically working on 2 min chart and want to see arrows when macd aligns on all intraday aggregation period mentioned in this code.

Would like to see as below

bullish scenario:
Up green arrow bottom of candel close when MACD aligns or all Aggregation periods( "UpTrend" green dots as per the code)

Bearish scenario:
Down red arrow on top of candel close when MACD does not align on all Aggregation periods
Mentioned in code ("DownTrend" red dots as per code )

Appreciate the help
 
Last edited:
@lindosskier That is not repainting. Because you're using a multiple timeframe indicator, you have to wait for the candle from the highest timeframe to close for confirmation.
Is there way to code aggregation period based of time but not candel ?
example from current time minus 4 hour or hour or 30 min and so on
 
i have no idea if what you listed is what i'm trying to do, curious if you can offer any feed back

I'm looking to run a script as follows

weekly MACD histogram is positive
daily MACD line is above zero

can this be coded in think or swim for a backtest? or is it not possible to have mutliple time frames in this fashion?

I have a scan i run that uses both of those above with 1 other daily indicator, and an hourly indicator. works good for scans so far, but i want to run back test to get more data, rather then daily real time scans, which i'm limited to how many i can do in a day. any guidance would be helpful thanks
eric


Right now i'm running in manually on a day to day basis, and the overall strategy has worked well in last 4 months, but this enviornment is not normal, and i want to know if the strategy will continue to work, do you have any suggestions on where i can test these ideas, any software that can do this? rather than me just running at end of each day and updating my spreadsheet?


would i run into the same Repainting problem, if i wanted to use Daily data and hourly data, because the hourly data might work, but then the daily is repainting across those hour bars


Last follow up question, i know you say it would skew results to make meaningless, but the way i am using it manually is that, i use all 4 signals need to light up to buy, and all 4 need to flip to sell, the occasional flip flop of any one signal is meaningless, because it doesn't change my entry and exits. so there are no real false signals as the repainting is irrelevant to what i'm trying to do. THOUGHTS?
 
Last edited by a moderator:
Last follow up question, i know you say it would skew results to make meaningless, but the way i am using it manually is that, i use all 4 signals need to light up to buy, and all 4 need to flip to sell, the occasional flip flop of any one signal is meaningless, because it doesn't change my entry and exits. so there are no real false signals as the repainting is irrelevant to what i'm trying to do. THOUGHTS?
MTF indicators can not be used for backtesting. The weekly will repaint for 7 days until the week closes.
Therefore, all the interim false signals that are erased cannot be tested. This skews the results to be meaningless.

To my knowledge there is no backtesting service which will provide backtesting for repainting indicators.


If you are not using the weekly data. Yes, you can test MACD indicator on a daily chart. I am sure there are already MACD backtested results somewhere on Google.

Results for all oscillators are approximately the same.
Read more: https://usethinkscript.com/threads/how-to-read-an-oscillator-in-thinkorswim.11497/#post-99858
 
Last edited:
@SleepyZ It appears that the lower study MACD lines are green if they're above 0 and red if they're below 0. Is there a way to color the lower study MACD lines red if they are trending down and green if they are trending up? Thanks.
 
@SleepyZ It appears that the lower study MACD lines are green if they're above 0 and red if they're below 0. Is there a way to color the lower study MACD lines red if they are trending down and green if they are trending up? Thanks.
How do you define trending up/down for the macd?
 
How do you define trending up/down for the macd?
A cross of the MACD down below the signal line and staying below until you get a cross of the MACD above the signal line and then until it crosses again. Basically just a bullish cross would make the lines turn green and stay green until there is a bearish cross then the line would turn red. Hopefully that makes sense.
 
A cross of the MACD down below the signal line and staying below until you get a cross of the MACD above the signal line and then until it crosses again. Basically just a bullish cross would make the lines turn green and stay green until there is a bearish cross then the line would turn red. Hopefully that makes sense.

Thank you. This will color the lines in the clouds based upon the def's up1, up2 and up3 as you defined trend.

Capture.jpg
Ruby:
declare lower;
script macd {
    input agg        = AggregationPeriod.hour;
    input fastLength = 12;
    input slowLength = 26;
    input MACDLength = 9;

    input averageType = AverageType.EXPONENTIAL;

    plot Value = MovingAverage(averageType, close(period = agg), fastLength) - MovingAverage(averageType, close(period = agg), slowLength);
    plot Avg = MovingAverage(averageType, Value, MACDLength);

    plot Diff = Value - Avg;
}

input agg1 = AggregationPeriod.HOUR;
input agg2 = AggregationPeriod.TWO_HOURS;
input agg3 = AggregationPeriod.FOUR_HOURS;
plot diff1 = MACD(agg1).Diff;
plot diff2 = MACD(agg2).Diff;
plot diff3 = MACD(agg3).Diff;

def val1= macd(agg1).value;
def avg1= macd(agg1).avg;
def up1= if isnan(up1[1]) then 0 else if val1 crosses above avg1 and val1<0
        then 1
        else if val1 crosses below avg1 and val1>0
        then 0
        else up1[1];
def val2= macd(agg2).value;
def avg2= macd(agg2).avg;
def up2= if isnan(up2[1]) then 0 else if val2 crosses above avg2 and val2<0
        then 1
        else if val2 crosses below avg2 and val2>0
        then 0
        else up2[1];
def val3= macd(agg3).value;
def avg3= macd(agg3).avg;
def up3= if isnan(up3[1]) then 0 else if val3 crosses above avg3 and val3<0
        then 1
        else if val3 crosses below avg3 and val3>0
        then 0
        else up3[1];
 
diff1.AssignValueColor(if up1==1 then Color.green else Color.RED);
diff2.AssignValueColor(if up2==1 then Color.GREEN else Color.RED);
diff3.AssignValueColor(if up3==1 then Color.GREEN else Color.RED);

def xdiff1 = diff1 >= 0;
def xdiff2 = diff2 >= 0;
def xdiff3 = diff3 >= 0;
def sumdiff = xdiff1 + xdiff2 + xdiff3;

input showcloud = yes;
def cloudcolor  = if sumdiff == 3 then 1 else if cloudcolor[1] == 1 and sumdiff != 0 then 1 else 0;
def ccolor = cloudcolor;
AddCloud(if showcloud and ccolor == 1 then Double.POSITIVE_INFINITY else Double.NaN, Double.NEGATIVE_INFINITY, Color.LIGHT_GREEN, Color.LIGHT_GREEN);
AddCloud(if showcloud and ccolor == 0 then Double.POSITIVE_INFINITY else Double.NaN, Double.NEGATIVE_INFINITY, Color.LIGHT_RED, color2 = Color.LIGHT_RED);
 
Thank you. This will color the lines in the clouds based upon the def's up1, up2 and up3 as you defined trend.
Thanks for this. After comparing the two, I guess what you already had plotted was what I was trying to achieve but I didn't realize it until I compared the two.
 
@SleepyZ I'm also trying to get arrows to print on the upper price chart for MACD crosses on multiple time frames. When I run the chart on 5min the code below works to print the correct arrows on bullish and bearish MACD crosses. The higher aggregation (15m aggregation in the case of this code) will print arrows, however, a 15m aggregation on a 5m chart will print three arrows for a 15m MACD cross. I understand why it is doing it, because there are 3-5min bars within a 15m bar, but my question is....is there a way for the 15m cross on a 5m chart to only print a single arrow instead of three? The chart gets a little cluttered with arrows. The blue and red arrows are 5m, the yellow and gray arrows are 15m. Thanks!

Ruby:
input agg1 = aggregationPeriod.FIVE_MIN;
input agg2 = aggregationPeriod.FIFTEEN_MIN;

input fastLength = 12;
input slowLength = 26;
input macdLength = 9;
input macdAverageType = AverageType.EXPONENTIAL;

#Five Minute
def value1 = MovingAverage(macdAverageType, close(period = agg1), fastLength) - MovingAverage(macdAverageType, close(period = agg1), slowLength);

def average1 = MovingAverage(macdAverageType, value1, macdLength);

plot crossAbove = value1[1] < average1[1] and value1 > average1;
crossAbove.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);

plot crossBelow = value1[1] > average1[1] and value1 < average1;
crossBelow.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);

#Fifteen Minute
def value2 = MovingAverage(macdAverageType, close(period = agg2), fastLength) - MovingAverage(macdAverageType, close(period = agg2), slowLength);

def average2 = MovingAverage(macdAverageType, value2, macdLength);

plot crossAbove2 = value2[1] < average2[1] and value2 > average2;
crossAbove2.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);

plot crossBelow2 = value2[1] > average2[1] and value2 < average2;
crossBelow2.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);

lDqQbBE.png
 
@SleepyZ I'm also trying to get arrows to print on the upper price chart for MACD crosses on multiple time frames. When I run the chart on 5min the code below works to print the correct arrows on bullish and bearish MACD crosses. The higher aggregation (15m aggregation in the case of this code) will print arrows, however, a 15m aggregation on a 5m chart will print three arrows for a 15m MACD cross. I understand why it is doing it, because there are 3-5min bars within a 15m bar, but my question is....is there a way for the 15m cross on a 5m chart to only print a single arrow instead of three? The chart gets a little cluttered with arrows. The blue and red arrows are 5m, the yellow and gray arrows are 15m. Thanks!

Ruby:
input agg1 = aggregationPeriod.FIVE_MIN;
input agg2 = aggregationPeriod.FIFTEEN_MIN;

input fastLength = 12;
input slowLength = 26;
input macdLength = 9;
input macdAverageType = AverageType.EXPONENTIAL;

#Five Minute
def value1 = MovingAverage(macdAverageType, close(period = agg1), fastLength) - MovingAverage(macdAverageType, close(period = agg1), slowLength);

def average1 = MovingAverage(macdAverageType, value1, macdLength);

plot crossAbove = value1[1] < average1[1] and value1 > average1;
crossAbove.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);

plot crossBelow = value1[1] > average1[1] and value1 < average1;
crossBelow.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);

#Fifteen Minute
def value2 = MovingAverage(macdAverageType, close(period = agg2), fastLength) - MovingAverage(macdAverageType, close(period = agg2), slowLength);

def average2 = MovingAverage(macdAverageType, value2, macdLength);

plot crossAbove2 = value2[1] < average2[1] and value2 > average2;
crossAbove2.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);

plot crossBelow2 = value2[1] > average2[1] and value2 < average2;
crossBelow2.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);

lDqQbBE.png

This should do that. In the image below is the revised code with just the first arrow. In the lower panel is the code you posted with the multiple arrows from the higher timeframe.

Capture.jpg
Ruby:
input agg1 = AggregationPeriod.FIVE_MIN;
input agg2 = AggregationPeriod.Five_MIN;

input fastLength = 12;
input slowLength = 26;
input macdLength = 9;
input macdAverageType = AverageType.EXPONENTIAL;

#Five Minute
def value1 = MovingAverage(macdAverageType, close(period = agg1), fastLength) - MovingAverage(macdAverageType, close(period = agg1), slowLength);

def average1 = MovingAverage(macdAverageType, value1, macdLength);

def above5 = if (value1[1] < average1[1] and value1 > average1) then barnumber()+1 else above5[1];
plot crossAbove =above5!=above5[1];
crossAbove.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);

def below5 = if (value1[1] > average1[1] and value1 < average1) then barnumber()+1 else below5[1];
plot crossBelow = below5[1]!=below5;
crossBelow.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);

#Fifteen Minute
def value2 = MovingAverage(macdAverageType, close(period = agg2), fastLength) - MovingAverage(macdAverageType, close(period = agg2), slowLength);

def average2 = MovingAverage(macdAverageType, value2, macdLength);

def above15 = if (value2[1] < average2[1] and value2 > average2) then barnumber()+1 else above15[1];
plot crossAbove2 =above15!=above15[1];
crossAbove2.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);

def below15 = if (value2[1] > average2[1] and value2 < average2) then barnumber()+1 else below15[1];
plot crossBelow2 = below15[1]!=below15;
crossBelow2.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
 
Thanks for this, works great. I am trying to change from Boolean_Arrow_Up to instead plotting a dot at the bottom of the low of the candle, and changing Boolean_Arrow_Down to plotting a dot at the top of the high of the candle. I found an example, but it doesn't seem to be working correctly. I think I'm missing some sort of "if" or "and" statement within the "plot" lines, which I have tried, but can't seem to get the configuration right. Any thoughts?


Ruby:
input agg1 = AggregationPeriod.FIVE_MIN;
input agg2 = AggregationPeriod.Five_MIN;

input fastLength = 12;
input slowLength = 26;
input macdLength = 9;
input macdAverageType = AverageType.EXPONENTIAL;

#Five Minute
def value1 = MovingAverage(macdAverageType, close(period = agg1), fastLength) - MovingAverage(macdAverageType, close(period = agg1), slowLength);

def average1 = MovingAverage(macdAverageType, value1, macdLength);

def above5 = if (value1[1] < average1[1] and value1 > average1) then barnumber()+1 else above5[1];
plot crossAbove =above5!=above5[1], low, double.nan;
crossAbove.SetStyle(Curve.POINTS);
crossAbove.SetDefaultColor(Color.Dark_GREEN);

def below5 = if (value1[1] > average1[1] and value1 < average1) then barnumber()+1 else below5[1];
plot crossBelow = below5[1]!=below5, high, double.nan;
crossAbove.SetStyle(Curve.POINTS);
crossAbove.SetDefaultColor(Color.Dark_RED);
 
Thanks for this, works great. I am trying to change from Boolean_Arrow_Up to instead plotting a dot at the bottom of the low of the candle, and changing Boolean_Arrow_Down to plotting a dot at the top of the high of the candle. I found an example, but it doesn't seem to be working correctly. I think I'm missing some sort of "if" or "and" statement within the "plot" lines, which I have tried, but can't seem to get the configuration right. Any thoughts?


Ruby:
input agg1 = AggregationPeriod.FIVE_MIN;
input agg2 = AggregationPeriod.Five_MIN;

input fastLength = 12;
input slowLength = 26;
input macdLength = 9;
input macdAverageType = AverageType.EXPONENTIAL;

#Five Minute
def value1 = MovingAverage(macdAverageType, close(period = agg1), fastLength) - MovingAverage(macdAverageType, close(period = agg1), slowLength);

def average1 = MovingAverage(macdAverageType, value1, macdLength);

def above5 = if (value1[1] < average1[1] and value1 > average1) then barnumber()+1 else above5[1];
plot crossAbove =above5!=above5[1], low, double.nan;
crossAbove.SetStyle(Curve.POINTS);
crossAbove.SetDefaultColor(Color.Dark_GREEN);

def below5 = if (value1[1] > average1[1] and value1 < average1) then barnumber()+1 else below5[1];
plot crossBelow = below5[1]!=below5, high, double.nan;
crossAbove.SetStyle(Curve.POINTS);
crossAbove.SetDefaultColor(Color.Dark_RED);

Sure, the fixes are in bold. I displaced and enlarged the points so you can better see them.

Rich (BB code):
input agg1 = AggregationPeriod.FIVE_MIN;
input agg2 = AggregationPeriod.FIVE_MIN;

input fastLength = 12;
input slowLength = 26;
input macdLength = 9;
input macdAverageType = AverageType.EXPONENTIAL;

#Five Minute
def value1 = MovingAverage(macdAverageType, close(period = agg1), fastLength) - MovingAverage(macdAverageType, close(period = agg1), slowLength);

def average1 = MovingAverage(macdAverageType, value1, macdLength);

def above5 = if (value1[1] < average1[1] and value1 > average1) then BarNumber() + 1 else above5[1];
plot crossAbove = If(above5 != above5[1], low * .995, Double.NaN);
crossabove.setlineWeight(5);
crossAbove.SetStyle(Curve.POINTS);
crossAbove.SetDefaultColor(Color.DARK_GREEN);

def below5 = if (value1[1] > average1[1] and value1 < average1) then BarNumber() + 1 else below5[1];
plot crossBelow = If(below5[1] != below5, high * 1.005, Double.NaN);
crossbelow.setlineWeight(5);
crossBelow.SetStyle(Curve.POINTS);
crossBelow.SetDefaultColor(Color.DARK_RED);
 
Hi all,

I've coded a premarket MACD indicator that takes four timeframes into account. The indicator gets the MACD value for each of the specified timeframes, adds them together, and divides that result by four to deliver a final average value.

Here's my code:
Code:
script My_MACD {
    input aggPeriod = AggregationPeriod.MIN;
    def fastLength = 12;
    def slowLength = 26;
    def MACDLength = 9;
    input averageType = AverageType.EXPONENTIAL;

    def oneC = close(period = aggPeriod);

    plot Value = MovingAverage(averageType, oneC, fastLength) - MovingAverage(averageType, oneC, slowLength);
    plot Avg   = MovingAverage(averageType, Value, MACDLength);
    plot Diff  = Value - Avg;
} # end script

declare lower;

input timeframe1 = AggregationPeriod.THIRTY_MIN;
input timeframe2 = AggregationPeriod.HOUR;
input timeframe3 = AggregationPeriod.TWO_HOURS;
input timeframe4 = AggregationPeriod.FOUR_HOURS;
input fastLength = 12;
input slowLength = 26;
input MACDLength = 5;

def beforeStart = GetTime() < RegularTradingStart(GetYYYYMMDD());

# MACD variables for each timeframe
def Val30 = if beforeStart then My_MACD(timeframe1).Value else Val30[1];
def Val1H = if beforeStart then My_MACD(timeframe2).Value else Val1H[1];
def Val2H = if beforeStart then My_MACD(timeframe3).Value else Val2H[1];
def Val4H = if beforeStart then My_MACD(timeframe4).Value else Val4H[1];

def Data = (Val30 + Val1H + Val2H + Val4H) / 4;
plot Value = Data;
plot ZeroLine = 0;

The indicator certainly works on a chart. I'm just looking to see if the computed average crosses above or below 0 in premarket. Sometimes this can indicate a pretty nice move in either direction. Now I'm wondering if I get this to work in a scanner. I've tried the following code with no success:
Code:
def MACD    = MACD().Value;
def beforeStart = GetTime() < RegularTradingStart(GetYYYYMMDD());
def Active1 = SecondsFromTime(0900) >= 0 and SecondsTillTime(0929) >= 0; # last 30 minutes
def Val30   = if beforeStart && Active1 then MACD().Value else Val30[1];

def Active2 = SecondsFromTime(0830) >= 0 and SecondsTillTime(0929) >= 0; # last 1 hour
def Val1H   = if beforeStart && Active2 then MACD().Value else Val1H[1];

def Active3 = SecondsFromTime(0730) >= 0 and SecondsTillTime(0929) >= 0; # last 2 hours3[1];
def Val2H   = if beforeStart && Active3 then MACD().Value else Val2H[1];

def Active4 = SecondsFromTime(0530) >= 0 and SecondsTillTime(0929) >= 0; # last 4 hours
def Val4H   = if beforeStart && Active4 then MACD().Value else Val4H[1];


# now get the average of all values - DOES NOT WORK as each value is the same ;(
def Avg = Val30 + Val1H + Val2H + Val4H;

Is this even possible? If so, can anyone help me?

Thanks in advance.
 
@MerryDay , This may already exist, however, I have searched and cannot find a study that will allow me to set the TF of the MACD w/ histogram to 1m while it is being used on other TFs. If this exists, please provide a link. If not, Is this possible to code?
 
Looking for help with creating an indicator that plots an arrow below/above the price when the macd crosses above/below the zero line. So not every time the macd goes positive/negative, just when it crosses the zero line.

If it can also show macd crosses above/below zero for three higher timeframes, that would be great, e.g. when looking at the 30M, seeing arrows from the 1hr, 2hr, & 4hr crosses. The ability to select from a dropdown which four timeframes to plot would be awesome.

Lastly, as a bonus, adding one additional dropdown where I can select a timeframe, and it will plot a chart bubble for that timeframes macd cross above/below zero, so that it will stand out from the other arrows. Lmk if clarification is needed – thanks in advance.
 

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