Hi everyone.
Okay latest version, with no luck as yet. Still trying to plot the lowest trough(zig cross) since a new peak has formed(red dots), in an uptrend (trailing long stop). I think I'm having issues with the startbar and endbar in the formula below.
Any assistance would be greatly appreciated.
function vstop_func(trBull,trBear)
{
trailArray[0]=C[0];
for(i=1;i<BarCount;i++)
{
prev=trailArray[i-1];
if(C[i]>prev AND C[i-1]>prev)
{
trailArray[i]=Max(prev,C[i]-trBull[i]);
}
else if(C[i]<prev AND C[i-1]< prev)
{
trailArray[i]=Min(prev,C[i]+trBear[i]);
}
else if (C[i]>prev)
{
trailArray[i]=C[i]-trBull[i];
}
else
{
trailArray[i]=C[i]+trBear[i];
}
}
return trailArray;
}
//////////////////////////////////////////////////////////////////
////////////////////////Short Term Trail/////////////////////////
ST_TRAIL=Param("ST Trail (hrs)",2,1,10,1)*60;
ST_TRAIL_1=in1Minute*ST_TRAIL;
TimeFrameSet(ST_TRAIL_1);
ST_Periods=Param("ST_periods",25,1,500,1);
ST_dev=Param("ST_deviation",2.5,0.05,4,0.05);
ST_trBull=ST_dev*ATR(ST_Periods);
ST_trBear=ST_dev*ATR(ST_Periods);
ST_trailArray = vstop_func(ST_trBull,ST_trBear);
ST_ts=IIf(ST_trailArray>C,ST_trailArray,Null);
ST_tl=IIf(ST_trailArray<C,ST_trailArray,Null);
TimeFrameRestore();
ST_ts=TimeFrameExpand(ST_ts,ST_TRAIL_1,expandLast);
ST_tl=TimeFrameExpand(ST_tl,ST_TRAIL_1,expandLast);
Plot(ST_ts , "", colorPink,0,0,0,0,0,3 );
Plot(ST_tl , "", colorPink,0,0,0,0,0,3 );
Zig_Z = Zig(C,2);
TRS = Cross(Zig_Z,Ref(Zig_Z,-1)) AND ST_tl;
TRS_val = ValueWhen(TRS,L) AND ST_tl;
major_peaks = Peak(Zig_Z,3);
New_peak = Cross(major_peaks,Ref(major_peaks,-1)) OR Cross(Ref(major_peaks,-1),major_peaks);
Previous_Peak = BarsSince(New_peak) < BarsSince(New_peak);
Peak_line = major_peaks == Ref(major_peaks,-1);
Up_peak = Cross(major_peaks,Ref(major_peaks,-1));
dn_peak = Cross(Ref(major_peaks,-1),major_peaks);
/// @link https://forum.amibroker.com/t/find-out-highest-high-and-lowest-low-value-from-a-specific-date-range/14356
StartBar = up_peak;
EndBar = Ref(up_peak,1);
myL = ValueWhen( EndBar, LowestSince( StartBar, TRS_val ) ) AND ST_tl;
PlotShapes((myL ) * shapeSmallSquare, colorRed, 0, L );
/// @link https://forum.amibroker.com/t/lowest-price-in-an-array/25361/2
//Next_up_peak = Ref(Up_peak,1) == ST_tl;
//is_lastbar = BarIndex() == LastValue(BarIndex());
//dt = DateTime() ;
//ll_dt =Ref(dt, -LowestSinceBars(Up_peak,L));
////valwhen_ll_dt = ValueWhen(Next_up_peak OR is_lastbar, ll_dt, 0);
//valwhen_ll_dt = ValueWhen(Next_up_peak , ll_dt , 0);
//PlotShapes((dt == valwhen_ll_dt AND ST_tl ) * shapeSmallSquare, colorRed, 0, L );
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
Plot(Zig_Z,"",colorAqua,styleLine,0,0,0,0,3);
Plot(major_peaks,"",colorYellow,styleLine,0,0,0,0,4);
//PlotShapes((TRS) * shapeSmallSquare, colorWhite, 0, L );
PlotShapes(IIf(New_peak,shapeCircle,0),colorRed,0,major_peaks,20);
PlotShapes(IIf(Peak_line,shapeSmallCircle,0),colorLightBlue,0,major_peaks,10);
