Skip to main content

The Parabolic SAR, also known as PSAR, is a straightforward yet potent technical indicator. While most of the technical indicators we’ve discussed help determine the beginning or direction of a trend, the Parabolic SAR aids in recognizing when the ongoing trend concludes and the next one begins. “SAR” stands for “Stop and Reverse.” This indicator was crafted by the renowned technical analyst, “Welles Wilder,” who is also responsible for other widely-used indicators like RSI, ADX, and ATR. It relies on momentum with respect to time and offers highly accurate predictions of price reversals. In this article, we’ll delve into a Parabolic SAR Trading system for NSE Nifty. This profitable strategy can also be applied to other stocks and instruments.

Click here to explore AFL coding and create your own trading systems.

How to Utilize Parabolic SAR in Trading?

Using Parabolic SAR is incredibly straightforward. When plotted on a stock chart, it displays a series of dots either above or below the price line.

  • If the PSAR dotted line is positioned below the price, it signifies a buy signal.
  • If the PSAR dotted line is above the price, it indicates a sell signal.

Parabolic SAR Trading System

This method works effectively in trending markets but may result in false signals in sideways markets. Many traders also use Parabolic SAR as a stop-loss indicator to exit their trades.

Overview of the Parabolic SAR Trading System – AFL

ParameterValue
Preferred Time-frameDaily
Indicators UsedSAR (Stop and Reverse)
Buy ConditionPrice candle crosses SAR dotted line from the bottom.
Short ConditionPrice candle crosses SAR dotted line from the top.
Sell Condition
  • Same as Short
  • Stop Loss Hit
  • Target met
Cover Condition
  • Same as Buy
  • Stop Loss Hit
  • Target met
Stop Loss1%
Targets5%
Position Size100% of Equity
Initial Equity200000
Brokerage100 per order
Margin10%

Parabolic SAR Trading System – AFL Code

				
					//------------------------------------------------------
//
//  Formula Name:    Parabolic SAR
//  Website:         https://zerobrokerageclub.com/
//------------------------------------------------------

_SECTION_BEGIN("Parabolic SAR");

SetTradeDelays( 1, 1, 1, 1 );
SetOption( "InitialEquity", 200000);
SetOption("FuturesMode" ,True);
SetOption("MinShares",1);
SetOption("CommissionMode",2);
SetOption("CommissionAmount",100);
SetOption("AccountMargin",10);
SetOption("RefreshWhenCompleted",True);
SetPositionSize(100,spsPercentOfEquity);
SetOption( "AllowPositionShrinking", True );
BuyPrice=Open;
SellPrice=Open;
ShortPrice=Open;
CoverPrice=Open;

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( Close, "Price", colorWhite, styleCandle );

accel = Param("Acceleration", 0.1, 0, 1, 0.01); 
mx = Param("Max. acceleration", 0.2, 0, 1, 0.1); 

F_SAR = SAR(accel,mx); 

colordots = IIf(F_SAR < L,colorGreen,IIf(F_SAR> H,colorRed,colorWhite)); 

Buy = Cross(C,F_SAR); 
Short = Cross(F_SAR,C); 
Sell=Short;
Cover=Buy;
Plot(F_SAR,"\nF_SAR",colordots,styleDots|styleNoLine); 


Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);

Short=ExRem(Short,Cover);
Cover=ExRem(Cover,Short);

StopLoss=Param("stop",1,0.5,3,0.5);
ApplyStop(Type=0,Mode=1,Amount=StopLoss);
	
Target=Param("Target",5,0.5,5,0.5);
ApplyStop(Type=1,Mode=1,Amount=Target);

printf("\nBuy : " + Buy );  
printf("\nSell : " + Sell );  
printf("\nShort : " + Short );  
printf("\nCover : " + Cover ); 


/* Plot Buy and Sell Signal Arrows */
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45);
PlotShapes(IIf(Cover, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(Cover, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);
PlotShapes(IIf(Cover, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45);
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);
PlotShapes(IIf(Sell, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);
PlotShapes(IIf(Short, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Short, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);
PlotShapes(IIf(Short, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);



_SECTION_END();
				
			

AFL Screenshot

As you can observe in the chart, the frequency of signals is quite high. It can be further improved by adjusting the parameters or using it in conjunction with other indicators.

Parabolic-SAR-Trading-System

Backtest Report for the Parabolic SAR Trading System

The Nifty SAR trading system maintains consistent performance with minimal drawdown. A Monte Carlo simulation also reveals impressive results, with a probability of less than 10% of failure.

ParameterValue
Nifty
Initial Capital200000
Final Capital1311059.26
Scrip NameNSE Nifty
Backtest Period01-Jan-2004 to 25-Sep-2017
TimeframeDaily
Net Profit %555.53%
Annual Return %15.45%
Number of Trades556
Winning Trade %34.35%
Average Holding Period4.33 periods
Max Consecutive Losses14
Max System % Drawdown-22.18%
Max Trade % Drawdown-5.98%

Download the comprehensive backtest report here.

Equity Curve

The equity curve remains steady and almost linear.

Parabolic-SAR-Equity-Curve

Profit Table

Parabolic-SAR-Profit-Table

Additional Amibroker Settings for Backtesting

Go to Symbol –> Information, and specify the lot size and margin requirement. The screenshot below shows a lot size of 75 and a margin requirement of 10% for NSE Nifty:

Symbol-Info_Nifty