Let me try this again as this ended up in the wrong thread...

My drawings on PnF charts move to the left every day (daily data) while
the actual PnF chart does not. What would be a good way to stop this
from happening?

Attached find the code. If you put it into replay mode , draw a trend 
line, or just click somewhere on the PnF chart (which will auto draw a 
trendline), you will see what I mean.


Thanks,

Anthony

------------------------------------------------------------------------------------------------------------------------

GraphXSpace = 5;

SetChartBkColor(ParamColor("BackGroundColor",  colorBlueGrey));
GraphColor =  ParamColor("GraphColor",colorLightGrey);
GridColor = ParamColor("GridColor", colorLightBlue);//ColorRGB(39,49, 67) );

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

LastClose = LastValue(Close);

if( LastClose < 5) boxsize = 0.10;
else
    if( LastClose >=5 AND LastClose < 10) boxsize = 0.20;
    else
        if( LastClose >=10 AND LastClose < 20) boxsize = 0.50;
        else
            if( LastClose >=20 AND LastClose < 100) boxsize = 1.00;
            else
                if( LastClose >=100 AND LastClose < 200) boxsize = 2.00;
                else
                    if( LastClose >=200 AND LastClose < 500) boxsize = 5.00;
                    else
                        if( LastClose >=500 AND LastClose < 1000) 
boxsize = 10.00;
                        else
                            if( LastClose >=1000 AND LastClose < 2000) 
boxsize = 20.00;
                            else
                                if( LastClose >=2000 AND LastClose < 
5000) boxsize = 50.00;

if( scaling == "Traditional")      Box = boxsize; //Param("Box", 1, 0.2, 
10, 0.1);
else
if( scaling == "Percentage")      Box = boxsize/100 * 
LastValue(C);//Param("Box", 1, 0.2, 10, 0.1)/100 * LastValue(C);
else
if( scaling == "AVG True Range")  Box = noxsize * 
LastValue(ATR(20));//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);




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, colorWhite);
    bot = bot + box;  

    }  
//}


LineUp = LineArray( SelectedValue(BarIndex()), SelectedValue(L), 
SelectedValue(BarIndex())+1, SelectedValue(L)+box, 1, 0 );
Linedown = LineArray( SelectedValue(BarIndex()), SelectedValue(H), 
SelectedValue(BarIndex())+1, SelectedValue(H)-box, 1, 0 );

LineUp1 = LineArray( SelectedValue(BarIndex()), SelectedValue(Lo), 
SelectedValue(BarIndex())+1, SelectedValue(Lo)+box, 1, 0 );
Linedown1 = LineArray( SelectedValue(BarIndex()), SelectedValue(Hi), 
SelectedValue(BarIndex())+1, SelectedValue(Hi)-box, 1, 0 );

Plot(Lineup1, "Line", colorGreen, styleLine + styleNoLabel + 
styleNoRescale);
Plot(LineDown1, "Line", colorBrown, styleLine + styleNoLabel + 
styleNoRescale);

//Plot(IIf(SelectedValue(Cl=Lo),Lineup,Null), "Line", colorGreen, 
styleLine + styleNoLabel + styleNoRescale);
//Plot(IIf(SelectedValue(CL=Hi),Linedown,Null), "Line", colorBrown, 
styleLine + styleNoLabel + styleNoRescale);

}


//---------------------------------------------------------------------
//    TITLE
//----------------------------------------------------------------------

Title = "\n" +
" Instrument : " + Name() +  FullName()+"\n " +
"Formula : " + " PF StockChart" + "\n " +
"Box  : " +  box + "     " +
"Reverse : " +  reverse + "\n " +
"ATR : " + LastValue(ATR(20)) + "\n" +
"Date :" + Date();

_SECTION_END();

Reply via email to