| 
 I have made a few changes to TJ's Discretionary 
Equity code if anyone is interested. Chart now shows date and 3rd line for 
"always out" ( interest, fixed rate of return ). Start date changed to 
FVB or Beginning Range Marker. New params for Points/Pct, Margin and 
Positionsize. I also have a couple of questions if anyone 
knows: 
  
1. It appears that AB ignores Positionsize 
unless Margin = 100. Is this correct? 
2. It appears Positionsize is ignored for 
sell/cover. Is this correct? 
  
Thank you! 
  
Steve 
  
==================================================================================== 
// Discretionary Equity 
// in AA settings, set trades to "close"/delay of 0 so sigs aren't delayed 
and equity is calculated with close instead of open. 
/* To place signal for particular bar, first select the bar by clicking on 
the chart once in desired place and then press one of the 
buttons in Parameter dialog. Red line shows discretionary system Equity while 
blue line will show Buy-and-Hold Equity. Valid trade 
entry and exit signals are marked with arrows while redundant signals (for 
example a Buy that comes when the system is already during 
the long position) are marked with triangles. */ 
// set chart options 
SetChartOptions ( 0, 
chartShowDates|chartShowArrows|chartWrapTitle );
GraphXSpace =  Param( "GraphXSpace", 
7, -50, 100, 1 );
// get params 
scalePts =  ParamToggle( 
"Scale $/%", "%|$", 1 );
Margin =  Param( 
"Margin", 100, 50, 100, 1 
);
SetOption ( "AccountMargin", Margin );
if  ( Margin == 100 )
PositionSize =  Param( "Position Size ( set margin to 100 
)", -100, -100, 
1000000, 1 );
setcover =  ParamTrigger("Cover", 
"Cover" );
setbuy =  ParamTrigger("Buy", 
"Buy" );
setsell =  ParamTrigger("Sell", 
"Sell" );
setshort =  ParamTrigger("Short", 
"Short" );
clear =  ParamTrigger("Clear", 
"Clear" );
clearall =  ParamTrigger("Clear All", 
"Clear All" 
);
// set range 
dn =  DateNum();
bi =  BarIndex();
from =  LastValue( 
ValueWhen( bi == 
Status( "FirstVisibleBar" ), dn ) );
to =  LastValue( 
ValueWhen( bi == 
Status( "LastVisiblebar" ) - 1, dn ) );
if  ( BeginValue( bi ) )
{ 
from =  BeginValue( dn 
);
to =  EndValue( dn 
);
} 
//set initial equity 
iEq =  GetOption( 
"InitialEquity" 
);
// calculate interest-only equity 
Buy  =  Sell =  Cover =  Short =  0;
ioEq =  Equity( 
0, 3, from, to );
ioChg = ( ioEq - iEq ) / iEq *  100;
// calculate buy-and-hold equity 
Buy  = dn == from; 
Sell = Cover = Short = 0; 
bhEq = Equity( 
0, 3, from, to ); 
bhChg = ( bhEq - iEq ) / iEq * 100; 
// calculate discretionary equity 
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;
} 
RedundantBuy = Buy; 
RedundantSell = Sell; 
RedundantShort = Short; 
RedundantCover = Cover; 
syEq =  Equity( 
1, 3, from, to );
syChg = ( syEq - iEq ) / iEq *  100;
// plot $/% arrays 
if  ( scalePts )
{ 
Plot( iEq, "", colorBrown, 
styleNoLabel );
Plot( syEq, 
EncodeColor( 
colorBlack ) + Date() + EncodeColor( 
colorBrightGreen ) + " $ 
Sys", colorBrightGreen );
Plot( bhEq, 
"$ B&H", 
colorRed );
Plot( ioEq, 
"$ Int", colorBlue 
);
SigColor =  IIf( 
Buy OR Cover, colorBrightGreen, colorRed 
);
Ypos = syEq; 
} 
else 
{ 
Plot( 0, "", colorBrown, styleNoLabel );
Plot( syChg, 
EncodeColor( 
colorBlack ) + Date() + EncodeColor( 
colorPaleGreen ) + " % Sys", colorPaleGreen );
Plot( bhChg, 
"% B&H", 
colorRose );
Plot( ioChg, 
"% Int", 
colorSkyblue );
SigColor =  IIf( 
Buy OR Cover, colorPaleGreen, colorRose 
);
Ypos = syChg; 
} 
// plot signals 
PlotShapes ( Buy * shapeUpArrow + 
Sell * shapeDownArrow + Short * shapeHollowDownArrow 
+ Cover * shapeHollowUpArrow, SigColor, 0, Ypos, -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, SigColor,  0, Ypos, -30 ); 
  
Please note that this group is for discussion between users only. 
 
To get support from AmiBroker please send an e-mail directly to  
SUPPORT {at} amibroker.com 
 
For other support material please check also: 
http://www.amibroker.com/support.html 
 
  
    
  
  
  
    SPONSORED LINKS
   
       
  
 
  
    
  YAHOO! GROUPS LINKS
 
 
    
 |