ECI Gaussian Indicator for ThinkorSwim

For those who may not be familiar, the OneNote mentioned by @BenTen above is maintained by a trader called Johnny Quotron or JQ for short. Many times he annotates additional code/comments and so for those who are comparing code, those studies may look slightly different.

For those that like to browse Mobius original studies, you can always visit the following site, there are 100 studies there last I looked. These were posted by Mobius himself.

https://www.mytrade.com/profile/Mobius/
 
When they shut down MyTrade last month on TOS (it's still available on the web) Quite a few people put their studies in the OneNote for posterity!
By the Way, many say if a study isn't in there, it didn't deserve to be. ;)
Mobius said he was done at 100 great Studies.
Thanks @tomsk !!
 
ECI is based on the FE algorithm
# Original plot style by Mobius
# Note: Default Lengths are not optimized. My personal experience has been length ranges between 8 and 13 are generally effective.
 
Last edited by a moderator:
Is anyone here familiar with the process of back-testing this study on the /ES 5 Min Chart, where results are only reflective of cash market trading hours? Any guidance is appreciated!

Here's the code:
Code:
# User Inputs

input agg = aggregationPeriod.Four_Min;

input Length = 5; #hint Length: Length for calculations.

input Value = .618;

input MeanValue = HL2; #hint MeanValue: Point of origen.

input PointWeight = 3;

input PointColor = 4;



script g {

    input length  = 10;

    input betaDev = 20;

    input data = close;

    def w = (2 * Double.Pi / length);

    def beta = (1 - Cos(w)) / (Power(1.414, 2.0 / betaDev) - 1 );

    def alpha = (-beta + Sqrt(beta * beta + 2 * beta));

    def G = Power(alpha, 4) * data + 

    4 * (1 – alpha) * G[1] – 6 * Power( 1 - alpha, 2 ) * G[2] + 

    4 * Power( 1 - alpha, 3 ) * G[3] - Power( 1 - alpha, 4 ) * G[4];

    plot Line = G;

}

def o = g(data = open(period = agg));

def h = g(data = high(period = agg));

def l = g(data = low(period = agg));

def c = g(data = close(period = agg));

def bar = barNumber();

def TR = Max(h, c[1]) - Min(l, c[1]);

def R = Highest(h, Length) - Lowest(l, Length);

def F = Log(Sum(TR, Length) / R) / Log(Length);

def M = if F crosses above Value 

        then MeanValue

        else if F > Value and F > F[1]

             then M[1]

             else M[1];

def S = F > Value and F > F[1];

def StartBar = if F crosses above Value 

               then bar

               else double.nan;

def Flag_High;

def Flag_Low;

if F crosses above Value

    {

     Flag_High = h;

     Flag_Low = l;

    }

else if S and h > Flag_High[1]

    {

     Flag_High = h;

     Flag_Low = Flag_Low[1];

    }

else if S and l < Flag_Low[1]

    {

     Flag_High = Flag_High[1];

     Flag_Low = l;

    }

else

    {

     Flag_High = Flag_High[1];

     Flag_Low = Flag_Low[1];

    }

# Plots

plot mean = if F crosses above Value 

            then m 

            else if F > Value

                 then m 

                 else double.nan;

     mean.SetStyle(Curve.Points);

     mean.SetDefaultColor(GetColor(PointColor));

     mean.SetLineWeight(PointWeight);

plot Flag_Mean = if bar >= HighestAll(StartBar)

                 then HighestAll(if isNaN(close[-1])

                                 then M

                                 else double.nan)

                 else double.nan;

     Flag_Mean.SetDefaultColor(Color.CYAN);

plot Flag_High_Line = if bar >= HighestAll(StartBar)

                      then HighestAll(if isNaN(close[-1])

                                      then Round(Flag_High/TickSize(), 0)*TickSize()

                                      else double.nan)

                      else double.nan;

     Flag_High_Line.SetDefaultColor(Color.Green);

plot Flag_Low_Line = if bar >= HighestAll(StartBar)

                     then HighestAll(if isNaN(close[-1])

                                     then Round(Flag_Low/TickSize(), 0)*TickSize()

                                     else double.nan)

                     else double.nan;

     Flag_Low_Line.SetDefaultColor(Color.Red);

AddCloud(Flag_Mean, Flag_High_Line, CreateColor(50, 150, 75), CreateColor(50, 150, 70));

AddCloud(Flag_Low_Line, Flag_Mean, CreateColor(175, 0, 50), CreateColor(175, 0, 50));

def FHL = if !isNaN(Flag_High_Line)

          then Flag_High

          else FHL[1];

def FLL = if !isNaN(Flag_Low_Line)

          then Flag_Low

          else FLL[1];

def ColorSwitch;

if h > Flag_High

{ 

    ColorSwitch = 1;

}

else if l < Flag_Low

{

    ColorSwitch = -1;

}

else

{

    ColorSwitch = 0;

}

AssignPriceColor(if ColorSwitch == 1

                 then color.green

                 else if ColorSwitch == -1

                      then color.red

                      else color.yellow);

def ChartAgg = getAggregationPeriod();

Addlabel(1, "Flag Study at: " + (agg /1000/60) + "min agg" +

          "  Chart Agg: " + (ChartAgg/1000/60) +

          "  Energy Level = " + AsPercent(F),

          if ColorSwitch == 1

          then color.green

          else if ColorSwitch == -1

               then color.red

               else color.yellow);

#End Code ECI or Flags
 
Last edited by a moderator:
Super scan........https://tos.mx/YErdUR4 Indicator,......https://tos.mx/YlJvmm5
 
Last edited by a moderator:
BenTen and rad14733,

Thanks for your replies. I greatly appreciate all that you guys do here on this forum, I will try to improve upon my posting etiquette and hopefully one day be a contributing member to this site.

BELLOW IS THE CODE:

Code:
#hint: Expansion Contraction Indicator (ECI): \n ECI Identifies areas of price compression which leads to price expansion. ECI doesn't show the direction of a trend but does indicate when a trend is going to resume (price flagging) or if a change in trend polarity is happening.\n ECI plots the areas where price becomes compressed with colored and clouded bands. The indicator also leaves legacy points in areas of past compression.
# ECI is based on the FE algorithm
# Original plot style by Mobius
# Note: Default Lengths are not optimized. My personal experience has been length ranges between 8 and 13 are generally effective.
# Here's another way to look at Fractal Energy. This study plots it on the chart graph with clouded areas for the current price compression, exhaustion area and leaves colored points as a legacy plot for past areas.
# Good CSA choices with this study are:
# ECI + SuperTrend + Fractal Pivots
# ECI + SuperTrend + RSI in Laguerre Time
# ECI + SuperTrend + Standard Deviation Bands
# ECI + Linear Regression Standard Deviation Bands
# This version Modified to filter price to a normalized distribution

# User Inputs
input EciLength = 14; #hint EciLength: Length for calculations.
input AvgLength = 10; #hint AvgLength: Length for smoothing.
input AvgType = AverageType.Simple; #hint AvgType: Average Type
input MeanValue = HL2; #hint MeanValue: Point of origen.
input DisplayPoints = yes; #hint DisplayPoints: No Points.
input OnExpansion = yes; #hint OnExpansion: Line extensions.

# Variables
script g {
    input data = close;
    def w = (2 * Double.Pi / 8);
    def beta = (1 - Cos(w)) / (Power(1.414, 2.0 / 4) - 1 );
    def alpha = (-beta + Sqrt(beta * beta + 2 * beta));
    def G = Power(alpha, 4) * data +
                 4 * (1  alpha) * G[1]  6 * Power( 1 - alpha, 2 ) * G[2] +
                 4 * Power( 1 - alpha, 3 ) * G[3] - Power( 1 - alpha, 4 ) * G[4];
    plot Line = G;
}
def o = g(data = open);
def h = g(data = high);
def l = g(data = low);
def c = g(data = close);
def bar = BarNumber();
def HMax = Highest(Max(h, c[1]), EciLength);
def LMax = Lowest(Min(l, c[1]), EciLength);
def TR = HMax - LMax;
def ECI = Round((Log(Sum(TrueRange(h, c, l), EciLength) / TR) /
         Log(EciLength)) / TickSize(), 0) * TickSize();
def Avg = MovingAverage(AverageType = AvgType, ECI, AvgLength);
def S1 = if ECI crosses above Avg
         then MeanValue
         else S1[1];
def S = ECI > Avg;
def SBars = if ECI > Avg
            then bar
            else Double.NaN;
def StartBar = if ECI crosses above Avg
               then bar
               else StartBar[1];
def LastSBar = if ECI crosses below Avg
               then bar
               else LastSBar[1];
def PP = if ECI crosses above Avg
         then MeanValue
         else PP[1];
def Mean_Limit = if bar != StartBar
                 then bar - StartBar
                 else if bar == StartBar
                      then Double.NaN
                      else Mean_Limit[1];
def SHigh = if ECI crosses above Avg
            then h
            else SHigh[1];
def SHighBar = if S and
                  h == SHigh
               then bar
               else SHighBar[1];
def SHigh_Limit = if bar == StartBar
                  then Double.NaN
                  else if bar > StartBar
                       then bar - SHighBar
                       else SHigh_Limit[1];
def SLow = if ECI crosses above Avg
           then l
           else SLow[1];
def SLowBar = if S and
                  l == SLow
              then bar
              else SLowBar[1];
def SLow_Limit = if bar == StartBar
                 then Double.NaN
                 else if bar > StartBar
                      then bar - SLowBar
                      else SLow_Limit[1];
# Internal Script Reference
script LinePlot {
    input LineLimit = 0;
    input OnExpansion = yes;
    input data = close;
    input bar = 0;
    def ThisBar = HighestAll(bar);
    def cLine = if bar == ThisBar
                then data
                else Double.NaN;
    def cond1 = CompoundValue(1, if IsNaN(data)
                                 then cond1[1]
                                 else data, data);
    plot P = if ThisBar - LineLimit <= bar
             then HighestAll(cLine)
             else Double.NaN;
    plot ExpLine = if OnExpansion and
                     IsNaN(data[-1])
                   then cond1
                   else Double.NaN;
}
# Plots
plot SD_Pivot = LinePlot(data = PP, LineLimit = Mean_Limit, OnExpansion = OnExpansion, bar = StartBar).P;
plot SD_Pivot_X = LinePlot(data = PP, LineLimit = StartBar).ExpLine;
     SD_Pivot.SetDefaultColor(Color.CYAN);
     SD_Pivot_X.SetDefaultColor(Color.CYAN);
plot SD_R1 = LinePlot(data = SHigh, LineLimit = SHigh_Limit, OnExpansion = OnExpansion, bar = SHighBar).P;
plot SD_R1_X = LinePlot(data = SHigh, LineLimit = SHigh_Limit).ExpLine;
     SD_R1.SetDefaultColor(Color.Light_GREEN);
     SD_R1_X.SetDefaultColor(Color.Light_GREEN);
plot SD_S1 = LinePlot(data = SLow, LineLimit = SLow_Limit, OnExpansion = OnExpansion, bar = SLowBar).P;
plot SD_S1_X = LinePlot(data = SLow, LineLimit = SLow_Limit).ExpLine;
     SD_S1.SetDefaultColor(Color.Light_RED);
     SD_S1_X.SetDefaultColor(Color.Light_RED);
plot SPlot = if S
             then S1 #l - (2 * TickSize())
             else Double.NaN;
     SPlot.SetHiding(!DisplayPoints);
     SPlot.SetPaintingStrategy(PaintingStrategy.POINTS);
     SPlot.SetLineWeight(1);
     SPlot.SetDefaultColor(Color.Yellow);
addCloud(SD_pivot, SD_R1, CreateColor(50,150,75), CreateColor(50,150,70));
addCloud(SD_S1, SD_pivot, CreateColor(175,0,50), CreateColor(175,0,50));
addCloud(SD_pivot_X, SD_R1_X, CreateColor(50,150,75), CreateColor(50,150,70));
addCloud(SD_S1_X, SD_pivot_X, CreateColor(175,0,50), CreateColor(175,0,50));
# Audible Alerts
Alert(ECI crosses below Avg, "Exit", Alert.BAR, Sound.Bell);
AddLabel(1, "Energy Level = " + ECI, color.white);
# End Code Modified ECI

BELLOW IS THE ERROR STATEMENTS:
Invalid statement: script at 22:1
Invalid statement: } at 31:1
 
Last edited by a moderator:
Your error originates in the following line of code and therefore effects a subsequent line below the script... Sort that out and go from there... It appears that your second Power() function call is incomplete... The part that says (1 alpha) * G[1] 6...

Ruby:
def G = Power(alpha, 4) * data + 4 * (1 alpha) * G[1] 6 * Power( 1 - alpha, 2 ) * G[2] + 4 * Power( 1 - alpha, 3 ) * G[3] - Power( 1 - alpha, 4 ) * G[4];


I'm not familiar with the Power() function but I believe the following code is what you are looking for...

Ruby:
def G = Power(alpha, 4) * data + 4 * Power(1 - alpha, 3) * G[1] + 6 * Power( 1 - alpha, 2 ) * G[2] + 4 * Power( 1 - alpha, 3 ) * G[3] - Power( 1 - alpha, 4 ) * G[4];
 
Can someone explain how to use this indicator? I see the yellow dots that mean compression, but how do you find hints on the direction that Mobius mentioned in the code? How do you know if the trend will resume? What indicators would help in identifying the direction of release? thanks
 
This explanation?
This is the explanation I found on Mobius site:

ECI (Expansion Contraction Indicator) Gaussian

is a price normalization filter.

This study plots areas of Volatility Compression, Balance or Flags.

It plots a lower and higher colored cloud to help distinguish

which way price may break out from the channel.

It also plots that channel about as fast as anything I've seen.
 
Can someone explain how to use this indicator? I see the yellow dots that mean compression, but how do you find hints on the direction that Mobius mentioned in the code? How do you know if the trend will resume? What indicators would help in identifying the direction of release? thanks
@tome10 At the top of the code, Mobius suggests other indicators (SuperTrend, RSI, Deviation Bands, Linear Regression, etc ...) to use in conjunction with the ECI study. I've previously seen Mobius say that he will go long at the lowest level (default color is red) of the ECI on an uptrend and go short at the highest level (default color is green) in a downtrend.

Hopefully this helps clarify some.
 
Totally Unrelated to the recents post, but just noticed this thread and old discussion about scan. You could do the following to do both bull and bear scan in the same.

Code for Scan is available in post #3 here. (https://usethinkscript.com/threads/eci-gaussian-indicator-for-thinkorswim.1160/post-10456)

Code:
def Bull = close crosses above SHigh;
def Bear = close crosses below SLow;

plot scan = (Bull or Bear);

Your Scan Queries will look like the below.
Code:
ECI_Scan()."Bear" is true within 2 bars
ECI_Scan()."Bull" is true within 2 bars
 
Did not find this in a search. Sorry if it already was posted.

It is a compression study is very fast at showing compression. Has some hints of when compression turns into expansion.

Code:
#hint: Expansion Contraction Indicator (ECI): \n ECI Identifies areas of price compression which leads to price expansion. ECI doesn't show the direction of a trend but does indicate when a trend is going to resume (price flagging) or if a change in trend polarity is happening.\n ECI plots the areas where price becomes compressed with colored and clouded bands. The indicator also leaves legacy points in areas of past compression.
# ECI is based on the FE algorithm
# Original plot style by Mobius
# Note: Default Lengths are not optimized. My personal experience has been length ranges between 8 and 13 are generally effective.
# Here's another way to look at Fractal Energy. This study plots it on the chart graph with clouded areas for the current price compression, exhaustion area and leaves colored points as a legacy plot for past areas.
# Good CSA choices with this study are:
# ECI + SuperTrend + Fractal Pivots
# ECI + SuperTrend + RSI in Laguerre Time
# ECI + SuperTrend + Standard Deviation Bands
# ECI + Linear Regression Standard Deviation Bands
# This version Modified to filter price to a normalized distribution

# User Inputs
input EciLength = 14; #hint EciLength: Length for calculations.
input AvgLength = 10; #hint AvgLength: Length for smoothing.
input AvgType = AverageType.Simple; #hint AvgType: Average Type
input MeanValue = HL2; #hint MeanValue: Point of origen.
input DisplayPoints = yes; #hint DisplayPoints: No Points.
input OnExpansion = yes; #hint OnExpansion: Line extensions.

# Variables
script g {
    input data = close;
    def w = (2 * Double.Pi / 8);
    def beta = (1 - Cos(w)) / (Power(1.414, 2.0 / 4) - 1 );
    def alpha = (-beta + Sqrt(beta * beta + 2 * beta));
    def G = Power(alpha, 4) * data +
                 4 * (1 – alpha) * G[1] – 6 * Power( 1 - alpha, 2 ) * G[2] +
                 4 * Power( 1 - alpha, 3 ) * G[3] - Power( 1 - alpha, 4 ) * G[4];
    plot Line = G;
}
def o = g(data = open);
def h = g(data = high);
def l = g(data = low);
def c = g(data = close);
def bar = BarNumber();
def HMax = Highest(Max(h, c[1]), EciLength);
def LMax = Lowest(Min(l, c[1]), EciLength);
def TR = HMax - LMax;
def ECI = Round((Log(Sum(TrueRange(h, c, l), EciLength) / TR) /
         Log(EciLength)) / TickSize(), 0) * TickSize();
def Avg = MovingAverage(AverageType = AvgType, ECI, AvgLength);
def S1 = if ECI crosses above Avg
         then MeanValue
         else S1[1];
def S = ECI > Avg;
def SBars = if ECI > Avg
            then bar
            else Double.NaN;
def StartBar = if ECI crosses above Avg
               then bar
               else StartBar[1];
def LastSBar = if ECI crosses below Avg
               then bar
               else LastSBar[1];
def PP = if ECI crosses above Avg
         then MeanValue
         else PP[1];
def Mean_Limit = if bar != StartBar
                 then bar - StartBar
                 else if bar == StartBar
                      then Double.NaN
                      else Mean_Limit[1];
def SHigh = if ECI crosses above Avg
            then h
            else SHigh[1];
def SHighBar = if S and
                  h == SHigh
               then bar
               else SHighBar[1];
def SHigh_Limit = if bar == StartBar
                  then Double.NaN
                  else if bar > StartBar
                       then bar - SHighBar
                       else SHigh_Limit[1];
def SLow = if ECI crosses above Avg
           then l
           else SLow[1];
def SLowBar = if S and
                  l == SLow
              then bar
              else SLowBar[1];
def SLow_Limit = if bar == StartBar
                 then Double.NaN
                 else if bar > StartBar
                      then bar - SLowBar
                      else SLow_Limit[1];
# Internal Script Reference
script LinePlot {
    input LineLimit = 0;
    input OnExpansion = yes;
    input data = close;
    input bar = 0;
    def ThisBar = HighestAll(bar);
    def cLine = if bar == ThisBar
                then data
                else Double.NaN;
    def cond1 = CompoundValue(1, if IsNaN(data)
                                 then cond1[1]
                                 else data, data);
    plot P = if ThisBar - LineLimit <= bar
             then HighestAll(cLine)
             else Double.NaN;
    plot ExpLine = if OnExpansion and
                     IsNaN(data[-1])
                   then cond1
                   else Double.NaN;
}
# Plots
plot SD_Pivot = LinePlot(data = PP, LineLimit = Mean_Limit, OnExpansion = OnExpansion, bar = StartBar).P;
plot SD_Pivot_X = LinePlot(data = PP, LineLimit = StartBar).ExpLine;
     SD_Pivot.SetDefaultColor(Color.CYAN);
     SD_Pivot_X.SetDefaultColor(Color.CYAN);
plot SD_R1 = LinePlot(data = SHigh, LineLimit = SHigh_Limit, OnExpansion = OnExpansion, bar = SHighBar).P;
plot SD_R1_X = LinePlot(data = SHigh, LineLimit = SHigh_Limit).ExpLine;
     SD_R1.SetDefaultColor(Color.Light_GREEN);
     SD_R1_X.SetDefaultColor(Color.Light_GREEN);
plot SD_S1 = LinePlot(data = SLow, LineLimit = SLow_Limit, OnExpansion = OnExpansion, bar = SLowBar).P;
plot SD_S1_X = LinePlot(data = SLow, LineLimit = SLow_Limit).ExpLine;
     SD_S1.SetDefaultColor(Color.Light_RED);
     SD_S1_X.SetDefaultColor(Color.Light_RED);
plot SPlot = if S
             then S1 #l - (2 * TickSize())
             else Double.NaN;
     SPlot.SetHiding(!DisplayPoints);
     SPlot.SetPaintingStrategy(PaintingStrategy.POINTS);
     SPlot.SetLineWeight(1);
     SPlot.SetDefaultColor(Color.Yellow);
addCloud(SD_pivot, SD_R1, CreateColor(50,150,75), CreateColor(50,150,70));
addCloud(SD_S1, SD_pivot, CreateColor(175,0,50), CreateColor(175,0,50));
addCloud(SD_pivot_X, SD_R1_X, CreateColor(50,150,75), CreateColor(50,150,70));
addCloud(SD_S1_X, SD_pivot_X, CreateColor(175,0,50), CreateColor(175,0,50));
# Audible Alerts
Alert(ECI crosses below Avg, "Exit", Alert.BAR, Sound.Bell);
AddLabel(1, "Energy Level = " + ECI, color.white);
# End Code Modified ECI
Could you explain to me how this works? I sure would appreciate it. I can't find an explanation anywhere on how to use this ECI
 
@Buck
> Expansion Contraction Indicator (ECI):
ECI Identifies areas of price compression which leads to price expansion. ECI doesn't show the direction of a trend but does indicate when a trend is going to resume (price flagging) or if a change in trend polarity is happening. It plots a lower and higher colored cloud to help distinguishwhich way price may break out from the channel.

Understanding phase cycles are the basis to accurately reading price action on charts. The contraction phase indicates a period when the market is in consolidation, marked by a tightening of the market with narrow ranges. This period is marked by low institutional volume. During this period, the institutional traders are working out the next big move. Which way it will move, requires combining this study w/ additional indicators.
https://usethinkscript.com/threads/eci-gaussian-indicator-for-thinkorswim.1160/#post-15174

Search market phases on this forum and the internet for additional discussions on price action.
 
Last edited:
Questions & Modification requests for ECI:
https://usethinkscript.com/threads/eci-gaussian-indicator-for-thinkorswim.1160/

  • What effect is there in changing ECI length and the Value to 5 and 4 here: https://usethinkscript.com/threads/eci-gaussian-indicator-for-thinkorswim.1160/#post-10456 opposed to 14 and 10 Like mobius has it?
  • Anyone know how to create a watchlist on this? I want to see how many bars are in the ECI dot phase, kinda like a TTM squeeze
  • Anyone Know how to Add a Grey box around the Indicator instead of the dots? I think this is a better indicator than consolidation box but consolidation box looks much cleaner
 
Last edited by a moderator:
What effect is there in changing ECI length and the Value to 5 and 4 here: https://usethinkscript.com/threads/eci-gaussian-indicator-for-thinkorswim.1160/#post-10456 opposed to 14 and 10 Like mobius has it?
Depends on your strategy and timeframes.
Recommend you put it on your chart. Nothing beats personal experience ;) The only way you will know what works best for you is to play with the settings and see how the indicator line up w/ your strategy and with your other indicators. To determine if this indicator brings value, analyze it over different timeframes, across history and with multiple instruments.

  • Anyone know how to create a watchlist on this? I want to see how many bars are in the ECI dot phase, kinda like a TTM squeeze
  • Anyone Know how to Add a Grey box around the Indicator instead of the dots? I think this is a better indicator than consolidation box but consolidation box looks much cleaner
Those modifications are not currently available for this indicator.
 
anyone know how to turn off the red and green channel boxes?
You would need to place a hashtag (#) in front of each of these lines of code at the bottom of the script:
Ruby:
addCloud(SD_pivot, SD_R1, CreateColor(50,150,75), CreateColor(50,150,70));
addCloud(SD_S1, SD_pivot, CreateColor(175,0,50), CreateColor(175,0,50));
addCloud(SD_pivot_X, SD_R1_X, CreateColor(50,150,75), CreateColor(50,150,70));
addCloud(SD_S1_X, SD_pivot_X, CreateColor(175,0,50), CreateColor(175,0,50));
 

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