Jump to content
Tom Next - Daytrading Community

P&F Charts


joshsmi

Recommended Posts

Ich habe hier zwei Codes, die für Forex geeignet sein sollen. Aber bei mir funktionieren die nicht.

Könnte mal jemand bitte testen?

 

_SECTION_BEGIN("P&F1");
symbol = Name();
ccy2= StrRight(symbol,3);
Ccy1= StrLeft(symbol,3);
decimals=IIf(ccy2 == "JPY"  10, 10000);
Box = Param("Box", 10, 1, 100, 1)/decimals;
Reverse = Param("Reverse",3, 1, 5, 1);
j = 0;
Lo[0] = Box * ceil(L[0]/Box) ;
Hi[0] = Lo[0] + box;
direction = 0;
for( i = 1; i < BarCount; i++ )
{	
if(direction[j] == 0)
{
	if(L[i] <= Lo[j] - Box)
	{
		Chg = Lo[j] - L[i];
		n= floor(Chg/box);
		Lo[j] = Lo[j] - n* box;
	}
	else
	{
		if(H[i] >= Lo[j] + Reverse*Box)
		{
			Chg = H[i] - Lo[j];
			n = floor(Chg/box);
			j++;
			direction[j] = 1;
			Hi[j] = Lo[j-1] + n* Box;
			Lo[j] = Lo[j-1] + Box;
		}
	}
}
else
{
	if(H[i] >= Hi[j] + Box)
	{
		Chg = H[i] - Hi[j];
		n= floor(Chg/box);
		Hi[j] = Hi[j] + n*box;
	}
	else
	{
		if(L[i] <= Hi[j] - Reverse * Box )
		{
			Chg = Hi[j] - L[i];
			n= floor(Chg/box);
			j++;
			direction[j] = 0;
			Lo[j] = Hi[j-1] - n*box;
			Hi[j] = Hi[j-1] - Box;			
		}
	}
}

}
delta = BarCount - j -1;
direction = Ref(direction, - delta);
Hi = Ref(Hi, -delta) + Box/2;
Lo = Ref(Lo, -delta)- Box/2;
Cl = IIf(direction == 1, Hi, Lo);
Op = IIf(direction == 1, Cl - Box, Cl + Box); 
PlotOHLC(Op, Hi, Lo, Cl,"", colorLightYellow , stylePointAndFigure);
_SECTION_END();

 

_SECTION_BEGIN("P&F2");
if(MarketID()==3) 
{
GraphXSpace = 5;
SetChartBkColor(ParamColor("BackGroundColor",  colorCustom1));

gridColor = ParamColor("GridColor", ColorRGB( 37,64,90));
SetBarsRequired(100000,100000);


symbol = Name();
ccy2= StrRight(symbol,3);
Ccy1= StrLeft(symbol,3);

decimals=IIf(ccy2 == "JPY" OR Ccy1 =="XAG",100, IIf( Ccy1 == "XAU" , 10, 10000));
format = IIf (ccy2 == "JPY"|| Ccy1 == "XAU", 8.2, 8.4);

Box = Param("Box", 10, 1, 100, 1)/decimals;

Reverse = Param("Reverse",3, 1, 5, 1);

j = 0;

Lo[0] = Box * ceil(L[0]/Box) ;
Hi[0] = Lo[0] + box;
direction = 0;

for( i = 1; i < BarCount; i++ )
{	
if(direction[j] == 0)
{
	if(L[i] <= Lo[j] - Box)
	{
		Chg = Lo[j] - L[i];
		n= floor(Chg/box);
		Lo[j] = Lo[j] - n* box;
	}
	else
	{
		if(H[i] >= Lo[j] + Reverse*Box)
		{
			Chg = H[i] - Lo[j];
			n = floor(Chg/box);
			j++;
			direction[j] = 1;
			Hi[j] = Lo[j-1] + n* Box;
			Lo[j] = Lo[j-1] + Box;
		}
	}
}
else
{
	if(H[i] >= Hi[j] + Box)
	{
		Chg = H[i] - Hi[j];
		n= floor(Chg/box);
		Hi[j] = Hi[j] + n*box;
	}
	else
	{
		if(L[i] <= Hi[j] - Reverse * Box )
		{
			Chg = Hi[j] - L[i];
			n= floor(Chg/box);
			j++;
			direction[j] = 0;
			Lo[j] = Hi[j-1] - n*box;
			Hi[j] = Hi[j-1] - Box;
			
		}
	}
}

}
delta = BarCount - j -1;
direction = Ref(direction, - delta);



Hi = Ref(Hi, -delta) + Box/2;
Lo = Ref(Lo, -delta)- Box/2;
Cl = IIf(direction == 1, Hi, Lo);
Op = IIf(direction == 1, Cl - Box, Cl + Box); 
PlotOHLC(Op, Hi, Lo, Cl,"", colorLightYellow , stylePointAndFigure|styleNoLabel);

Lastc = LastValue( C);
Last = Ref(Lastc, -(BarCount-1));
Plot( Last,"", colorRed,styleNoLine|styleDots, 0 , 0, 1);


/* Grid Construction*/
PlotGridLines = ParamToggle("PlotdGrid", "No|Yes");
if (PlotGridLines)
{
SetChartOptions(1,0, 0); 		

end = BarCount-1;
bar = BarIndex();
begin =  Status("firstvisiblebar");



	ScreenHigh =LastValue( HHV(Hi, end - begin)) + box;
	ScreenLow =LastValue( LLV(Lo, end - begin))-box;
	shift = 5;
	gLine= LineArray( begin-shift, screenlow, end, screenLow, 0, 1);
	GridMin = screenLow;
	GridMax = screenhigh;
	step = round((GridMax - GridMin )/ box);
	Plot(LineArray( begin-shift, screenhigh, end, screenhigh, 0, 1), "", gridColor, styleLine|styleNoLabel|styleNoRescale, 0, 0 ,shift);

	for (n =0; n <step ; n++)
	{
		Plot(  gLine + n*Box, "", gridColor, styleLine|styleNoLabel|styleNoRescale, 0, 0 ,shift);
		text = NumToStr( GridMin + n*Box+ 0.5*box, format);
		PlotText(text, end+2, GridMin + n*Box+ 0.25*box, colorLightYellow);
	}	
	VerticalGrid = IIf ( bar >= begin-1, IIf(frac(bar/2) ==0, screenHigh, screenLow), Null);
	Plot (VerticalGrid, "", gridColor, styleStaircase|styleNoLabel|styleNoRescale, 0,0, 1);

}
else
SetChartOptions(1,chartShowArrows|0);

Title  = 
"Interval:   " + Interval(2) + "\n" +
"Box  :      " +  Box*decimals + "  pip \n" +
"ATR :      " +NumToStr(LastValue(ATR(20) *decimals), 1.0) + "  pip";
}

else
Title = "PF with Forex Settings is not Suitable for this market";
_SECTION_END();

Link to comment
Share on other sites

im ersten fehlt hier wohl ein Komma

 

decimals=IIf(ccy2 == "JPY" 10, 10000);

 

decimals=IIf(ccy2 == "JPY" , 10, 10000);

 

 

Verwendest Du einen Weißen Hintergrund solltest Du vielleicht auch die Farbe ändern.

Aber verstehen tue ich den dann auch nicht.

 

Beim Zweiten verstehe ich den Angezeigten Fehler auch nicht.

 

 

Dann habe ich aber hier noch einen gefunden,

aber keine Ahnung dazu weil ich mich seit Ewigkeiten nicht mehr mit P&F beschäftigt habe da ich nichts passendes in AmiBroker gefunden habe.

 

( "Point & Figure w Values adj" );

GraphXSpace = 5;

SetChartBkColor( ParamColor( "BackGroundColor", colorBlack) );

//GraphColor = ParamColor("GarphColor",colorLightGrey);

GridColor = ParamColor( "GridColor", colorLightGrey );

Scaling = ParamList( "Scaling Method", "Traditional|Percentage|AVG True Range" );

if ( scaling == "Traditional" )

Box = Param( "Box", 1, 0.2, 10, 0.1 );

else

if ( scaling == "Percentage" )

Box = Param( "Box ", 1, 0.2, 10, 0.1 ) / 100 * LastValue( C );

else

if ( scaling == "AVG True Range" )

Box = Param( "Box", 1, 0.3, 5, 0.1 ) * LastValue( ATR ( 20 ) );

shiftChart = 0;

shiftLastClose = 1;

shiftGrid = 7;

shiftPriceAxis = 2;

Reverse = Param( "Reverse", 3, 1, 5 );

j = 0;

PFL[0] = Box * ceil( Low[0] / Box ) + Box;

PFH[0] = Box * floor( High[0] / Box );

direction = 0;

for ( i = 1; i < BarCount; i++ )

{

if ( direction[j] == 0 )

{

if ( Low[i] <= PFL[j] - Box )

{

PFL[j] = Box * ceil( Low[i] / Box );

}

else

{

if ( High[i] >= PFL[j] + Reverse*Box )

{

j++;

direction[j] = 1;

PFH[j] = Box * floor( High[i] / Box );

PFL[j] = PFL[j - 1] + Box;

}

}

}

else

{

if ( High[i] >= PFH[j] + Box )

{

PFH[j] = Box * floor( High[i] / Box );

}

else

{

if ( Low[i] <= PFH[j] - Reverse * Box )

{

j++;

direction[j] = 0;

PFH[j] = PFH[j - 1] - Box;

PFL[j] = Box * ceil( Low[i] / Box );

}

}

}

}

delta = BarCount - j - 1;

direction = Ref( direction, - delta );

Hi = Ref( PFH, -delta ) + Box / 2;

Lo = Ref( PFL, -delta ) - Box / 2;

Cl = IIf( direction == 1, Hi, Lo );

Op = IIf( direction == 1, Cl - Box, Cl + Box );

Graphcolor = IIf( direction == 1, ParamColor( "X_Color", colorBrightGreen ),

ParamColor( "O_Color", colorRed ) );

PlotOHLC( Op, Hi, Lo, Cl, "", GraphColor ,

stylePointAndFigure | styleNoLabel, 0, 0 , shiftChart );

PlotOHLC( Op, Hi, Lo, Cl, "", GraphColor , stylePointAndFigure | styleNoLabel, 0, 0 , shiftChart );

Last = Ref( LastValue( C ), -( BarCount - 1 ) );

Plot( Last, "", colorRed, styleNoLine | styleDots, 0 , 0, shiftLastClose );

// selected value

Value = IIf( direction > 0, SelectedValue( Hi ) - box / 2, SelectedValue( Lo ) + box / 2 );

//----------------------------------------------------------

// GRID CONSTRUCTION

//----------------------------------------------------------

PlotGridLines = ParamToggle( "PlotdGrid", "Yes! |No", 1 ) ;

if ( PlotGridLines )

{

begin = SelectedValue( BarIndex() );

end = LastValue( BarIndex() );

period = end - begin + 1;

if ( begin < end )

{

ScreenHigh = LastValue( HHV( cl, period ) );

ScreenLow = LastValue( LLV( Cl, period ) );

top = LineArray( begin - shiftGrid, screenHigh, end, screenhigh, 0 , 1 );

Bot = LineArray( begin - shiftGrid, screenlow, end, screenLow, 0, 1 );

Plot( top, "", gridColor, styleLine | styleNoLabel , 0, 0, shiftGrid );

//Plot( bot, "", gridColor,styleLine|styleNoLabel, 0 , 0 , shiftGrid);

VerticalGrid = IIf ( BarIndex() >= begin, IIf( direction == 1, screenHigh, screenLow ), Null );

Plot ( VerticalGrid, "", gridColor, styleStaircase | styleNoLabel, 0, 0, 1 );

format = 8.2;

for ( n = LastValue( bot ); n < LastValue( top ) - 0.5*box; n = n + box )

{

Plot( bot , "", gridColor, styleLine | styleNoLabel, 0, 0 , shiftGrid );

text = NumToStr( LastValue( bot ) + 0.5 * box, format );

xposition = BarCount + shiftPriceaxis;

yPosition = LastValue( bot ) + 0.27 * box;

PlotText( text, xPosition , yPosition, colorBlue );

bot = bot + box;

Graphcolor = IIf( direction == 1, ParamColor( "X_Color", colorBrightGreen ),

ParamColor( "O_Color", colorRed ) );

PlotOHLC( Op, Hi, Lo, Cl, "", GraphColor ,

stylePointAndFigure | styleNoLabel, 0, 0 , shiftChart );

}

}

}

//----------------------------------------------------------

// TITLE

//----------------------------------------------------------

Title = "\n" +

" Instrument : " + Name() + FullName() + "\n " +

"Formula : " + " Point & Figure (High/Low Range)" + "\n " +

"Box : " + NumToStr( Box, 4.4 ) + " " +

"Reverse : " + NumToStr( Reverse, 2.0 ) + "\n " +

"ATR : " + WriteVal( LastValue( ATR( 100 ) ), format = 4.4 );

_SECTION_END();

 

 

This code by signature "apfxtrader" is the best I have noticed. It has three scaling methods Traditional|Percentage|AVG True Range.

He has also some ideas about exploration of P&F formations.

Search his signature.

 

 

Link to comment
Share on other sites

Den Komma Fehler hatte ich gestern, nachdem ich bei Google die zwei AFl Codes gefunden hatte, auch noch selbst korrigiert, hatte aber keine Lust mehr mich hier einzuloggen, auch weil ich darauf vertraute, dass noch andere schlaue Kommafinder existieren. :D

 

Beim zweiten habe ich auch keine Ahnung, was das bedeuten soll.

Danke für die dritte Variante. Die müßte man für Devisen auch noch umändern, wie es aussieht.

 

Bin selbst ansonsten kein P&F Spezialist und habe mich damit auch noch nie wirklich beschäftigt.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...