PureBytes Links
Trading Reference Links
|
Here is stage 1 of the code on the road to producing BPI figures. This is
just the forming of the boxed values of price data. It applies only to each
stock and so far just a plot to see if the P&F values can be created on a
real time basis.
Looking for comments back after you have had a chance to work out what I
have done, and what the results look like. Any suggestions on how to tidy up
the code, any errors/omissions, appreciated as sometimes I can take a long
road as an idea meanders through my head.
The PF values appear as a blue staircase line on backdrop of the price
chart.
Copy the code below to IB window
Cheers,
Graham
http://e-wire.net.au/~eb_kavan/
// Bullish Percent Index
// Buy Signals generated via P&F
// Graham Kavanagh 30 Jun 2004
SetBarsRequired(100000,100000);
function ToBox( Price )
{
Boxes =
Min( Price, 0.25 )/0.0625 +
Max( ( Min( Price, 1 )-0.25 ) ,0 )/0.125 +
Max( ( Min( Price, 5 )-1 ) ,0 )/0.25 +
Max( ( Min( Price, 20 )-5 ) ,0 )/0.5 +
Max( ( Min( Price, 100 )-20 ) ,0 )/1 +
Max( ( Min( Price, 200 )-100 ) ,0 )/2 +
Max( ( Min( Price, 500 )-200 ) ,0 )/4 +
Max( ( Min( Price, 1000 )-500 ) ,0 )/5 +
Max( ( Min( Price, 25000 )-1000 ) ,0 )/50 +
Max( ( Price-25000 ) ,0 )/500 ;
return Boxes;
}
// round boxes down for High and up for Low
Lx = ceil(ToBox(L));
Hx = floor(ToBox(H));
// set variable values for locating peak/troughs of columns
Bar = BarIndex();
BarDate = DateNum();
BarTurn = 0;
DateTurn = 0;
DateEnd = 0;
BarEnd = 0;
fall = 1;
rise = 0;
PFC[0] = Lx[0];
reverse = 3;
dirn = -1; // -1=down, 1=up
for( i = 1; i < BarCount; i++ )
{
if( Lx[i]<=(PFC[i-1]-1) && V[i]>0 && dirn==-1) //continue down
{
PFC[i] = Lx[i];
DateEnd[i] = BarDate[i];
BarEnd[i] = Bar[i];
fall[i] = 1;
rise[i] = 0;
}
else
{
if( Hx[i]>=(PFC[i-1]+Reverse) && Lx[i]>PFC[i-1] && V[i]>0 && dirn==-1)
//Change direction to up
{
dirn = 1;
PFC[i] = Hx[i];
BarTurn[i] = Bar[i];
DateTurn[i] = BarDate[i];
DateEnd[i] = BarDate[i];
BarEnd[i] = Bar[i];
fall[i] = 0;
rise[i] = 1;
}
else
{
if( Hx[i]>=(PFC[i-1]+1) && V[i]>0 && dirn==1) //Continue up
{
PFC[i] = Hx[i];
DateEnd[i] = BarDate[i];
BarEnd[i] = Bar[i];
fall[i] = 0;
rise[i] = 1;
}
else
{
if( Lx[i]<=(PFC[i-1]-Reverse) && Hx[i]<PFC[i-1] && V[i]>0 && dirn==1)
//Change direction to down
{
dirn = -1;
PFC[i] = Lx[i];
BarTurn[i] = Bar[i];
DateTurn[i] = BarDate[i];
DateEnd[i] = BarDate[i];
BarEnd[i] = Bar[i];
fall[i] = 1;
rise[i] = 0;
}
else
{
PFC[i] = PFC[i-1];
rise[i] = rise[i-1];
fall[i] = fall[i-1];
}
}
}
}
}
//Convert boxes to prices for check plotting
b1=0 + 0.25 / 0.0625;
b2=b1 + (1-0.25) / 0.125;
b3=b2 + (5-1) / 0.25;
b4=b3 + (20-5) / 0.5;
b5=b4 + (100-20) / 1;
b6=b5 + (200-100) / 2;
b7=b6 + (500-200) / 4;
b8=b7 + (1000-500) / 5;
b9=b8 + (25000-100) / 50;
function ToPrice( Value )
{
Price =
Min( Value, b1 ) * 0.0625 +
Min( Max( Value-b1, 0 ), b2-b1 ) * 0.125 +
Min( Max( Value-b2, 0 ), b3-b2 ) * 0.25 +
Min( Max( Value-b3, 0 ), b4-b3 ) * 0.5 +
Min( Max( Value-b4, 0 ), b5-b4 ) * 1 +
Min( Max( Value-b5, 0 ), b6-b5 ) * 2 +
Min( Max( Value-b6, 0 ), b7-b6 ) * 4 +
Min( Max( Value-b7, 0 ), b8-b7 ) * 5 +
Min( Max( Value-b8, 0 ), b9-b8 ) * 50 +
Max( Value-b9, 0 ) * 500 ;
return Price;
}
Plot( C, "", colorBlack, styleBar);
Plot( toprice(PFC), "", colorBlue, styleStaircase);
//Plot( toprice(Lx), "", colorRed, styleStaircase);
//Plot( toprice(Hx), "", colorGreen, styleStaircase);
Title = Name()+" "+Date()+ " PFC = " + pfc + ", Rise = " + rise + ", Fall =
" + fall;
------------------------ Yahoo! Groups Sponsor --------------------~-->
Make a clean sweep of pop-up ads. Yahoo! Companion Toolbar.
Now with Pop-Up Blocker. Get it for free!
http://us.click.yahoo.com/L5YrjA/eSIIAA/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/
|