PureBytes Links
Trading Reference Links
|
Hi again, just me. Here is the P&F plot of the BPI
As a caution only view this with the ticker ~bullpercent selected.
Comments and suggestions appreciated on this series of afl codes.
Eg Does it work and is it similar to other sources?
A suggestion for everyone is to tailor the box sizes to suit your market in
the file for creating the composite (refer #2 email). The box sizes as used
are those from the stockcharts site, and I feel these are not suitable for
all markets as they may have different normal price ranges.
Eg ASX reduce the ranges to that within the normal range.
Here is a suggestion
0 - 0.1 0.001
0.1 - 0.4 0.0025
0.25 - 1 0.005
1 - 2 0.01
2 - 4 0.02
4 - 8 0.05
8 - 16 0.1
16 - 100 0.2
100 - 1000 1
1000 - 2000 10
2000+ 20
Maybe the Japanese market needs more larger price ranges to suit the yen.
Cheers,
Graham
http://e-wire.net.au/~eb_kavan/
// BPI Chart - P&F
// VIEW ONLY the composite ticker ~BullPercent produced in "BPI System Base"
// Errors may occur if another ticker is viewed with this chart open.
// Graham Kavanagh 01 Jul 2004
SetBarsRequired(100000,100000);
box = 2;
reverse = 3*box;
CX = C/V*100;
CF = ceil(Cx);
CR = floor(Cx);
Bar = BarIndex();
BarDate = DateNum();
BarTurn = 0;
DateTurn = 0;
DateEnd = 0;
BarEnd = 0;
// initialize first element
j = 0;
PFC[j] = CF[0];
PFO[j] = CF[0] + box;
down = 1; // By default the first bar is a down bar.
up = 0;
// perform the loop that produces PF Chart
for( i = 1; i < BarCount; i++ )
{
if( CF[i] <= PFC[j] - box && down) //continue down
{
PFC[j] = CF[i];
PFO[j] = CF[i] + box;
DateEnd[j] = BarDate[i];
BarEnd[j] = Bar[i];
}
else
{
if( CR[i] >= PFC[j] + Reverse && down) //Change direction to up
{
j++;
up = 1;
down = 0;
PFC[j] = CR[i];
PFO[j] = CR[i] - box;
BarTurn[j] = Bar[i];
DateTurn[j] = BarDate[i];
DateEnd[j] = BarDate[i];
BarEnd[j] = Bar[i];
}
else
{
if( CR[i] >= PFC[j] + box && up) //Continue up
{
PFC[j] = CR[i];
PFO[j] = CR[i] - box;
DateEnd[j] = BarDate[i];
BarEnd[j] = Bar[i];
}
else
{
if( CF[i] <= PFC[j] - Reverse && up) //Change direction to down
{
j++;
up = 0;
down = 1;
PFC[j] = CR[i];
PFO[j] = CR[i] + box;
BarTurn[j] = Bar[i];
DateTurn[j] = BarDate[i];
DateEnd[j] = BarDate[i];
BarEnd[j] = Bar[i];
}
}
}
}
}
delta = BarCount-1 - j;
BarTurns = Ref( BarTurn, -delta);
DateTurns = Ref( DateTurn, -delta);
BarEnds = Ref( BarEnd, -delta);
DateEnds = Ref( DateEnd, -delta);
PFO = Ref( PFO, -delta );
PFC = Ref( PFC, -delta );
Rise = PFC>PFO;
Fall = PFC<PFO;
H = IIf( Ref(Rise, -1), Ref( HHV(PFC, 1), -1 ) - 1, Max(PFO, PFC) ) * box +
box/2;
L = IIf( Ref(Fall, -1), Ref( LLV(PFC, 1), -1 ) + 1, Min(PFO, PFC) ) * box -
box/2;
O = IIf( Ref(Rise, -1), Ref( HHV(PFC, 1), -1 ) - 1, IIf( Ref(Fall, -1), Ref(
LLV(PFC, 1), -1 )+ 1, PFO ) ) * box;
// the difference between Open AND Close is set to box size
// the sign decides if X or O are plotted
C = O + box * IIf( Rise, 1, -1 );
Top = H - box/2;
Bot = L + box/2;
Title = Name() + " " + Date() + ": BPI PnF Chart, H: " + top + ", L: " + bot
+ ", Box " + box + ", Reversal " + reverse + ": Number of Stocks = " + V + "
: Number of Bull Signals = " + C;
GraphXSpace=5;
Plot(C, "BPI", IIf( Rise, colorBlue, colorRed ), stylePointAndFigure);
Plot(30-box/2, "", colorGreen, styleLine+styleNoRescale);
Plot(70+box/2, "", colorBrown, styleLine+styleNoRescale);
//--Indicator-End--
------------------------ Yahoo! Groups Sponsor --------------------~-->
Yahoo! Domains - Claim yours for only $14.70
http://us.click.yahoo.com/Z1wmxD/DREIAA/yQLSAA/GHeqlB/TM
--------------------------------------------------------------------~->
Check AmiBroker web page at:
http://www.amibroker.com/
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/
|