#### OptionsPirate

##### 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.

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: