```
input n = 5;#hint n: For pivot and standard deviation
input addAtPercentStDev = 75;#hint addAtPercentStDev: Add at this percent of standard deviation below previous low
input initialLots = 4;#hint initialLots: Set to preference
input lotsToAdd = 2;#hint lotsToAdd: Number of lots to add on a pull back
input stDevMult = 2.0;#hint stDevMult: trail stop multiplier
input labels = no;
def openingLots = Max(4, initialLots);
def addedlots = Max(2, lotsToAdd);
AddLabel(initialLots < openingLots, " Error: Initial lots must be 4 or more ", Color.Cyan);
AddLabel(lotsToAdd < addedLots, " Error: Lots to add must be 2 or more ", Color.Cyan);
def h = high;
def l = low;
def c = close;
def nan = Double.NaN;
def tick = TickSize();
def x = BarNumber();
def stDev = CompoundValue(1, StDev(c, n), nan);
def hh = h == Highest(h, n);
def LPx = if hh then x else nan;
def LP_low = if !IsNaN(LPx) then l else LP_Low[1];
def LP_High = if !IsNaN(LPx) then h else LP_High[1];
def confirmation_count = if hh then 0 else
if c crosses below LP_Low
then confirmation_count[1] + 1
else confirmation_count[1];
def confirmationX = if confirmation_count crosses above 0
then x else nan;
def confirmed = confirmation_count crosses above 0;
def ro;
def stc;
def trail;
def retrace;
if confirmed {
ro = Round((c - (LP_High - c) / (openingLots - 2)) / tick, 0) * tick;
stc = LP_High;
trail = LP_High;
retrace = LP_High;
}else{
ro = CompoundValue(1, ro[1], nan);
stc = stc[1];
trail = Round(Min(trail[1], h[1] + stDev[1] * stDevMult) / tick, 0) * tick;
retrace = Round(Min(retrace[1], h[1] + StDev[1] * addAtPercentStDev / 100) / tick, 0) * tick;
}
def ro_reached = if confirmed then 0 else
if l < ro then 1 else ro_reached[1];
def added = if confirmed then 0 else
if h crosses above retrace then 1 else added[1];
def trail_hit = if confirmed then 0 else
if c > trail then 1 else trail_hit[1];
def stop_hit = if confirmed then 0 else
if h > stc then 1 else stop_hit[1];
plot
PivotConfirmed = confirmed;
PivotConfirmed.SetDefaultColor(Color.Light_Red);
PivotConfirmed.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
plot
BuyToOpen = if confirmed then c else nan;
BuyToOpen.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
BuyToOpen.SetDefaultColor(Color.Light_Green);
plot
SellToClose = if !stop_hit or stop_hit crosses above 0 then stc else nan;
SellToClose.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
SellToClose.SetDefaultColor(Color.RED);
plot
TrailingStop = if ! trail_hit or trail_hit crosses above 0 then trail else nan;
TrailingStop.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
TrailingStop.SetDefaultColor(Color.Pink);
plot
Add = if !added or added crosses above 0 then retrace else nan;
Add.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
Add.SetDefaultColor(Color.Dark_Green);
plot
RiskOut = if !ro_reached or ro_reached crosses above 0 then ro else nan;
RiskOut.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
RiskOut.SetDefaultColor(CreateColor(215, 215, 215));
AddLabel(labels and BuyToOpen, " BTO "+ openingLots +" = " + BuyToOpen + " ", Color.Light_Green);
Addlabel(labels and BuyToOpen, " ", CreateColor(0, 0, 0));
AddLabel(labels and ro_reached and Add, " Add "+ addedlots +" at = " + Add + " ", Color.Dark_Green);
AddLabel(labels and ro_reached and Add, " ", CreateColor(0, 0, 0));
AddLabel(labels and RiskOut, " Sell " + (openingLots - 2) + " = " + ro + " ", CreateColor(215, 215, 215));
AddLabel(labels and RiskOut, " ", CreateColor(0, 0, 0));
AddLabel(labels and ro_reached and TrailingStop, " Sell "+(1+addedLots-1)+" at = "+trail+" ", Color.Pink);
Addlabel(labels and ro_reached and TrailingStop, " ", CreateColor(0, 0, 0));
AddLabel(labels and SellToClose, " Sell All = " + stc + " ", Color.Red);
Addlabel(labels and SellToClose, " ", CreateColor(0, 0, 0));
#f/ Pivot Confirmation With Trading Levels
```