PureBytes Links
Trading Reference Links
|
Hi Stephan,
The code below will do #'s 1 and 2 - it's getting late now, maybe I will try
to add #3 tomorrow. BTW - on my universe of 1600+ stocks, it only returns
5 - if you want to be rewarded with a nice long results list, you will have
to lose that "winning attitude"! : - )
Steve
// user defined params
MinTrades = 10;
MinPctWinners = 50;
BestEquity = 0;
BestRange = 0;
for( Range = 5; Range < 100; Range++ )
{
Buy = Cross( Close, MA( Close, Range ) );
Sell = Cross( MA( Close, Range ), Close );
Le = LastValue( Equity() );
if( Le > BestEquity )
{
BestEquity = Le;
BestRange = Range;
}
}
Buy = Cross( Close, MA( Close, BestRange ) );
Sell = Cross( MA( Close, BestRange ), Close );
MyEquity = Equity();
BuyEquity = IIf( Buy, MyEquity, 0 );
SellEquity = IIf( Ref( Sell, -1 ), MyEquity, 0 ); // assumes 1 day delay
Profit = IIf( SellEquity, SellEquity - ValueWhen( BuyEquity, BuyEquity ),
0 );
Winners = IIf( Profit > 0, 1, 0 );
Losers = IIf( Profit < 0, 1, 0 );
NumWinners = Cum( Winners );
NumLosers = Cum( Losers );
PctWinners = NumWinners / ( NumWinners + NumLosers ) * 100;
NumTrades = NumWinners + NumLosers;
Filter = BarIndex() == BarCount - 1
AND Equity() > 14000
AND NumTrades > MinTrades
AND PctWinners > MinPctWinners;
AddColumn( BestRange, "Best Range" );
AddColumn( MyEquity, " My Equity" );
AddColumn( NumTrades, "Num Trades", 1.0 );
AddColumn( NumWinners, "Num Winners", 1.0 );
AddColumn( NumLosers, "Num Losers", 1.0 );
AddColumn( PctWinners, "Pct Winners" );
----- Original Message -----
From: "drsinfla" <drsteph@xxxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Tuesday, May 18, 2004 10:16 PM
Subject: [amibroker] Re: Auto optimization
> Answering my own post here for anyone else who comes along.
>
> Regards to question #1 - use the Cum(buy) function to count # of
> trades. This works ok for a moving average - may need to use an
> EXREM(buy) for other systems prone to generating multiple signals.
>
> Change Filter line to:
>
> Filter = (BarIndex() == BarCount - 1) AND Equity()>14000 AND Cum(buy)
> >10;
>
> & then add a column to see how many trades under the exploration at
> end (last line)
>
> AddColumn(Cum(Buy),"number of trades");
>
> Jury is still out on #2 -I think it can be done using equity()
> processing the array itself to get # of up equity trades and # of
> down equity trades to give me the winners percentage, but haven't
> figured out how yet.
>
> #3, still no clue.
>
> Stephen
>
> --- In amibroker@xxxxxxxxxxxxxxx, "drsinfla" <drsteph@xxxx> wrote:
> > I've been playing around with the for loop optimization done under
> > exploration from a prior 2003 post...
> >
> > Wondering how I would add the following criteria to the optimized
> > exploration in this fashion:
> >
> > 1. Only display securities which have >10 trades in the time
> period
> > analyzed
> >
> > 2. Only display securities which have >50% winning trades
> >
> > 3. Write a column showing maxDD.
> >
> > Any ideas? Code follows:
> >
> > ************************************
> >
> > bestequity = 0;
> > bestrange = 0;
> >
> > // optimization loop
> >
> > for( range = 5; range < 100; range ++ )
> > {
> >
> > Buy = Cross( Close, MA( Close, range ) );
> >
> > Sell = Cross( MA( Close, range ), Close );
> >
> > Le = LastValue( Equity() );
> >
> > if( Le > bestequity )
> > {
> > bestequity = Le;
> > bestrange = range;
> > }
> > }
> >
> > range = bestrange;
> >
> > Buy = Cross( Close, MA( Close, range ) );
> >
> > Sell = Cross( MA( Close, range ), Close );
> >
> > Filter = (BarIndex() == BarCount - 1) AND Equity()>14000;
> >
> > AddColumn( bestrange, "Best range" );
> >
> > AddColumn( Equity(), "Best Equity" );
>
>
>
> Send BUG REPORTS to bugs@xxxxxxxxxxxxx
> Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
> -----------------------------------------
> Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
> (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> --------------------------------------------
> Check group FAQ at:
http://groups.yahoo.com/group/amibroker/files/groupfaq.html
> Yahoo! Groups Links
>
>
>
>
>
Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/amibroker/
<*> To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|