Fractal Pivot Strategy Mobile by Mobius

Jmo63

Jmo63

New member
Hello everyone, I am new here and don't have any experience in coding, it's like a foreign language to me, lol. I was looking for some help that would be greatly appreciated.

I am not sure where I found this code but I would like to see if I can get some help adding alerts when the arrows paint. And if possible, an option in the input window to turn them off and on.

On a side note, is there a script out there for a price-line that changes colors according to direction? e.g., red and green

Any help would be much appreciated. I would be willing to donate for any help. Thank you... here is the code.

Code:
# Fractal Pivot Strategy Mobile
# Mobius
# V01.11.2018
#Hint: Mobile applications don't always hold painting strategies as designed in the code. It may be necessary to manually change line types and arrow configurations in the User Interface.

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

# 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 p_R1 = if bar >= HighestAll(p_PHBar)
            then HighestAll(if isNAN(close[-1])
                            then p_PHValue
                            else nan)
            else nan;
p_R1.SetStyle(Curve.SHORT_DASH);
p_R1.SetLineWeight(3);
p_R1.SetDefaultColor(Color.GRAY);
plot R1 = if bar >= HighestAll(PHBar)
          then HighestAll(if isNaN(close[-1])
                          then PHValue
                          else nan)
         else nan;
R1.SetDefaultColor(Color.WHITE);
plot R1exitPoint = if bar >= HighestAll(PHexitBar)
                   then HighestAll(if isNaN(close[-1])
                                   then PHExitValue
                                   else nan)
                   else nan;
R1exitPoint.SetDefaultColor(Color.RED);
plot R1ShortTarget1 = if bar >= HighestAll(PHexitBar)
                      then HighestAll(if isNaN(close[-1])
                                      then PHExitValue - risk
                                      else nan)
                      else nan;
R1ShortTarget1.SetStyle(Curve.LONG_DASH);
R1ShortTarget1.SetDefaultColor(Color.RED);
plot p_S1 = if bar >= HighestAll(p_PLBar)
            then HighestAll(if isNaN(close[-1])
                            then p_PLValue
                            else nan)
            else nan;
p_S1.SetStyle(Curve.SHORT_DASH);
p_S1.SetLineWeight(3);
p_S1.SetDefaultColor(Color.GRAY);
plot S1 = if bar >= HighestAll(PLBar)
          then HighestAll(if isNaN(c[-1])
                          then PLValue
                          else nan)
          else nan;
S1.SetDefaultColor(Color.WHITE);
plot S1entryPoint = if bar >= HighestAll(PLEntryBar)
                    then HighestAll(if isNaN(c[-1])
                                    then PLEntryValue
                                    else nan)
                    else nan;
S1entryPoint.SetDefaultColor(Color.GREEN);
plot S1LongTarget1 = if bar >= HighestAll(PLEntryBar)
                     then HighestAll(if isNaN(c[-1])
                                     then PLEntryValue + risk
                                     else nan)
                     else nan;
S1LongTarget1.SetStyle(Curve.LONG_DASH);
S1LongTarget1.SetDefaultColor(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 S1entryPoint and FE > .5
               then l
               else Double.NaN;
UpArrow.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
UpArrow.SetLineWeight(3);
UpArrow.SetDefaultColor(Color.GREEN);
plot DnArrow = if c crosses below R1exitPoint and ((FE > .618)
                or (FE < .382))
               then h
               else Double.NaN;
DnArrow.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
DnArrow.SetLineWeight(3);
DnArrow.SetDefaultColor(Color.RED);
 
Last edited:
BenTen

BenTen

Administrative
Staff
VIP
I assume you'll be using this on the ToS mobile app? If so, alerts won't work.
 
Jmo63

Jmo63

New member
Actually no, I will be using it on the desktop TOS platform.
 
BenTen

BenTen

Administrative
Staff
VIP
@Jmo63 How do you want to get alerted? When price crosses a certain level?
 
Jmo63

Jmo63

New member
When the arrows paint with email, text, and desktop alert.
 
BenTen

BenTen

Administrative
Staff
VIP
@Jmo63 Add this to your script:

Code:
# Alerts
Alert(UpArrow, " ", Alert.Bar, Sound.Chimes);
Alert(DnArrow, " ", Alert.Bar, Sound.Bell);
You'll receive alerts for the stock you're currently watching on your chart. This doesn't support email or text alerts.
 
Jmo63

Jmo63

New member
Thank you @BenTen ... One question, this only alerts for the chart I have open? Not for other charts I have this indicator on in the background?
 
Jmo63

Jmo63

New member
Thank you, Mr. @BenTen and I will use what you gave me. Unfortunately, what I need are alerts for all charts that have this indicator applied, especially the ones in the background. I don't necessarily need the alert for the chart I am actually looking at, unless I step away from the computer. I appreciate your help...
 
Jmo63

Jmo63

New member
Thank you, Mr. @BenTen and I will use what you gave me. Unfortunately, what I need are alerts for all charts that have this indicator applied, especially the ones in the background. I don't necessarily need the alert for the chart I am actually looking at, unless I step away from the computer. I appreciate your help...
Actually it does work with charts in the background which is great. I have several charts set up in the flexible grid and even if I maximize just one chart, I get alerts from the others. Thanks again Mr. @BenTen
 
B

Bendu

New member
VIP
Is there a way to keep the previous pivots as a line across the chart?
 

Similar threads

Top