EnableTextOutput( 3 ); // enable HTML output into report (Version 5.84 or higher!) eq = C; yr = Year(); mo = Month(); YearChange = yr != Ref( yr, 1 ); MonChange = mo != Ref( mo, 1 ); FirstYr = 0; LastYr = 0; startbar = 0; //////////////////////////// // SKIP non-trading bars //////////////////////////// for ( i = 0; i < BarCount; i++ ) { if ( eq[ i ] ) { startbar = i; break; } } //////////////////////////// // collect yearly / monthly changes in equity // into dynamic variables //////////////////////////// LastYrValue = eq[ startbar ]; LastMoValue = eq[ startbar ]; MaxYrProfit = MinYrProfit = 0; MaxMoProfit = MinMoProfit = 0; for ( i = startbar + 1; i < BarCount; i++ ) { if ( YearChange[ i ] || i == BarCount - 1 ) { Chg = 100 * ( -1 + eq[ i ] / LastYrValue ); VarSet( "ChgYear" + yr[ i ], Chg ); MaxYrProfit = Max( MaxYrProfit, Chg ); MinYrProfit = Min( MinYrProfit, Chg ); if ( FirstYr == 0 ) FirstYr = yr[ i ]; LastYr = yr[ i ]; LastYrValue = eq[ i ]; } if ( MonChange [ i ] || i == BarCount - 1 ) { mon = mo[ i ]; Chg = 100 * ( -1 + eq[ i ] / LastMoValue ); VarSet( "ChgMon" + yr[ i ] + "_" + mon, Chg ); VarSet( "SumChgMon" + mon, Chg + Nz( VarGet( "SumChgMon" + mon ) ) ); VarSet( "SumMon" + mon, 1 + Nz( VarGet( "SumMon" + mon ) ) ); MaxMoProfit = Max( MaxMoProfit, Chg ); MinMoProfit = Min( MinMoProfit, Chg ); LastMoValue = eq[ i ]; } } MonthNames = "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec"; function GenProfitTableHTML( ) { printf( "
" + Colname + " | " ); } printf( "|||||
" ); else printf( " | |||||
" ); printf( "%g | ", y ); for ( m = 1; m <= 12; m++ ) { Chg = VarGet( "ChgMon" + y + "_" + m ); if ( NOT IsNull( Chg ) ) { if ( Chg >= 0 ) printf( "%.1f%% | ", Chg ); else printf( "%.1f%% | ", Chg ); } else printf( "N/A | " ); } if ( y % 2 ) printf( "" ); else printf( " | " ); x = VarGet( "ChgYear" + y ); if ( x >= 0 ) printf( "%.1f%% | ", x ); else printf( "%.1f%%", x ); printf( "
Avg | " ); for ( m = 1; m <= 12; m++ ) { x = Nz( VarGet( "SumChgMon" + m ) / VarGet( "SumMon" + m ) ); if ( x >= 0 ) printf( "%.1f%% | ", x ); else printf( "%.1f%% | ", x ); } printf( "" ); printf( " |