i adjusted the code. I almost thought I found the Holy Grail
many system developers know the feeling I guess. I found the Holy Grail and I posted it on the forum, how stupid can one be?
There was an error in there that when a signal appeared at the peak or trough itself, it would disappear. I corrected for that. Not sure if there are more problems. If you find 1 let me know
SetChartBkColor( ColorRGB( 0, 0, 0 ) );
SetChartOptions( 0, chartShowArrows | chartShowDates );
Plot( C, "C", colorWhite, styleCandle, Null, Null, 0, 0, 1 );
pr = Param( "ZigZag change amount", 5, 0.05, 20, 0.05 );
bi = BarIndex();
fvb = FirstVisibleValue( bi );
lvb = LastVisibleValue( bi );
x = C;
pk = PeakBars( x, pr ) == 0;
tr = TroughBars( x, pr ) == 0;
for( i = 0; i < 2; i++ )
{
VarSet( "px" + i, ValueWhen( pk, bi, i ) );
VarSet( "tx" + i, ValueWhen( tr, bi, i ) );
VarSet( "ph" + i, ValueWhen( pk, x, i ) );
VarSet( "tl" + i, ValueWhen( tr, x, i ) );
}
zzHiLo = Zig( x, pr );
PeakVal = Peak( x, pr );
TroughVal = Trough( x, pr );
validUp = Troughval + ( TroughVal / 100 ) * pr;
validDn = Peakval - ( PeakVal / 100 ) * pr;
Buy = ( ( Cross( C, validUp ) || C > validUp ) && tx1 > px1 ) || ( ( Cross( C, validUp ) || C > validUp ) && tx1 < px1 && pk );
BuyPrice = C;
Short = ( ( Cross( validDn, C ) || C < validDn ) && px1 > tx1 ) || ( ( Cross( validDn, C ) || C < validDn ) && px1 < tx1 && tr );
ShortPrice = C;
Buy = ExRem( Buy, Short );
Short = ExRem( Short, Buy );
Sell = Short; SellPrice = ShortPrice;
Cover = Buy; CoverPrice = BuyPrice;
PlotShapes( IIf( Buy, shapeUpArrow, shapeNone ), ColorRGB( 0, 250, 250 ), 0, L, -15 );
PlotShapes( IIf( Buy, shapeSmallSquare, shapeNone ), colorLightBlue, 0, BuyPrice, 0 );
PlotShapes( IIf( Short, shapeDownArrow, shapeNone ), ColorRGB( 250, 250, 0 ) , 0, H, -15 );
PlotShapes( IIf( Short, shapeSmallSquare, shapeNone ), colorOrange, 0, SellPrice, 0 );
Plot( zzHiLo, "", colorBlue , styleNoLabel );
Plot( validUp, "", colorBrightGreen, styleDashed | styleNoRescale, Null, Null, 0, 0, 1 );
Plot( validDn, "", colorRed, styleDashed | styleNoRescale, Null, Null, 0, 0, 1 );
ft = "Tahoma";
sz = 10;
clr1 = ColorRGB( 0, 0, 0 );
clr2 = ColorRGB( 250, 250, 250 );
for( i = fvb; i < lvb; i++ )
{
if( pk[i] )
{
str = "Top";
PlotTextSetFont( str, ft, sz, i, H[i], clr1, clr2, 20 - sz );
}
if( tr[i] )
{
str = "Bot";
PlotTextSetFont( str, ft, sz, i, L[i], clr1, clr2, -20 );
}
}