Stock Portfolio Organizer
The ultimate porfolio management solution.
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
Point & Figure chart for Amibroker (AFL)
A great point and figure chart for Amibroker!
Author: Graham Kavanagh
Screenshots
Indicator / Formula
// Supersedes other P&F versions in this and yahoo files.
//
// P&F chart for V4.40 and above. Based on close prices.
//
// Problem resolved with boxes not being created at right prices due to the 9
// decimal place inaccuracies for numbers with decimals. This was causing a
// problem creating the rising and falling boxes with the Ceil and Floor
// functions.
//
// Place in indicator builder. Chart is compacted to the right end of the
// chart space ending on last date bar.
//
// Box sizes and reverse can be changed near the beginning of the afl code
// within the "Boxsize = IIF" statements.
//
//------------------------------------------------------------------------------
//AFL P&F Chart for Amibroker Indicator window. Based on High/low prices.
//Based on code in AB help files
//Reverse is 3 boxes.
//Graham Kavanagh 30 Sep 2003
Version(4.40);
SetBarsRequired(100000,100000);
//Size for P&F boxes
boxsize=IIf(C<0.05, 0.001,
IIf(C>=0.05 AND C<0.1, 0.002,
IIf(C>=0.1 AND C<0.5, 0.005,
IIf(C>=0.5 AND C<2, 0.01,
IIf(C>=2 AND C<5, 0.02,
IIf(C>=5 AND C<10, 0.05,
IIf(C>=10 AND C<50, 0.1,
IIf(C>=50 AND C<100, 0.2,
IIf(C>=100 AND C<200, 0.5,
IIf(C>=200 AND C<500, 1,
2 ))))))))));
Box = LastValue(boxsize);
HX = round((H/box)*10)/10;
LX = round((L/box)*10)/10;
RH = floor(HX);
FL = ceil(LX);
// initialize first element
j = 0;
Reverse = 3; // reversal requirement
PFC[j] = FL[0];
PFO[j] = PFC[j] + 1;
down = 1; // By default the first bar is a down bar.
up = 0;
swap = 0;
// perform the loop that produces PF Chart
for( i = 1; i < BarCount; i++ )
{
if( FL[i] <= PFC[j]-1 && down) //continue down
{
PFC[j] = FL[i];
PFO[j] = PFC[j] + 1;
}
else
{
if( RH[i] >= PFC[j] + Reverse && down) //Change direction to up
{
j++;
swap = 1;
PFC[j] = RH[i];
PFO[j] = PFC[j]-1;
}
}
if( RH[i] >= PFC[j] + 1 && up) //Continue up
{
PFC[j] = RH[i];
PFO[j] = PFC[j] - 1;
}
else
{
if( FL[i] <= PFC[j] - Reverse && up) //Change direction to down
{
j++;
PFC[j] = FL[i];
PFO[j] = PFC[j] + 1;
swap = 1;
}
}
if( swap )
{
swap = 0;
if( up )
{
up = 0;
down = 1;
}
else
{
up = 1;
down = 0;
}
}
}
delta = BarCount - j-1;
PFO = Ref( PFO, -delta );
PFC = Ref( PFC, -delta );
// High-Low range sets the height of the P&F bar
H = IIf(Ref(PFC,-1)>Ref(PFO,-1),Ref(HHV(PFC,1),-1)-1,Max(PFO,PFC))*Box;
L = IIf(Ref(PFC,-1)<Ref(PFO,-1),Ref(LLV(PFC,1),-1)+1,Min(PFO,PFC))*Box;
O = IIf(Ref(PFC,-1)>Ref(PFO,-1),Ref(HHV(PFC,1),-1)-1,IIf(Ref(PFC,-1)<Ref(PFO,-1),Ref(LLV(PFC,1),-1)+1,PFO))*Box;
// the difference between Open AND Close should be set to box size
// the sign decides if X or O are plotted
C = O + Box * IIf( PFC > PFO, 1,-1);
GraphXSpace = 2;
Title ="No Jscript " + Name()+ " PF HiLo, H: " + H+ ", L: " + L+", Box: "+ box + ", Reversal: " + reverse;
Plot( C, "P&F Chart Close", IIf( PFC > PFO, colorBlue, colorRed ), styleCandle+styleNoLabel+stylePointAndFigure);4 comments
Leave Comment
Please login here to leave a comment.
Back
too many errors (8)
Looks like keyword Reverse has been used as a variable. Replace it with Reverse_ and the P&F charts will work.
Thanks Carlin. It worked like charm
I have some problem in customize this code to 1 point reverse and get to this (missing column when price move up/move down 1 point). Can you help me to re-arrange this 1 point reverse chart? Please.

Thank you for the amazing code