Q-Trend indicator for ThinkOrSwim

samer800

Moderator - Expert
VIP
Lifetime
iRzbANn.png

Author Message:
Q-Trend
is an multipurpose indicatorm that can be used for swing- and trend-trading equally on any timeframe (non-volatile markets are better for this thing).

Settings:
  • Trend period - used to calculate trend line in the special moments(will explain below);
  • ATR Multiplier - changes sensitivity. The higher the multiplier = the more sensitive it is.
  • Also option to smooth source data (helps get cleaner signals, as always).

How to use?
Signals are given on the chart. Also ou can use trend line as S/R line.

The idea behind:

Terms:
SRС = Source
TL = trend line ;
MP = ATR multiplier;
ATR = ATR :)
TL = (highest of source P-bars back + lowest of source P-bars back) / 2
Epsilon = MP * ATR
I was thinking for a week about combining volatility and relation between highest and lowest price point. That why I called indicator Q-Trend = Quantitative Trend, as I was trying to think about price in a mathematical way.

Okay, time to go philosophical:
1) TL is shows good price trend, but as it is slow enough and not enough informative, we need add additional conditions to produce signals.
2) Okay, so what can we add as conditions? We need to take volatility into account, as it is crucial in the moments of market uncertainty. So let's use ATR ( Average True Range ) somehow. My idea is that if SRC breaks TL + ATR, then it means that there will be upmove and we update our TL. Analogically for SRC breaking TL - ATR (breaks are crosses of TL +- ATR lines).
Conclusion:
  • if SRC breaks TL + ATR, it is a BUY signal and update of trend line ;
  • if SRC breaks TL - ATR, it is a SELL signal and update of trend line ;

CODE:
CSS:
#/ This source code is subject to the terms of the Mozilla Public License 2.0
#// © tarasenko_
#indicator("Q-Trend", overlay = 1)
# Converted and by Sam4Cok@Samer800 - 12/2022
#// Inputs
input showTrendLine = yes;    # "Show trend line?"
input color_bars = yes;        # "Color bars?"
input source = close;    # "Source"
input BuySelBubble = no;
input StrongBuySelBubble = yes;
input TrendPeriod = 50;  # "Trend period to changes STRONG signals' sensitivity"
input atrLength = 14;
input mult = 1.0;        # "ATR Multiplier"
input signalMode = {default "Type A", "Type B"};
input useWicks   = no;
input confimredCandle  = no;
input smoothing = no;    # "Smooth source with EMA?"
input smoothingType = AverageType.EXPONENTIAL;
input smoothPeriod = 3;       # "EMA Smoother period"


def na = Double.NaN;
def h = high; def l = low; def c = close; def o = open;
def mode   = if signalMode == signalMode."Type B" then 1 else 0;
def confCl = if !confimredCandle then source else source[1];
def src    = if smoothing then MovingAverage(smoothingType, confCl, smoothPeriod) else confCl;
def confHi = if !confimredCandle then h else h[1];
def confLo = if !confimredCandle then l else l[1];
def srcOp  = if !confimredCandle then o else o[1];
def srcHi  = if useWicks then confHi else src;
def srcLo  = if useWicks then confLo  else src;

#// Calculations
def hh = Highest(srcHi, TrendPeriod);  # // Highest of src p-bars back;
def ll = Lowest(srcLo, TrendPeriod);   # // Lowest of src p-bars back.
def d = hh - ll;
def trend;
def m1 = (hh + ll) / 2;
def m = if isNaN(trend[1]) or trend[1]==0 then m1 else trend[1];

def nATR = ATR(LENGTH = atrLength)[1];
def epsilon = mult * nATR;
def bandUp = m + epsilon;
def bandDn = m - epsilon;

def crossUp = if src > bandUp then crossUp[1] + 1 else 0;
def crossDn = if src < bandDn then crossDn[1] + 1 else 0;
def cross = (src>bandUp and src[1]<=bandUp[1]) or (src<bandDn and src[1]>=bandDn[1]);

def change_up   = (if(mode,cross,0)) or crossUp > 0;
def change_down = (if(mode,cross,0)) or crossDn > 0;
def sb = srcOp < ll + d / 8 and srcOp >= ll;
def ss = srcOp > hh - d / 8 and srcOp <= hh;
def strong_buy  = sb or sb[1] or sb[2] or sb[3] or sb[4];
def strong_sell = ss or ss[1] or ss[2] or ss[3] or ss[4];

trend = if (change_up or change_down) and  m != trend[1] then m else
        if change_up then bandUp else
        if change_down then bandDn else trend[1];

def ls = if change_up then 1 else if change_down then -1 else ls[1];
def color = if ls > 0 then 1 else 0;

#// Plottings
plot trendLine = if showTrendLine then trend else na;    # "trend line"
trendLine.AssignValueColor(if color then createColor(33,150,243) else CreateColor(255,152,0));
trendLine.SetLineWeight(2);

#-- Bubbles
AddChartBubble(BuySelBubble and change_up and ls[1] != 1 and !strong_buy, l, "Buy", Color.DARK_GREEN, no);
AddChartBubble(BuySelBubble and change_down and ls[1] != -1 and !strong_sell, h, "Sell", Color.DARK_RED, yes);

AddChartBubble(StrongBuySelBubble and change_up and ls[1] !=1 and strong_buy, l, "Strong", Color.GREEN, no);
AddChartBubble(StrongBuySelBubble and change_down and ls[1] != -1 and strong_sell, h, "Strong", color.RED, yes);

#-- Bar Color.
AssignPriceColor(if !color_bars then color.CURRENT else
                 if color then if source>trend then Color.GREEN else Color.DARK_GREEN else
                 if source<trend then Color.RED else Color.DARK_RED);

#-- END Code
 
Last edited by a moderator:
iRzbANn.png

Author Message:
Q-Trend
is an multipurpose indicatorm that can be used for swing- and trend-trading equally on any timeframe (non-volatile markets are better for this thing).

Settings:
  • Trend period - used to calculate trend line in the special moments(will explain below);
  • ATR Multiplier - changes sensitivity. The higher the multiplier = the more sensitive it is.
  • Also option to smooth source data (helps get cleaner signals, as always).

How to use?
Signals are given on the chart. Also ou can use trend line as S/R line.

The idea behind:

Terms:
SRС = Source
TL = trend line ;
MP = ATR multiplier;
ATR = ATR :)
TL = (highest of source P-bars back + lowest of source P-bars back) / 2
Epsilon = MP * ATR
I was thinking for a week about combining volatility and relation between highest and lowest price point. That why I called indicator Q-Trend = Quantitative Trend, as I was trying to think about price in a mathematical way.

Okay, time to go philosophical:
1) TL is shows good price trend, but as it is slow enough and not enough informative, we need add additional conditions to produce signals.
2) Okay, so what can we add as conditions? We need to take volatility into account, as it is crucial in the moments of market uncertainty. So let's use ATR ( Average True Range ) somehow. My idea is that if SRC breaks TL + ATR, then it means that there will be upmove and we update our TL. Analogically for SRC breaking TL - ATR (breaks are crosses of TL +- ATR lines).
Conclusion:
  • if SRC breaks TL + ATR, it is a BUY signal and update of trend line ;
  • if SRC breaks TL - ATR, it is a SELL signal and update of trend line ;

CODE:
CSS:
#/ This source code is subject to the terms of the Mozilla Public License 2.0
#// © tarasenko_
#indicator("Q-Trend", overlay = 1)
# Converted and by Sam4Cok@Samer800 - 12/2022
#// Inputs
input showTrendLine = yes;    # "Show trend line?"
input color_bars = yes;        # "Color bars?"
input source = close;    # "Source"
input BuySelBubble = no;
input StrongBuySelBubble = yes;
input TrendPeriod = 50;  # "Trend period to changes STRONG signals' sensitivity"
input atrLength = 14;
input mult = 1.0;        # "ATR Multiplier"
input signalMode = {default "Type A", "Type B"};
input useWicks   = no;
input confimredCandle  = no;
input smoothing = no;    # "Smooth source with EMA?"
input smoothingType = AverageType.EXPONENTIAL;
input smoothPeriod = 3;       # "EMA Smoother period"


def na = Double.NaN;
def h = high; def l = low; def c = close; def o = open;
def mode   = if signalMode == signalMode."Type B" then 1 else 0;
def confCl = if !confimredCandle then source else source[1];
def src    = if smoothing then MovingAverage(smoothingType, confCl, smoothPeriod) else confCl;
def confHi = if !confimredCandle then h else h[1];
def confLo = if !confimredCandle then l else l[1];
def srcOp  = if !confimredCandle then o else o[1];
def srcHi  = if useWicks then confHi else src;
def srcLo  = if useWicks then confLo  else src;

#// Calculations
def hh = Highest(srcHi, TrendPeriod);  # // Highest of src p-bars back;
def ll = Lowest(srcLo, TrendPeriod);   # // Lowest of src p-bars back.
def d = hh - ll;
def trend;
def m1 = (hh + ll) / 2;
def m = if isNaN(trend[1]) or trend[1]==0 then m1 else trend[1];

def nATR = ATR(LENGTH = atrLength)[1];
def epsilon = mult * nATR;
def bandUp = m + epsilon;
def bandDn = m - epsilon;

def crossUp = if src > bandUp then crossUp[1] + 1 else 0;
def crossDn = if src < bandDn then crossDn[1] + 1 else 0;
def cross = (src>bandUp and src[1]<=bandUp[1]) or (src<bandDn and src[1]>=bandDn[1]);

def change_up   = (if(mode,cross,0)) or crossUp > 0;
def change_down = (if(mode,cross,0)) or crossDn > 0;
def sb = srcOp < ll + d / 8 and srcOp >= ll;
def ss = srcOp > hh - d / 8 and srcOp <= hh;
def strong_buy  = sb or sb[1] or sb[2] or sb[3] or sb[4];
def strong_sell = ss or ss[1] or ss[2] or ss[3] or ss[4];

trend = if (change_up or change_down) and  m != trend[1] then m else
        if change_up then bandUp else
        if change_down then bandDn else trend[1];

def ls = if change_up then 1 else if change_down then -1 else ls[1];
def color = if ls > 0 then 1 else 0;

#// Plottings
plot trendLine = if showTrendLine then trend else na;    # "trend line"
trendLine.AssignValueColor(if color then createColor(33,150,243) else CreateColor(255,152,0));
trendLine.SetLineWeight(2);

#-- Bubbles
AddChartBubble(BuySelBubble and change_up and ls[1] != 1 and !strong_buy, l, "Buy", Color.DARK_GREEN, no);
AddChartBubble(BuySelBubble and change_down and ls[1] != -1 and !strong_sell, h, "Sell", Color.DARK_RED, yes);

AddChartBubble(StrongBuySelBubble and change_up and ls[1] !=1 and strong_buy, l, "Strong", Color.GREEN, no);
AddChartBubble(StrongBuySelBubble and change_down and ls[1] != -1 and strong_sell, h, "Strong", color.RED, yes);

#-- Bar Color.
AssignPriceColor(if !color_bars then color.CURRENT else
                 if color then if source>trend then Color.GREEN else Color.DARK_GREEN else
                 if source<trend then Color.RED else Color.DARK_RED);

#-- END Code
@samer800 great job!! a favor can you add the scan? thank you in advance! keep up the great job
 
iRzbANn.png

Author Message:
Q-Trend
is an multipurpose indicatorm that can be used for swing- and trend-trading equally on any timeframe (non-volatile markets are better for this thing).

Settings:
  • Trend period - used to calculate trend line in the special moments(will explain below);
  • ATR Multiplier - changes sensitivity. The higher the multiplier = the more sensitive it is.
  • Also option to smooth source data (helps get cleaner signals, as always).

How to use?
Signals are given on the chart. Also ou can use trend line as S/R line.

The idea behind:

Terms:
SRС = Source
TL = trend line ;
MP = ATR multiplier;
ATR = ATR :)
TL = (highest of source P-bars back + lowest of source P-bars back) / 2
Epsilon = MP * ATR
I was thinking for a week about combining volatility and relation between highest and lowest price point. That why I called indicator Q-Trend = Quantitative Trend, as I was trying to think about price in a mathematical way.

Okay, time to go philosophical:
1) TL is shows good price trend, but as it is slow enough and not enough informative, we need add additional conditions to produce signals.
2) Okay, so what can we add as conditions? We need to take volatility into account, as it is crucial in the moments of market uncertainty. So let's use ATR ( Average True Range ) somehow. My idea is that if SRC breaks TL + ATR, then it means that there will be upmove and we update our TL. Analogically for SRC breaking TL - ATR (breaks are crosses of TL +- ATR lines).
Conclusion:
  • if SRC breaks TL + ATR, it is a BUY signal and update of trend line ;
  • if SRC breaks TL - ATR, it is a SELL signal and update of trend line ;

CODE:
CSS:
#/ This source code is subject to the terms of the Mozilla Public License 2.0
#// © tarasenko_
#indicator("Q-Trend", overlay = 1)
# Converted and by Sam4Cok@Samer800 - 12/2022
#// Inputs
input showTrendLine = yes;    # "Show trend line?"
input color_bars = yes;        # "Color bars?"
input source = close;    # "Source"
input BuySelBubble = no;
input StrongBuySelBubble = yes;
input TrendPeriod = 50;  # "Trend period to changes STRONG signals' sensitivity"
input atrLength = 14;
input mult = 1.0;        # "ATR Multiplier"
input signalMode = {default "Type A", "Type B"};
input useWicks   = no;
input confimredCandle  = no;
input smoothing = no;    # "Smooth source with EMA?"
input smoothingType = AverageType.EXPONENTIAL;
input smoothPeriod = 3;       # "EMA Smoother period"


def na = Double.NaN;
def h = high; def l = low; def c = close; def o = open;
def mode   = if signalMode == signalMode."Type B" then 1 else 0;
def confCl = if !confimredCandle then source else source[1];
def src    = if smoothing then MovingAverage(smoothingType, confCl, smoothPeriod) else confCl;
def confHi = if !confimredCandle then h else h[1];
def confLo = if !confimredCandle then l else l[1];
def srcOp  = if !confimredCandle then o else o[1];
def srcHi  = if useWicks then confHi else src;
def srcLo  = if useWicks then confLo  else src;

#// Calculations
def hh = Highest(srcHi, TrendPeriod);  # // Highest of src p-bars back;
def ll = Lowest(srcLo, TrendPeriod);   # // Lowest of src p-bars back.
def d = hh - ll;
def trend;
def m1 = (hh + ll) / 2;
def m = if isNaN(trend[1]) or trend[1]==0 then m1 else trend[1];

def nATR = ATR(LENGTH = atrLength)[1];
def epsilon = mult * nATR;
def bandUp = m + epsilon;
def bandDn = m - epsilon;

def crossUp = if src > bandUp then crossUp[1] + 1 else 0;
def crossDn = if src < bandDn then crossDn[1] + 1 else 0;
def cross = (src>bandUp and src[1]<=bandUp[1]) or (src<bandDn and src[1]>=bandDn[1]);

def change_up   = (if(mode,cross,0)) or crossUp > 0;
def change_down = (if(mode,cross,0)) or crossDn > 0;
def sb = srcOp < ll + d / 8 and srcOp >= ll;
def ss = srcOp > hh - d / 8 and srcOp <= hh;
def strong_buy  = sb or sb[1] or sb[2] or sb[3] or sb[4];
def strong_sell = ss or ss[1] or ss[2] or ss[3] or ss[4];

trend = if (change_up or change_down) and  m != trend[1] then m else
        if change_up then bandUp else
        if change_down then bandDn else trend[1];

def ls = if change_up then 1 else if change_down then -1 else ls[1];
def color = if ls > 0 then 1 else 0;

#// Plottings
plot trendLine = if showTrendLine then trend else na;    # "trend line"
trendLine.AssignValueColor(if color then createColor(33,150,243) else CreateColor(255,152,0));
trendLine.SetLineWeight(2);

#-- Bubbles
AddChartBubble(BuySelBubble and change_up and ls[1] != 1 and !strong_buy, l, "Buy", Color.DARK_GREEN, no);
AddChartBubble(BuySelBubble and change_down and ls[1] != -1 and !strong_sell, h, "Sell", Color.DARK_RED, yes);

AddChartBubble(StrongBuySelBubble and change_up and ls[1] !=1 and strong_buy, l, "Strong", Color.GREEN, no);
AddChartBubble(StrongBuySelBubble and change_down and ls[1] != -1 and strong_sell, h, "Strong", color.RED, yes);

#-- Bar Color.
AssignPriceColor(if !color_bars then color.CURRENT else
                 if color then if source>trend then Color.GREEN else Color.DARK_GREEN else
                 if source<trend then Color.RED else Color.DARK_RED);

#-- END Code

Great job. Thank you for posting!
 
iRzbANn.png

Author Message:
Q-Trend
is an multipurpose indicatorm that can be used for swing- and trend-trading equally on any timeframe (non-volatile markets are better for this thing).

Settings:
  • Trend period - used to calculate trend line in the special moments(will explain below);
  • ATR Multiplier - changes sensitivity. The higher the multiplier = the more sensitive it is.
  • Also option to smooth source data (helps get cleaner signals, as always).

How to use?
Signals are given on the chart. Also ou can use trend line as S/R line.

The idea behind:

Terms:
SRС = Source
TL = trend line ;
MP = ATR multiplier;
ATR = ATR :)
TL = (highest of source P-bars back + lowest of source P-bars back) / 2
Epsilon = MP * ATR
I was thinking for a week about combining volatility and relation between highest and lowest price point. That why I called indicator Q-Trend = Quantitative Trend, as I was trying to think about price in a mathematical way.

Okay, time to go philosophical:
1) TL is shows good price trend, but as it is slow enough and not enough informative, we need add additional conditions to produce signals.
2) Okay, so what can we add as conditions? We need to take volatility into account, as it is crucial in the moments of market uncertainty. So let's use ATR ( Average True Range ) somehow. My idea is that if SRC breaks TL + ATR, then it means that there will be upmove and we update our TL. Analogically for SRC breaking TL - ATR (breaks are crosses of TL +- ATR lines).
Conclusion:
  • if SRC breaks TL + ATR, it is a BUY signal and update of trend line ;
  • if SRC breaks TL - ATR, it is a SELL signal and update of trend line ;

CODE:
CSS:
#/ This source code is subject to the terms of the Mozilla Public License 2.0
#// © tarasenko_
#indicator("Q-Trend", overlay = 1)
# Converted and by Sam4Cok@Samer800 - 12/2022
#// Inputs
input showTrendLine = yes;    # "Show trend line?"
input color_bars = yes;        # "Color bars?"
input source = close;    # "Source"
input BuySelBubble = no;
input StrongBuySelBubble = yes;
input TrendPeriod = 50;  # "Trend period to changes STRONG signals' sensitivity"
input atrLength = 14;
input mult = 1.0;        # "ATR Multiplier"
input signalMode = {default "Type A", "Type B"};
input useWicks   = no;
input confimredCandle  = no;
input smoothing = no;    # "Smooth source with EMA?"
input smoothingType = AverageType.EXPONENTIAL;
input smoothPeriod = 3;       # "EMA Smoother period"


def na = Double.NaN;
def h = high; def l = low; def c = close; def o = open;
def mode   = if signalMode == signalMode."Type B" then 1 else 0;
def confCl = if !confimredCandle then source else source[1];
def src    = if smoothing then MovingAverage(smoothingType, confCl, smoothPeriod) else confCl;
def confHi = if !confimredCandle then h else h[1];
def confLo = if !confimredCandle then l else l[1];
def srcOp  = if !confimredCandle then o else o[1];
def srcHi  = if useWicks then confHi else src;
def srcLo  = if useWicks then confLo  else src;

#// Calculations
def hh = Highest(srcHi, TrendPeriod);  # // Highest of src p-bars back;
def ll = Lowest(srcLo, TrendPeriod);   # // Lowest of src p-bars back.
def d = hh - ll;
def trend;
def m1 = (hh + ll) / 2;
def m = if isNaN(trend[1]) or trend[1]==0 then m1 else trend[1];

def nATR = ATR(LENGTH = atrLength)[1];
def epsilon = mult * nATR;
def bandUp = m + epsilon;
def bandDn = m - epsilon;

def crossUp = if src > bandUp then crossUp[1] + 1 else 0;
def crossDn = if src < bandDn then crossDn[1] + 1 else 0;
def cross = (src>bandUp and src[1]<=bandUp[1]) or (src<bandDn and src[1]>=bandDn[1]);

def change_up   = (if(mode,cross,0)) or crossUp > 0;
def change_down = (if(mode,cross,0)) or crossDn > 0;
def sb = srcOp < ll + d / 8 and srcOp >= ll;
def ss = srcOp > hh - d / 8 and srcOp <= hh;
def strong_buy  = sb or sb[1] or sb[2] or sb[3] or sb[4];
def strong_sell = ss or ss[1] or ss[2] or ss[3] or ss[4];

trend = if (change_up or change_down) and  m != trend[1] then m else
        if change_up then bandUp else
        if change_down then bandDn else trend[1];

def ls = if change_up then 1 else if change_down then -1 else ls[1];
def color = if ls > 0 then 1 else 0;

#// Plottings
plot trendLine = if showTrendLine then trend else na;    # "trend line"
trendLine.AssignValueColor(if color then createColor(33,150,243) else CreateColor(255,152,0));
trendLine.SetLineWeight(2);

#-- Bubbles
AddChartBubble(BuySelBubble and change_up and ls[1] != 1 and !strong_buy, l, "Buy", Color.DARK_GREEN, no);
AddChartBubble(BuySelBubble and change_down and ls[1] != -1 and !strong_sell, h, "Sell", Color.DARK_RED, yes);

AddChartBubble(StrongBuySelBubble and change_up and ls[1] !=1 and strong_buy, l, "Strong", Color.GREEN, no);
AddChartBubble(StrongBuySelBubble and change_down and ls[1] != -1 and strong_sell, h, "Strong", color.RED, yes);

#-- Bar Color.
AssignPriceColor(if !color_bars then color.CURRENT else
                 if color then if source>trend then Color.GREEN else Color.DARK_GREEN else
                 if source<trend then Color.RED else Color.DARK_RED);

#-- END Code
Can you make script version of this indicator, please? My idea is that I want to plot combined value of Qtrend for several stocks, therefore. I made an attempt, but it won't plot because of the variables used in the script I guess
Code:
script S {
    def mult = 1.0;        # "ATR Multiplier"
    def atrLength = 14;
    def TrendPeriod = 50;  # "Trend period to changes STRONG signals' sensitivity"
    input h = high;
    input l = low;
    input c = close;
    input o = open;

    def hh = Highest(c, TrendPeriod);  # // Highest of src p-bars back;
    def ll = Lowest(c, TrendPeriod);   # // Lowest of src p-bars back.
    def d = hh - ll;
    def trend;
    def m1 = (hh + ll) / 2;
    def m = if IsNaN(trend[1]) or trend[1] == 0 then m1 else trend[1];

    def nATR = MovingAverage(averageType.wilders, TrueRange(h, c, l), atrLength)[1];
    def epsilon = mult * nATR;
    def bandUp = m + epsilon;
    def bandDn = m - epsilon;

    def crossUp = if c > bandUp then crossUp[1] + 1 else 0;
    def crossDn = if c < bandDn then crossDn[1] + 1 else 0;
    def cross = (c > bandUp and c[1] <= bandUp[1]) or (c < bandDn and c[1] >= bandDn[1]);

    def change_up   = crossUp > 0;
    def change_down = crossDn > 0;
    def sb = o < ll + d / 8 and o >= ll;
    def ss = o > hh - d / 8 and o <= hh;
    def strong_buy  = sb or sb[1] or sb[2] or sb[3] or sb[4];
    def strong_sell = ss or ss[1] or ss[2] or ss[3] or ss[4];

    trend = if (change_up or change_down) and  m != trend[1] then m else
        if change_up then bandUp else
        if change_down then bandDn else trend[1];

    def ls = if change_up then 1 else if change_down then -1 else ls[1];
    plot result = if ls > 0 then 1 else 0;

}

plot i = S(c= close("aapl"), o=open("aapl"), h=high("aapl"), l=low("aapl"));
 

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