PureBytes Links
Trading Reference Links
|
Title: Message
Graham,
You asked this question awhile back, and I've playing
with it on and off six months now.
I think I've come up with something and have been using
it for awhile.
function Hash()
{
C == Ref(C, -1)
AND L == Ref(L, -1)
AND H == Ref(H, -1)
AND O == Ref(O, -1)
AND V == Ref(V, -1);
}
Lookback = Param("lookback period",
100, 50, 200, 10);
goal1 = Param("goal",
10000, 1000, 100000, 5000);
ratio1 = Param("ratio",
0.85, 0.5, 1, 0.05);
goal2 = Param("goal2",
2000, 1000, 100000, 5000);
ratio2 = Param("ratio2",
0.95, 0.5, 1, 0.05);
firstbar = LastValue(ValueWhen(BarIndex() ==
(BarCount - Lookback), DateNum()));
Lasttenbars = LastValue(ValueWhen(BarIndex() ==
(BarCount - 10),
DateNum()));
days = Cum(C *
V > 0 AND
DateNum() >=
firstbar);
tradeabledays1 = Cum(
Avg * V >= goal1 AND !Hash() AND DateNum() >= firstbar);
trading1 = Cum(
Avg * V >= goal1 AND !Hash() AND DateNum() >= Lasttenbars) >
0;
LQ1 = tradeabledays1 /Days;
tradeabledays2 = Cum(
Avg * V >= goal2 AND !Hash() AND DateNum() >= firstbar);
trading2 = Cum(
Avg * V >= goal2 AND !Hash() AND DateNum() >= Lasttenbars) >
0;
LQ2 = tradeabledays2 /Days;
Filter=(LQ1 >= ratio1 AND trading1 AND LQ2 >=
ratio2);
WhenBars = BarsSince(
Cross(DateNum(), firstbar) );
AddColumn ( firstbar, "date ?", 1
);
AddColumn ( LQ1, "LQ1");
AddColumn (tradeabledays1, "total1");
AddColumn ( LQ2, "LQ2");
AddColumn (tradeabledays2, "total2");
AddColumn (Days, "days");
AddColumn (BarCount, "Bars");
AddColumn (Cum(C*V > 0), "cum", 1.0);
AddColumn (Avg * V,
"tran");
AddTextColumn (MarketID(1),"Market");
AddTextColumn (GroupID(1), "Group");
Paul
Ho
its
indeed quite tricky Graham, I am not sure if you turnoff and on padding
within AFL, if it is possible, you could use optimize to have 2 runs, the 1st
run with padding selected to obtain value for XAOFB, and the second time with
padding turn off to obtain LQ. I looked but could not find how AA turns it
off.
Without that, One could use param to run it 2 times
with out changing the code itself.
-----------------------------
XAOFB = ParamDate("Startdate",
"2004-08-31");
run = Param("run",
0, 0, 1, 1); // run 1 is to obtain the XAOFB date
XAOPer = 100;
if (run ) {
XAOFB = LastValue(Ref(DateNum(),-100));
}
Per = BarsSince(
Cross( DateNum(), XAOFB ) ) + 1;
LQ = LastValue(Per)/XAOPer;
Filter=LQ > 0.95;
WhenDate = ValueWhen(
BarIndex()==(BarCount-101), DateNum() );
WhenBars = BarsSince(
Cross(DateNum(), WhenDate) );
AddColumn ( WhenDate, "date ?", 1
);
AddColumn ( WhenBars, "bars=100 ?",
1 );
AddColumn ( LQ, "LQ");
AddColumn (XAOFB, "XAOFB");
AddColumn (XAOPer, "XAOPer");
AddColumn (Per, "Per");
-----Original Message----- From:
Graham [mailto:kavemanperth@xxxxxxxxx] Sent: Sunday, 23 January 2005
10:52 AM To: amibroker@xxxxxxxxxxxxxxx Subject: [amibroker]
Counting the bars
I want to run and exploration over
the past 100 bars of actual market days in an unpadded database. However is
does not seem to be as easy as I thought to do it is a single step. If I do
it straight off I get different first dates for tickers as some days are
not traded. but if I reference it to padding to a reference ticker, eg an
index, then every ticker has the same number of bars in the reports whether
they traded all the time or not. Essentially I want to explore for
tickers that have trade more than 95% of the past 100 market days. I can
do it in 2 steps by finding the date of 100 days ago in the index, then
manually put this date into my explorations
Step 1, explore on
index XAOPer = 100; XAOFB = ValueWhen( BarIndex()==(BarCount-1-XAOper),
DateNum() ); Filter=1; AddColumn( XAOFB, "datenum", 1 );
Step
2 XAOFB = 1040831; // manually enter from previous explore results Per =
BarsSince( Cross( DateNum(), XAOFB ) ) + 1; LQ = ( LastValue(Per)/XAOPer )
> 0.95;
With this code I have tried the AA settings to pad and
not pad, but does not give me the right results as explained
above
WhenDate = ValueWhen( BarIndex()==(BarCount-101), DateNum()
); WhenBars = BarsSince( Cross(DateNum(), WhenDate)
); Filter=1; AddColumn( WhenDate, "date ?", 1 ); AddColumn( WhenBars,
"bars=100 ?", 1 );
Hoping someone can help
--
Cheers Graham http://e-wire.net.au/~eb_kavan/
Check
AmiBroker web page at: http://www.amibroker.com/
Check
group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Check AmiBroker web page at: http://www.amibroker.com/
Check
group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
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
YAHOO! GROUPS LINKS
|