Pivot Confirmation with Trading Levels

J007RMC

J007RMC

Active member
2019 Donor
VIP
Great Script I added this to my chart... the short lines not the advanced market moves.



Code:
plot Data = close;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 = yes;

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 ll = l == Lowest(l, n);
def LPx = if ll 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 ll then 0 else 
if c crosses above LP_high 
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 + (c - LP_Low) / (openingLots - 2)) / tick, 0) * tick;
stc = LP_Low;
trail = LP_Low;
retrace = LP_Low;
}else{
ro = CompoundValue(1, ro[1], nan);
stc = stc[1];
trail = Round(Max(trail[1], l[1] - stDev[1] * stDevMult) / tick, 0) * tick; 
retrace = Round(Max(retrace[1], l[1] - StDev[1] * addAtPercentStDev / 100) / tick, 0) * tick; 
}

def ro_reached = if confirmed then 0 else 
if h > ro then 1 else ro_reached[1];
def added = if confirmed then 0 else
if l crosses below 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 l < stc then 1 else stop_hit[1];


plot 
PivotConfirmed = confirmed;
PivotConfirmed.SetDefaultColor(Color.Light_Green);
PivotConfirmed.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);

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
 
Last edited by a moderator:
J007RMC

J007RMC

Active member
2019 Donor
VIP
Interesting to note the advanced market moves indicator fired along with the pivot script arrow on the hourly.
 
R

RickAns

Member
VIP
I am liking this. Thanks for sharing, J007RMC.

My coding skills are lacking - just starting to learn. I have tried to insert BUY / SELL commands to use the FloatingPL but just not getting it right. Would you please help? The following seems off and I know it can be written better to work with what you have done. I'm not sure how to adapt this to your initial order, the add to order, plus stops and trailing stops.

AddOrder(condition = confirmed, type = OrderType.BUY_TO_OPEN, price = close, name = "LE");
AddOrder(condition = stop_hit, type = OrderType.SELL_TO_CLOSE, price = close, name = "LX");
AddOrder(condition = trail_hit, type = OrderType.SELL_TO_CLOSE, price = close, name = "TrailStop");

Thanks,
Rick
 

Similar threads

Top