Stock Portfolio Organizer

The ultimate porfolio management solution.

Shares, Margin, CFD's, Futures and Forex
EOD and Realtime
Dividends and Trust Distributions
And Much More ....
Find Out More Here

WiseTrader Toolbox

#1 Selling Amibroker Plugin featuring:

Advanced Adaptive Indicators
Advanced Pattern Exploration
Neural Networks
And Much More ....
Find Out More Here

Alternate Parabolic Sar for Amibroker (AFL)

Rating:
3 / 5 (Votes 2)
Tags:
amibroker

This is manual sar calculated by some one allready but i have made certain changes.
for better result. It can be used in any time frame.

Indicator / Formula

Copy & Paste Friendly
_SECTION_BEGIN("HEIKENASHI");
SetChartBkGradientFill( ParamColor("BgTop", colorWhite),ParamColor("BgBottom", colorWhite),ParamColor("Titleblock",colorLightGrey )); 
SetChartOptions(0,chartShowArrows|chartShowDates);
GraphXSpace=5;
p=Param("Period",6,2,30,1);
Om=MA(O,p);
hm=MA(H,p);
lm=MA(L,p);
Cm=MA(C,p);
HACLOSE=(Om+Hm+Lm+Cm)/4;
HaOpen = AMA( Ref( HaClose, -1 ), 0.5 );
HaHigh = Max( Hm, Max( HaClose, HaOpen ) );
HaLow = Min( Lm, Min( HaClose, HaOpen ) );
//PlotOHLC( HaOpen, HaHigh, HaLow, HaClose, "" + Name(), colorWhite, styleCandle | styleNoLabel );
_SECTION_END();


_SECTION_BEGIN("4");
SetChartOptions(0,chartShowArrows|chartShowDates);
//_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
//Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); 

TP = (H + L)/2;
r = WMA(HACLOSE, 4);


// *BEGIN Parabolic SAR Indicator

HH = HHV(r, 2);
LL = LLV(r, 2);

EnableScript ( "vbscript" );
psar = LL;

<%

Function Min( x, y, z )

If x < y Then
 Min = x
Else
 Min = y
End If

If z < Min Then
   Min = z
End If

End Function



Function Max( x, y, z )

If x > y Then
 Max = x
Else
 Max = y
End If

If z > Max Then
   Max = z
End If

End Function


StartAF = 0.02   '                           //acceleration factor
MaxAF = 0.1  '                          //max acceleration

r = AFL ( "r" )
HH   = AFL ( "HH" )
LL    = AFL ( "LL" )
psar  =  AFL ( "psar" )

psar( 0 ) = r( 0 )      ' initialize
LongPos = 1                    ' assume long for initial conditions
af = StartAF               ' init acelleration factor
ep = LL( 0 )                 ' init extreme point
hp = HH( 0 )
lp = LL( 0 )

For i = 2 To UBound( r )

     If LongPos Then
        psar( i ) = psar( i-1 ) + af * ( hp - psar( i-1 ) )
     Else
       psar( i ) = psar( i-1 ) + af * ( lp - psar ( i-1 ) )
     End If

     reverse =  0

     ' check for reversal
     
     If LongPos Then
       If  LL( i ) < psar ( i ) Then 
              LongPos = 0
  		reverse = 1 '            //reverse position to short
              psar( i ) =  hp '                        //sar is high point in prev trade
              lp = LL( i )
              af = StartAF
       End If
     
     Else
     
         If HH( i ) > psar( i ) Then
              LongPos = 1    
              reverse = 1 '        //reverse position to long
              psar( i ) =  lp 
              hp = HH( i ) 
              af = StartAF
         End If  
     End If

     If reverse = 0 Then
         If LongPos Then
             If HH( i ) > hp Then
                  hp = HH( i )
                  af = af + StartAF 
                  af = Min ( af, MaxAF, MaxAF )
             End If
                  
             psar( i ) = Min ( psar( i ), LL( i - 1 ), LL ( i-2 ) )
         Else
         
             If  LL( i ) < lp Then
                lp = LL( i )
                af = af + StartAF 
                af = Min ( af, MaxAF, MaxAF ) 
             End If
             psar( i ) = Max ( psar( i ), HH( i - 1 ), HH( i-2 ) )
         End If
     End If


Next

AFL( "psar" ) = psar
%>

//Graph0 = Close;
//Graph0Style = 64 +32 ;
//graph0Style = 128 +32 ;
//Graph0BarColor=1;
Graph1 = psar;
//Graph1Style = 8 + 16 + 32;
//Graph1Color = 8;



Title=Name() + " - Custom PSAR = "+WriteVal(psar);


Plot(psar,"",colorGreen,styleNoLine|styleDots);





mid = WMA(r, 50);
a = StDev(r, 50); 

a2 = a * 2.1;
a1 = WMA(a2, 50);


ub = mid + a1;
lb = mid - a1; 

//Plot( mid, "mid", colorGrey40 );
//Plot( ub, "ub", colorGrey40 );
//Plot( lb, "lb", colorGrey40 );

line = ub;
line1 = lb;
//Plot(line,"ma"+WriteVal(line,0),IIf(Ref(line,-1)>line,colorRed,IIf(ref(line,-1)<line,colorGreen,coloryellow)),styleLine,Null,Null,Null,Null,3);
//Plot(line1,"ma"+WriteVal(line,0),IIf(Ref(line,-1)>line,colorRed,IIf(ref(line,-1)<line,colorGreen,coloryellow)),styleLine,Null,Null,Null,Null,3);

TEMA2 = TEMA(r, 100);
//Plot( TEMA2, "TEMA2", colorGrey40 );

_SECTION_END();

2 comments

1. Fajri

hdhamnaskar, what makes this is different compared to the regular Parabolic SAR?

2. hdhamnaskar

Dear faJRi,

This is an alternate tool for calculating far
We can use it by creating double time frame in a single chart using different parameters and and changing settings.

For example
1 MIN SAR GIVES TO MANY FALSE SIGNALS AS COMPARE TO 5 MIN CHART

WITH THE HELP OF ALTERNATE SAR
U CAN DRAW 5 MIN SAR IN 1 MIN CHART
IN THE PRESENCE OF 1 MIN SAR.
JUST CHANGE SOME SETTINGS AND COLOR OPTIONS FOR SAR

Leave Comment

Please login here to leave a comment.

Back