Formula high & low range
Utilizing Amibroker AFL, traders can develop formulas to calculate and plot high and low ranges in a given timeframe. This analysis, coupled with Amibroker data feed, enables traders to identify potential support and resistance levels, aiding in setting profit targets and stop-loss orders.
/_SECTION_BEGIN( "Point & Figure w Values adj" ); //mandeep Singh 05-Jan-2009 GfxSetBkColor(colorBlack); GfxSetTextColor( colorOrange ); GfxSelectFont("Times New Roman", 10, 700, True ); GfxTextOut("man4urheart.blogspot.com", 10 , 0 ); 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, 100, 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 ==1) { 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; 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();