Automatic Quadrant Lines for ThinkorSwim

chewie76

Well-known member
VIP
VIP Enthusiast
The Automatic Quadrant Lines is a trading strategy upper indicator that projects where price might go in the future. Use weekly/daily/4 hr chart for swing trading. Use 30 min or less for day trading. This indicator shows you the long entry and long target. It shows you a short entry and short target. In the indicator, L/E is Long Entry, and S/E is Short Entry. The targets show the price in the chart bubble. There is a break down target line (dark green) that indicates if price breaks lower than the support line, this is where price may break down to. The indicator includes an up and down arrow that indicates when price breaks through the Long or Short Entry line. There are also alerts built in when the arrows appear.

Long strategy lines are dashed and have a (2) weight while short strategy are solid and single weighted lines.

(NOTE: If price breaks down or up from the dark red support and resistance lines, a new set of lines will appear. There are no guarantees price will hit the target.)

Here are some examples.

/RTY on 4 hr chart.
QHCgUTb.jpg


/ES on 15m chart. Price broke above target on FED news.
eXuBWHZ.jpg


/NQ on 4 hr chart. Hit target.
6f667mU.jpg


Tesla on 4 hr chart. Above the 50% line. Target at $751.80.
xZ8fu65.jpg


/SI on 10 min chart. Hit target.
nTh5CZH.jpg


Shareable Link:
http://tos.mx/2pnajoG

Long Entry Scan Alert
http://tos.mx/3Jppd0g

Short Entry Scan Alert
http://tos.mx/KGlOVLi

CODE:

Code:
#Automatic Quadrant Lines

#based on Mobius's Fractal Pivot Strategy

#developed by Chewie76 on 8/27/2021



# User Inputs

input n = 20;

input FractalEnergyLength = 8;

input FractalEnergyThreshold = .68;

input AtrMult = .70;

input nATR = 4;

input AvgType = AverageType.HULL;

input LabelsOn = yes;

input AlertsOn = yes;



# Variables

def o = open;

def h = high;

def l = low;

def c = close;

def bar = BarNumber();

def TS = TickSize();

def nan = double.nan;

def ATR = Round((MovingAverage(AvgType, TrueRange(h, c, l), nATR)) / TS, 0) * TS;

def risk = if Between(c, 0, 1500)

           then ATR

           else if Between(c, 1500, 3500)

           then 2

           else if Between(c, 3500, 5500)

                then 4

           else 6;

def FE = Log(Sum((Max(h, c[1]) - Min(l, c[1])), FractalEnergyLength) /

        (Highest(h, FractalEnergyLength) - Lowest(l, FractalEnergyLength)))

            / Log(FractalEnergyLength);

# Parent Aggregation Pivot High

# Pivot High Variables

def p_hh = fold i = 1 to n + 1

           with p = 1

           while p

           do h > GetValue(h, -1);

def p_PivotH = if (bar > n and

                   h == Highest(h, n) and

                   p_hh)

               then h

               else NaN;

def p_PHValue = if !IsNaN(p_PivotH)

                then p_PivotH

                else p_PHValue[1];

def p_PHBar = if !IsNaN(p_PivotH)

                    then bar

                    else nan;

# Pivot High and Pivot High Exit Variables

# Pivot High Variables

def hh = fold ii = 1 to n + 1

         with pp = 1

         while pp

         do h > GetValue(h, -1);

def PivotH = if (bar > n and

                 h == Highest(h, n) and

                 hh)

            then h

            else Double.NaN;

def PHValue = if !IsNaN(PivotH)

              then PivotH

              else PHValue[1];

def PHBar = if !IsNaN(PivotH)

                  then bar

                  else nan;

# Pivot High Exit Variables

def PHExit = if (bar > n and

              h == Highest(h, n) and

              hh)

             then if l[1] < l

                  then l[1]

                  else fold r = 0 to 20

                       with a = NaN

                       while IsNaN(a)

                       do if GetValue(l[1], r) < l

                          then GetValue(l[1], r)

                          else NaN

            else Double.NaN;

def PHExitValue = if !IsNaN(PHExit)

                  then PHExit

                  else PHExitValue[1];

def PHExitBar = if (bar > n and

                    h == Highest(h, n) and

                    hh)

                then if l[1] < l

                then bar - 1

                else fold d = 0 to 20

                     with y = NaN

                     while IsNaN(y)

                     do if GetValue(l[1], d) < l

                        then GetValue(bar - 1, d)

                        else NaN

                else NaN;

# Pivot Low and Pivot Low Entry Variables

# Parent Pivot Low Variables

def p_ll = fold j = 1 to n + 1

           with q = 1

           while q

           do l < GetValue(l, -1);

def p_PivotL = if (bar > n and

                 l == Lowest(l, n) and

                 p_ll)

             then l

             else NaN;

def p_PLValue = if !IsNaN(p_PivotL)

              then p_PivotL

              else p_PLValue[1];

def p_PLBar = if !IsNaN(p_PivotL)

              then bar

              else nan;



# Pivot Low Variables

def ll = fold jj = 1 to n + 1

         with qq = 1

         while qq

         do l < GetValue(l, -1);

def PivotL = if (bar > n and

                 l == Lowest(l, n) and

                 ll)

             then l

             else NaN;

def PLValue = if !IsNaN(PivotL)

              then PivotL

              else PLValue[1];

def PLBar = if !IsNaN(PivotL)

            then bar

            else nan;



# Pivot Low Entry Variables

def PLEntry = if (bar > n and

                  l == Lowest(l, n) and

                  ll)

              then if h[1] > h

              then h[1]

              else fold t = 0 to 20

                   with w = NaN

                   while IsNaN(w)

                   do if GetValue(h[1], t) > h

                      then GetValue(h[1], t)

                      else NaN

              else NaN;

def PLEntryValue = if !IsNaN(PLEntry)

                   then PLEntry

                   else PLEntryValue[1];

def PLEntryBar =  if (bar > n and

                  l == Lowest(l, n) and

                  ll)

                  then if h[1] > h

                       then bar - 1

                       else fold u = 0 to 20

                            with z = NaN

                            while IsNaN(z)

                            do if GetValue(h[1], u) > h

                               then GetValue(bar - 1, u)

                               else NaN

              else NaN;



# Plots



plot R1 = if bar >= HighestAll(PHBar)

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

                          then PHValue

                          else nan)

         else nan;

R1.SetDefaultColor(Color.dark_red);

R1.SetLineWeight(1);

plot ShortEntry = if bar >= HighestAll(PHexitBar)

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

                                   then PHExitValue

                                   else nan)

                   else nan;

ShortEntry.SetDefaultColor(Color.red);

def SE =(if isNaN(ShortEntry[1]) then ShortEntry else Double.NaN);

addchartBubble(LabelsOn and ShortEntry, SE,"S/E",color.red);



plot S1 = if bar >= HighestAll(PLBar)

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

                          then PLValue

                          else nan)

          else nan;

S1.SetDefaultColor(Color.dark_red);

S1.SetLineWeight(3);

plot LongEntry = if bar >= HighestAll(PLEntryBar)

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

                                    then PLEntryValue

                                    else nan)

                    else nan;

LongEntry.SetDefaultColor(Color.GREEN);

LongEntry.SetStyle(Curve.long_DASH);

LongEntry.SetLineWeight(2);

def LE =(if isNaN(LongEntry[1]) then LongEntry else Double.NaN);

addchartBubble(LabelsOn and LongEntry, LE,"L/E",color.green);


plot UpArrow = if c crosses above LongEntry and FE > .5

               then l

               else Double.NaN;

UpArrow.SetPaintingStrategy(PaintingStrategy.ARROW_UP);

UpArrow.SetLineWeight(5);

UpArrow.SetDefaultColor(Color.GREEN);

plot DnArrow = if c crosses below ShortEntry and ((FE > .618)

                or (FE < .382))

               then h

               else Double.NaN;

DnArrow.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);

DnArrow.SetLineWeight(5);

DnArrow.SetDefaultColor(Color.RED);



plot Fifty = (LongEntry - S1) + LongEntry;

Fifty.setdefaultcolor(color.yellow);

Fifty.SetStyle(Curve.long_DASH);

Fifty.setlineweight(2);



plot SeventyFive = (LongEntry - S1) + Fifty;

SeventyFive.setdefaultcolor(color.cyan);

SeventyFive.SetStyle(Curve.long_DASH);

SeventyFive.setlineweight(2);



plot Target = (LongEntry - S1) + SeventyFive;

Target.setdefaultcolor(color.red);

Target.SetStyle(Curve.long_DASH);

Target.setlineweight(3);

def LT =(if isNaN(TARGET[1]) then Target else Double.NaN);

addchartBubble(LabelsOn and Target, LT,"LONG TARGET: " + asDollars(LT),color.red);



plot BreakDownTarget = S1 -(LongEntry - S1);

BreakDownTarget.setdefaultcolor(color.dark_Green);

BreakDownTarget.SetStyle(Curve.long_DASH);

BreakDownTarget.setlineweight(3);



plot S_Fifty = ShortEntry - (R1 - ShortEntry);

S_Fifty.setdefaultcolor(color.yellow);

S_Fifty.setlineweight(1);



plot S_SeventyFive = S_Fifty - (R1 - ShortEntry);

S_SeventyFive.setdefaultcolor(color.cyan);

S_SeventyFive.setlineweight(1);



plot S_ShortTarget = S_SeventyFive - (R1 - ShortEntry);

S_ShortTarget.setdefaultcolor(color.green);

S_ShortTarget.setlineweight(1);

def ST =(if isNaN(S_ShortTarget[1]) then S_ShortTarget else Double.NaN);

addchartBubble(LabelsOn and S_ShortTarget, ST,"SHORT TARGET: " + asDollars(ST),color.light_green);



# Alerts

Alert(AlertsOn and UpArrow, " ", Alert.Bar, Sound.ding);

Alert(AlertsOn and DnArrow, " ", Alert.Bar, Sound.ding);
 
Last edited:

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

The Automatic Quadrant Lines is a trading strategy upper indicator that projects where price might go in the future. This indicator shows you the long entry and long target. It shows you a short entry and short target. In the indicator, L/E is Long Entry, and S/E is Short Entry. The targets show the price in the chart bubble. There is a break down target line (dark green) that indicates if price breaks lower than the support line, this is where price may break down to. The indicator includes an up and down arrow that indicates when price breaks through the Long or Short Entry line. There are also alerts built in when the arrows appear.

Long strategy lines are dashed and have a (2) weight while short strategy are solid and single weighted lines.

(NOTE: If price breaks down or up from the dark red support and resistance lines, a new set of lines will appear. There are no guarantees price will hit the target.)

Here are some examples.

/RTY on 4 hr chart.
QHCgUTb.jpg


/ES on 15m chart. Price broke above target on FED news.
eXuBWHZ.jpg


/NQ on 4 hr chart. Hit target.
6f667mU.jpg


Tesla on 4 hr chart. Above the 50% line. Target at $751.80.
xZ8fu65.jpg


/SI on 10 min chart. Hit target.
nTh5CZH.jpg


Shareable Link:
http://tos.mx/QoCUz2G

CODE:
#Automatic Quadrant Lines
#based on Mobius's Fractal Pivot Strategy
#developed by Chewie76 on 8/27/2021

# User Inputs
input n = 20;
input FractalEnergyLength = 8;
input FractalEnergyThreshold = .68;
input AtrMult = .70;
input nATR = 4;
input AvgType = AverageType.HULL;
input LabelsOn = yes;
input AlertsOn = yes;

# Variables
def o = open;
def h = high;
def l = low;
def c = close;
def bar = BarNumber();
def TS = TickSize();
def nan = double.nan;
def ATR = Round((MovingAverage(AvgType, TrueRange(h, c, l), nATR)) / TS, 0) * TS;
def risk = if Between(c, 0, 1500)
then ATR
else if Between(c, 1500, 3500)
then 2
else if Between(c, 3500, 5500)
then 4
else 6;
def FE = Log(Sum((Max(h, c[1]) - Min(l, c[1])), FractalEnergyLength) /
(Highest(h, FractalEnergyLength) - Lowest(l, FractalEnergyLength)))
/ Log(FractalEnergyLength);
# Parent Aggregation Pivot High
# Pivot High Variables
def p_hh = fold i = 1 to n + 1
with p = 1
while p
do h > GetValue(h, -1);
def p_PivotH = if (bar > n and
h == Highest(h, n) and
p_hh)
then h
else NaN;
def p_PHValue = if !IsNaN(p_PivotH)
then p_PivotH
else p_PHValue[1];
def p_PHBar = if !IsNaN(p_PivotH)
then bar
else nan;
# Pivot High and Pivot High Exit Variables
# Pivot High Variables
def hh = fold ii = 1 to n + 1
with pp = 1
while pp
do h > GetValue(h, -1);
def PivotH = if (bar > n and
h == Highest(h, n) and
hh)
then h
else Double.NaN;
def PHValue = if !IsNaN(PivotH)
then PivotH
else PHValue[1];
def PHBar = if !IsNaN(PivotH)
then bar
else nan;
# Pivot High Exit Variables
def PHExit = if (bar > n and
h == Highest(h, n) and
hh)
then if l[1] < l
then l[1]
else fold r = 0 to 20
with a = NaN
while IsNaN(a)
do if GetValue(l[1], r) < l
then GetValue(l[1], r)
else NaN
else Double.NaN;
def PHExitValue = if !IsNaN(PHExit)
then PHExit
else PHExitValue[1];
def PHExitBar = if (bar > n and
h == Highest(h, n) and
hh)
then if l[1] < l
then bar - 1
else fold d = 0 to 20
with y = NaN
while IsNaN(w)
do if GetValue(l[1], d) < l
then GetValue(bar - 1, d)
else NaN
else NaN;
# Pivot Low and Pivot Low Entry Variables
# Parent Pivot Low Variables
def p_ll = fold j = 1 to n + 1
with q = 1
while q
do l < GetValue(l, -1);
def p_PivotL = if (bar > n and
l == Lowest(l, n) and
p_ll)
then l
else NaN;
def p_PLValue = if !IsNaN(p_PivotL)
then p_PivotL
else p_PLValue[1];
def p_PLBar = if !IsNaN(p_PivotL)
then bar
else nan;

# Pivot Low Variables
def ll = fold jj = 1 to n + 1
with qq = 1
while qq
do l < GetValue(l, -1);
def PivotL = if (bar > n and
l == Lowest(l, n) and
ll)
then l
else NaN;
def PLValue = if !IsNaN(PivotL)
then PivotL
else PLValue[1];
def PLBar = if !IsNaN(PivotL)
then bar
else nan;

# Pivot Low Entry Variables
def PLEntry = if (bar > n and
l == Lowest(l, n) and
ll)
then if h[1] > h
then h[1]
else fold t = 0 to 20
with w = NaN
while IsNaN(w)
do if GetValue(h[1], t) > h
then GetValue(h[1], t)
else NaN
else NaN;
def PLEntryValue = if !IsNaN(PLEntry)
then PLEntry
else PLEntryValue[1];
def PLEntryBar = if (bar > n and
l == Lowest(l, n) and
ll)
then if h[1] > h
then bar - 1
else fold u = 0 to 20
with z = NaN
while IsNaN(z)
do if GetValue(h[1], u) > h
then GetValue(bar - 1, u)
else NaN
else NaN;

# Plots

plot R1 = if bar >= HighestAll(PHBar)
then HighestAll(if isNaN(close[-1])
then PHValue
else nan)
else nan;
R1.SetDefaultColor(Color.dark_red);
R1.SetLineWeight(1);
plot ShortEntry = if bar >= HighestAll(PHexitBar)
then HighestAll(if isNaN(close[-1])
then PHExitValue
else nan)
else nan;
ShortEntry.SetDefaultColor(Color.red);
def SE =(if isNaN(ShortEntry[1]) then ShortEntry else Double.NaN);
addchartBubble(LabelsOn and ShortEntry, SE,"S/E",color.red);

plot S1 = if bar >= HighestAll(PLBar)
then HighestAll(if isNaN(c[-1])
then PLValue
else nan)
else nan;
S1.SetDefaultColor(Color.dark_red);
S1.SetLineWeight(3);
plot LongEntry = if bar >= HighestAll(PLEntryBar)
then HighestAll(if isNaN(c[-1])
then PLEntryValue
else nan)
else nan;
LongEntry.SetDefaultColor(Color.GREEN);
LongEntry.SetStyle(Curve.long_DASH);
LongEntry.SetLineWeight(2);
def LE =(if isNaN(LongEntry[1]) then LongEntry else Double.NaN);
addchartBubble(LabelsOn and LongEntry, LE,"L/E",color.green);

plot priceLine = HighestAll(if IsNaN(c[-1])
then c
else Double.NaN);
priceLine.SetStyle(Curve.SHORT_DASH);
priceLine.SetLineWeight(1);
priceLine.SetDefaultColor(Color.CYAN);
plot UpArrow = if c crosses above LongEntry and FE > .5
then l
else Double.NaN;
UpArrow.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
UpArrow.SetLineWeight(5);
UpArrow.SetDefaultColor(Color.GREEN);
plot DnArrow = if c crosses below ShortEntry and ((FE > .618)
or (FE < .382))
then h
else Double.NaN;
DnArrow.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
DnArrow.SetLineWeight(5);
DnArrow.SetDefaultColor(Color.RED);

plot Fifty = (LongEntry - S1) + LongEntry;
Fifty.setdefaultcolor(color.yellow);
Fifty.SetStyle(Curve.long_DASH);
Fifty.setlineweight(2);

plot SeventyFive = (LongEntry - S1) + Fifty;
SeventyFive.setdefaultcolor(color.cyan);
SeventyFive.SetStyle(Curve.long_DASH);
SeventyFive.setlineweight(2);

plot Target = (LongEntry - S1) + SeventyFive;
Target.setdefaultcolor(color.red);
Target.SetStyle(Curve.long_DASH);
Target.setlineweight(3);
def LT =(if isNaN(TARGET[1]) then Target else Double.NaN);
addchartBubble(LabelsOn and Target, LT,"LONG TARGET: " + asDollars(LT),color.red);

plot BreakDownTarget = S1 -(LongEntry - S1);
BreakDownTarget.setdefaultcolor(color.dark_Green);
BreakDownTarget.SetStyle(Curve.long_DASH);
BreakDownTarget.setlineweight(3);

plot S_Fifty = ShortEntry - (R1 - ShortEntry);
S_Fifty.setdefaultcolor(color.yellow);
S_Fifty.setlineweight(1);

plot S_SeventyFive = S_Fifty - (R1 - ShortEntry);
S_SeventyFive.setdefaultcolor(color.cyan);
S_SeventyFive.setlineweight(1);

plot S_ShortTarget = S_SeventyFive - (R1 - ShortEntry);
S_ShortTarget.setdefaultcolor(color.green);
S_ShortTarget.setlineweight(1);
def ST =(if isNaN(S_ShortTarget[1]) then S_ShortTarget else Double.NaN);
addchartBubble(LabelsOn and S_ShortTarget, ST,"SHORT TARGET: " + asDollars(ST),color.light_green);

# Alerts
Alert(AlertsOn and UpArrow, " ", Alert.Bar, Sound.ding);
Alert(AlertsOn and DnArrow, " ", Alert.Bar, Sound.ding);
@Chewie @Chewie, you are my angel. muchas gracias!
 
@chewie76: This looks interesting.
Is it possible to add WL columns for different timeframes (15min, 1hr, 4hr etc.) when the long (or short) entry triggers?
Thanks
 
@chewie76 In the CODE: section above, there is "no such variable: w"...
I believe it should be "y"...

chewie-typo.jpg


Thank you for your time, effort and generosity in offering another great
Indicator to the uTS Community...It is much appreciated!
 
@chewie76 In the CODE: section above, there is "no such variable: w"...
I believe it should be "y"...

chewie-typo.jpg


Thank you for your time, effort and generosity in offering another great
Indicator to the uTS Community...It is much appreciated!
Yes, you are right. In the post, the (y) turned into a "thumbs up" icon. So I added the code into a "code" feature in the post which corrected it. Thanks!
 
The Automatic Quadrant Lines is a trading strategy upper indicator that projects where price might go in the future. Use weekly/daily/4 hr chart for swing trading. Use 30 min or less for day trading. This indicator shows you the long entry and long target. It shows you a short entry and short target. In the indicator, L/E is Long Entry, and S/E is Short Entry. The targets show the price in the chart bubble. There is a break down target line (dark green) that indicates if price breaks lower than the support line, this is where price may break down to. The indicator includes an up and down arrow that indicates when price breaks through the Long or Short Entry line. There are also alerts built in when the arrows appear.

Long strategy lines are dashed and have a (2) weight while short strategy are solid and single weighted lines.

(NOTE: If price breaks down or up from the dark red support and resistance lines, a new set of lines will appear. There are no guarantees price will hit the target.)

Here are some examples.

/RTY on 4 hr chart.
QHCgUTb.jpg


/ES on 15m chart. Price broke above target on FED news.
eXuBWHZ.jpg


/NQ on 4 hr chart. Hit target.
6f667mU.jpg


Tesla on 4 hr chart. Above the 50% line. Target at $751.80.
xZ8fu65.jpg


/SI on 10 min chart. Hit target.
nTh5CZH.jpg


Shareable Link:
http://tos.mx/QoCUz2G

Long Entry Scan Alert
http://tos.mx/3Jppd0g

Short Entry Scan Alert
http://tos.mx/KGlOVLi

CODE:

Code:
#Automatic Quadrant Lines

#based on Mobius's Fractal Pivot Strategy

#developed by Chewie76 on 8/27/2021



# User Inputs

input n = 20;

input FractalEnergyLength = 8;

input FractalEnergyThreshold = .68;

input AtrMult = .70;

input nATR = 4;

input AvgType = AverageType.HULL;

input LabelsOn = yes;

input AlertsOn = yes;



# Variables

def o = open;

def h = high;

def l = low;

def c = close;

def bar = BarNumber();

def TS = TickSize();

def nan = double.nan;

def ATR = Round((MovingAverage(AvgType, TrueRange(h, c, l), nATR)) / TS, 0) * TS;

def risk = if Between(c, 0, 1500)

           then ATR

           else if Between(c, 1500, 3500)

           then 2

           else if Between(c, 3500, 5500)

                then 4

           else 6;

def FE = Log(Sum((Max(h, c[1]) - Min(l, c[1])), FractalEnergyLength) /

        (Highest(h, FractalEnergyLength) - Lowest(l, FractalEnergyLength)))

            / Log(FractalEnergyLength);

# Parent Aggregation Pivot High

# Pivot High Variables

def p_hh = fold i = 1 to n + 1

           with p = 1

           while p

           do h > GetValue(h, -1);

def p_PivotH = if (bar > n and

                   h == Highest(h, n) and

                   p_hh)

               then h

               else NaN;

def p_PHValue = if !IsNaN(p_PivotH)

                then p_PivotH

                else p_PHValue[1];

def p_PHBar = if !IsNaN(p_PivotH)

                    then bar

                    else nan;

# Pivot High and Pivot High Exit Variables

# Pivot High Variables

def hh = fold ii = 1 to n + 1

         with pp = 1

         while pp

         do h > GetValue(h, -1);

def PivotH = if (bar > n and

                 h == Highest(h, n) and

                 hh)

            then h

            else Double.NaN;

def PHValue = if !IsNaN(PivotH)

              then PivotH

              else PHValue[1];

def PHBar = if !IsNaN(PivotH)

                  then bar

                  else nan;

# Pivot High Exit Variables

def PHExit = if (bar > n and

              h == Highest(h, n) and

              hh)

             then if l[1] < l

                  then l[1]

                  else fold r = 0 to 20

                       with a = NaN

                       while IsNaN(a)

                       do if GetValue(l[1], r) < l

                          then GetValue(l[1], r)

                          else NaN

            else Double.NaN;

def PHExitValue = if !IsNaN(PHExit)

                  then PHExit

                  else PHExitValue[1];

def PHExitBar = if (bar > n and

                    h == Highest(h, n) and

                    hh)

                then if l[1] < l

                then bar - 1

                else fold d = 0 to 20

                     with y = NaN

                     while IsNaN(y)

                     do if GetValue(l[1], d) < l

                        then GetValue(bar - 1, d)

                        else NaN

                else NaN;

# Pivot Low and Pivot Low Entry Variables

# Parent Pivot Low Variables

def p_ll = fold j = 1 to n + 1

           with q = 1

           while q

           do l < GetValue(l, -1);

def p_PivotL = if (bar > n and

                 l == Lowest(l, n) and

                 p_ll)

             then l

             else NaN;

def p_PLValue = if !IsNaN(p_PivotL)

              then p_PivotL

              else p_PLValue[1];

def p_PLBar = if !IsNaN(p_PivotL)

              then bar

              else nan;



# Pivot Low Variables

def ll = fold jj = 1 to n + 1

         with qq = 1

         while qq

         do l < GetValue(l, -1);

def PivotL = if (bar > n and

                 l == Lowest(l, n) and

                 ll)

             then l

             else NaN;

def PLValue = if !IsNaN(PivotL)

              then PivotL

              else PLValue[1];

def PLBar = if !IsNaN(PivotL)

            then bar

            else nan;



# Pivot Low Entry Variables

def PLEntry = if (bar > n and

                  l == Lowest(l, n) and

                  ll)

              then if h[1] > h

              then h[1]

              else fold t = 0 to 20

                   with w = NaN

                   while IsNaN(w)

                   do if GetValue(h[1], t) > h

                      then GetValue(h[1], t)

                      else NaN

              else NaN;

def PLEntryValue = if !IsNaN(PLEntry)

                   then PLEntry

                   else PLEntryValue[1];

def PLEntryBar =  if (bar > n and

                  l == Lowest(l, n) and

                  ll)

                  then if h[1] > h

                       then bar - 1

                       else fold u = 0 to 20

                            with z = NaN

                            while IsNaN(z)

                            do if GetValue(h[1], u) > h

                               then GetValue(bar - 1, u)

                               else NaN

              else NaN;



# Plots



plot R1 = if bar >= HighestAll(PHBar)

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

                          then PHValue

                          else nan)

         else nan;

R1.SetDefaultColor(Color.dark_red);

R1.SetLineWeight(1);

plot ShortEntry = if bar >= HighestAll(PHexitBar)

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

                                   then PHExitValue

                                   else nan)

                   else nan;

ShortEntry.SetDefaultColor(Color.red);

def SE =(if isNaN(ShortEntry[1]) then ShortEntry else Double.NaN);

addchartBubble(LabelsOn and ShortEntry, SE,"S/E",color.red);



plot S1 = if bar >= HighestAll(PLBar)

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

                          then PLValue

                          else nan)

          else nan;

S1.SetDefaultColor(Color.dark_red);

S1.SetLineWeight(3);

plot LongEntry = if bar >= HighestAll(PLEntryBar)

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

                                    then PLEntryValue

                                    else nan)

                    else nan;

LongEntry.SetDefaultColor(Color.GREEN);

LongEntry.SetStyle(Curve.long_DASH);

LongEntry.SetLineWeight(2);

def LE =(if isNaN(LongEntry[1]) then LongEntry else Double.NaN);

addchartBubble(LabelsOn and LongEntry, LE,"L/E",color.green);



plot priceLine = HighestAll(if IsNaN(c[-1])

                            then c

                            else Double.NaN);

priceLine.SetStyle(Curve.SHORT_DASH);

priceLine.SetLineWeight(1);

priceLine.SetDefaultColor(Color.CYAN);

plot UpArrow = if c crosses above LongEntry and FE > .5

               then l

               else Double.NaN;

UpArrow.SetPaintingStrategy(PaintingStrategy.ARROW_UP);

UpArrow.SetLineWeight(5);

UpArrow.SetDefaultColor(Color.GREEN);

plot DnArrow = if c crosses below ShortEntry and ((FE > .618)

                or (FE < .382))

               then h

               else Double.NaN;

DnArrow.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);

DnArrow.SetLineWeight(5);

DnArrow.SetDefaultColor(Color.RED);



plot Fifty = (LongEntry - S1) + LongEntry;

Fifty.setdefaultcolor(color.yellow);

Fifty.SetStyle(Curve.long_DASH);

Fifty.setlineweight(2);



plot SeventyFive = (LongEntry - S1) + Fifty;

SeventyFive.setdefaultcolor(color.cyan);

SeventyFive.SetStyle(Curve.long_DASH);

SeventyFive.setlineweight(2);



plot Target = (LongEntry - S1) + SeventyFive;

Target.setdefaultcolor(color.red);

Target.SetStyle(Curve.long_DASH);

Target.setlineweight(3);

def LT =(if isNaN(TARGET[1]) then Target else Double.NaN);

addchartBubble(LabelsOn and Target, LT,"LONG TARGET: " + asDollars(LT),color.red);



plot BreakDownTarget = S1 -(LongEntry - S1);

BreakDownTarget.setdefaultcolor(color.dark_Green);

BreakDownTarget.SetStyle(Curve.long_DASH);

BreakDownTarget.setlineweight(3);



plot S_Fifty = ShortEntry - (R1 - ShortEntry);

S_Fifty.setdefaultcolor(color.yellow);

S_Fifty.setlineweight(1);



plot S_SeventyFive = S_Fifty - (R1 - ShortEntry);

S_SeventyFive.setdefaultcolor(color.cyan);

S_SeventyFive.setlineweight(1);



plot S_ShortTarget = S_SeventyFive - (R1 - ShortEntry);

S_ShortTarget.setdefaultcolor(color.green);

S_ShortTarget.setlineweight(1);

def ST =(if isNaN(S_ShortTarget[1]) then S_ShortTarget else Double.NaN);

addchartBubble(LabelsOn and S_ShortTarget, ST,"SHORT TARGET: " + asDollars(ST),color.light_green);



# Alerts

Alert(AlertsOn and UpArrow, " ", Alert.Bar, Sound.ding);

Alert(AlertsOn and DnArrow, " ", Alert.Bar, Sound.ding);
Thanks for sharing this. What is the difference between this study and the Auto Fibs that you posted today? Arent the levels kind of similar?
 
Thanks for sharing this. What is the difference between this study and the Auto Fibs that you posted today? Arent the levels kind of similar?
Kind of similar, but the difference is one is 4 quadrant even lines, while the other are many fib levels.
 
You can unselect the lines you don't want to see.
my bad man i was being a bot, i just turned off all the short entry plots n bubbles. i did have a question tho, can this be applied in the watchlist. everytime i apply the autoquand scanner it brings up a weird list up and dont seem like theyre close to breaking out anytime soon.
 
my bad man i was being a bot, i just turned off all the short entry plots n bubbles. i did have a question tho, can this be applied in the watchlist. everytime i apply the autoquand scanner it brings up a weird list up and dont seem like theyre close to breaking out anytime soon.
Yes, You can add this to a scan and save to a watchlist.
 
so from what i seen you can apply certain time frames on the watchlist so yea arrows being triggered maybe on a 30min or 15min wouldnt be so bad. also its small cap season upon us. check out $bbig because it seems like the quadrantlines wasnt able to keep up idk if you may have any tweak for that
 
so from what i seen you can apply certain time frames on the watchlist so yea arrows being triggered maybe on a 30min or 15min wouldnt be so bad. also its small cap season upon us. check out $bbig because it seems like the quadrantlines wasnt able to keep up idk if you may have any tweak for that
It just shows that small cap has larger swings than large cap. Did you see the green arrow on the daily chart on 8/24? It would have been a fantastic trade!
 
yes i did see it, i was in it too but was just using it as an example because the long target was 4.77 and it continued squeezing and theres nothing stopping it from 9+ now
 

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
361 Online
Create Post

The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
  • Exclusive indicators
  • Proven strategies & setups
  • Private Discord community
  • ‘Buy The Dip’ signal alerts
  • Exclusive members-only content
  • Add-ons and resources
  • 1 full year of unlimited support

Frequently Asked Questions

What is useThinkScript?

useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.

How do I get started?

We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.

If you are new, or just looking for guidance, here are some helpful links to get you started.

What are the benefits of VIP Membership?
VIP members get exclusive access to these proven and tested premium indicators: Buy the Dip, Advanced Market Moves 2.0, Take Profit, and Volatility Trading Range. In addition, VIP members get access to over 50 VIP-only custom indicators, add-ons, and strategies, private VIP-only forums, private Discord channel to discuss trades and strategies in real-time, customer support, trade alerts, and much more. Learn all about VIP membership here.
How can I access the premium indicators?
To access the premium indicators, which are plug and play ready, sign up for VIP membership here.
Back
Top