|
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
|
- [amibroker] Discretionary Equity Steve Dugas
- Re: [amibroker] Discretionary Equity Tomasz Janeczko
- [amibroker] GetCursorMouseButtons() cstrader232
