Perhaps this ranking function is of help to you:
function
XSecRanksVarSet(List, Crit, Lookback)
{
global PercRank;
if
(Crit==1) CurrInd=RSI(Lookback); else if (Crit==2)
CurrInd=ROC(C,Lookback);
for (j = 0;( Naam = StrExtract(
List, j ) ) != "" ; j++ )
{
SetForeign(Naam, True);
if (Crit==1)
ChoiceVar=RSI(Lookback);
else if (Crit==2)
ChoiceVar=ROC(C,Lookback);
VarSet("PeerInd"+j,
Nz(ChoiceVar,LastValue(MA
(ChoiceVar,Lookback))));
RestorePriceArrays();//
to get out the influence of
SetForeign
}
Rank=1;
for (i=0;(
Naam2 = StrExtract( List, i ) ) != "" ; i++ )
{
if (Name()!=Naam2)
Rank=Rank + IIf( CurrInd >
VarGet("PeerInd"+i),1,0);
//if
(RankCrit==0) Rank=Rank + IIf( CurrInd >
VarGet("PeerInd"+i),1,0);
//else Rank=Rank + IIf( CurrInd <
VarGet
("PeerInd"+i),1,0);
}
PercRank=Rank/i;
return
Rank;
}
PS
--- In amibroker@xxxxxxxxxps.com,
"David Smith" <david.smith5@...>
wrote:
>
> Hmm.. I
understand your approach I think, but it still looks to me
like
the
> ranking using ref-1 only used a previous value for rank & will
only
be
> applied to successfully entered trades only. In terms of
reseverd
equity, I
> have a broker (I am trading CFD's by the way)
who will take any
number of
> limit orders & won't reserve
capital for them, they just stop
entering
> sucessful limit orders
when the equity is used up, so I don't want
equity
> reserved. I
have heard it can be done....there must be a way !
>
>
Dave
>
>
> -----Original Message-----
> From: amibroker@xxxxxxxxxps.com
[mailto:amibroker@xxxxxxxxxps.com]
On Behalf
> Of Edward Pottasch
> Sent: Thursday, 12 April 2007
8:14 PM
> To: amibroker@xxxxxxxxxps.com
>
Subject: Re: [amibroker] Ranking trade signals before entry day
>
>
>
>
>
> PositionScore is not after the
fact if you use e.g.
>
> PositionScore =
ref(50-RSI(15),-1);
>
> So setting up your backtest this way
the backtester will ensure by
itself
> that you will not enter more
positions then the backtester is setup
for.
>
> As for an
entry on the limit: I wrote code for that a while back.
The trick
>
I used is to entry a "void trade" if the limit is not hit. The
backtester
> will then set apart funds for this trade and therefor
will not
enter another
> trade. For this "void trade" the entry and
exit are at the same
point. So
> then in the backtest you will only
pay commision for this trade not
> affecting the backtest very much. See
attached image. The "void
trade" is
> shown as a square. The buy
limit is not hit. Still the backtester
will use
> this trade because
the entry and exit is at the same point in time.
>
> I'll post an
example later,
>
> Ed
>
>
>
>
> ----- Original Message -----
> From: David
<mailto:david.smith5@xx.>
> To: amibroker@xxxxxxxxx
<mailto:amibroker@xxxxxxxxxps.com>
ps.com
> Sent: Thursday, April 12, 2007 11:53 AM
> Subject:
[amibroker] Ranking trade signals before entry day
>
>
>
Hi,
>
> I have a reversal system I have coded into AB where I
know at times
it
> gives more triggers than I can have equity to
enter orders in the
next
> day. My entry is based on limit orders
away from today's price so I
> don't know which ones will actually be
entered before hand. I may
get
> say 10 triggers, but only want to
enter 6 orders to manage risk, of
> which all, any or none may get
filled.
>
> I am looking for help as to how to code to rank the
triggers, since
> ranking the trades using positionscore is after the
fact.
>
> eg the basic structure of the code is:
> Trigger
= (ref(C,-3) - C) > 2*atr(5); // example only
> Buy =
ref(Trigger,-1) and L < ref(L - 1*atr(5),-1);
> BuyPrice =
min(Open, ref(L-1*atr(5),-1)); //include gaps
>
> Any help
is appreciated,
>
> Regards, David
>