[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] New user needs help with Equity() example malfunction...



PureBytes Links

Trading Reference Links

I cut and pasted the following AFL from one of the examples somewhere
--I can't find it again at present, so I will include the AFL with
this post. I have tried to make it run, but it has a problem that I
can not figure out --perhaps I do not understand something.  The AFL
allows you to use the Parameters to manually set buy/sell/short/cover
points on your chart and shows the equity curve.  It works fine for
buy and sell.  However, any short or cover always shows as a redundant
signal no matter what order I put them in.  I have gone over the
syntax and can not find anything that is not symetrical to the
buy/sell cases.  I am not sure if it a problem with the AFL, or with
me.  I would appreciate any help, or just testing to see if it works
for someone else.

Thanks,
Dennis

Here is the AFL --watch for line wraps.

_SECTION_BEGIN("EquityCurve");
Buy = 1;
Sell = Cover = Short = 0;

bh = Equity( 0, 0 );

setbuy = ParamTrigger("Buy", "Buy" );
setsell = ParamTrigger("Sell", "Sell" );
setshort = ParamTrigger("Short", "Short" );
setcover = ParamTrigger("Cover", "Cover" );
clear = ParamTrigger("Clear", "Clear" );
clearall = ParamTrigger("Clear All", "Clear All" );

bi = BarIndex();
sbi = SelectedValue( bi );
qty = LastValue( bi );

Varname = Name() + sbi;

if( setbuy ){ StaticVarSet( Varname, 1 );} 
if( setsell ){ StaticVarSet( Varname, -1 );} 
if( setshort ){ StaticVarSet( Varname, -2 );} 
if( setcover ){ StaticVarSet( Varname, 2 );} 
if( clear ){ StaticVarRemove( Varname );} 
if( clearall )
{ for( i = 0; i < qty; i++ ) StaticVarRemove( Name() + i);} 

Buy = Sell = Short = Cover = 0;

for( i = 0; i < qty; i++ )
{
  sig = StaticVarGet( Name() + i );
  
  if( sig == 1 ) Buy[ i ] = True;
  if( sig == -1 ) Sell[ i ] = True;
  if( sig == -2 ) Short[ i ] = True;
  if( sig == 2 ) Cover[ i ] = True;
} 

Color = IIf( Buy OR Cover, colorGreen, colorRed );

RedundantBuy = Buy;
RedundantSell = Sell;
RedundantShort = Short;
RedundantCover = Cover;

e = Equity( 1, 0 );

Plot( bh, "Buy-and-Hold", colorBlue ); 
Plot( e, "Equity", colorRed ); 

PlotShapes( Buy * shapeUpArrow +
            Sell * shapeDownArrow +
            Short * shapeHollowDownArrow +
            Cover * shapeHollowUpArrow,
            Color, 0, e, -12 );

RedundantBuy = RedundantBuy AND NOT Buy;
RedundantSell = RedundantSell AND NOT Sell;
RedundantShort = RedundantShort AND NOT Short;
RedundantCover = RedundantCover AND NOT Cover;

PlotShapes( RedundantBuy * shapeSmallUpTriangle +
            RedundantSell * shapeSmallDownTriangle +
            RedundantShort * shapeHollowSmallDownTriangle +
            RedundantCover * shapeHollowSmallUpTriangle,
            Color, 0, e, -30 );

GraphXSpace = 10;
_SECTION_END();