Rahul Mohindar Oscillator RMO Trading System

Rahul Mohindar Oscillator also known as RMO is a popular indicator to detect the market direction. It is popular among Metastock traders to trade high volatile instruments. We have tried to design and backtest RMO Trading System in Amibroker. This system is based on a combination of moving averages to predict the price movements. RMO indicator is originally developed by Mr. Rahul Mohindar of based out of India. In addition to being a trader and trainer, Mr. Mohindar is a panelist on both CNBC and CNN India.

Read our article on AFL tutorial here.

RMO Trading System – AFL Overview

Parameter Value
Preferred Time-frame
Daily
Indicators Used Simple Moving Average, Exponential Moving Avrage
Buy Condition
  • When SwingTrade2 crosses over SwingTrade3
  • Both SwingTrade2 and SwingTrade3 are constructed using combination of moving averages. SwingTrade2 tracks medium-term trends, while SwingTrade3 tracks long-term trends
Short Condition
  • When SwingTrade3 crosses over SwingTrade2.
Sell Condition
  • Same as Short
  • Stop Loss Hit
  • Target met
Cover Condition
  • Same as Buy
  • Stop Loss Hit
  • Target met
Stop Loss 1%
Targets 5%
Position Size 50% of equity
Initial Equity 200000
Brokerage 100 per order
Margin 10%

RMO Trading System– AFL Code

//------------------------------------------------------
//
//  Formula Name:    RMO Trading System
//  Author/Uploader: Trading Tuitions
//  E-mail:          support@tradingtuitions.com
//  Website:         www.tradingtuitions.com
//------------------------------------------------------

_SECTION_BEGIN("RMO Trading System");

SetBarsRequired( sbrAll );
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C ));

//Initial Parameters
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(150,spsShares);
SetPositionSize(50,spsPercentOfEquity);
SetOption( "AllowPositionShrinking", True );

Plot( Close, "Price", colorWhite, styleCandle );

SwingTrd1 = 100 * (Close - ((MA(C,2)+
MA(MA(C,2),2)+
MA(MA(MA(C,2),2),2) +
MA(MA(MA(MA(C,2),2),2),2) +
MA(MA(MA(MA(MA(C,2),2),2),2),2) +
MA(MA(MA(MA(MA(MA(C,2),2),2),2),2),2) +
MA(MA(MA(MA(MA(MA(MA(C,2),2),2),2),2),2),2)+
MA(MA(MA(MA(MA(MA(MA(MA(C,2),2),2),2),2),2),2),2)+
MA(MA(MA(MA(MA(MA(MA(MA(MA(C,2),2),2),2),2),2),2), 2),2)+
MA(MA(MA(MA(MA(MA(MA(MA(MA(MA(C,2),2),2),2),2),2), 2),2),2),2))/10))/(HHV(C,10)-LLV(C,10));
SwingTrd2=EMA(SwingTrd1,30);
SwingTrd3=EMA(SwingTrd2,30);
RMO= EMA(SwingTrd1,81);

Buy=Cross(SwingTrd2,SwingTrd3);
Short=Cross(SwingTrd3,SwingTrd2);
Sell=Short;
Cover=Buy;

BuyPrice=Open;
SellPrice=Open;
ShortPrice=Open;
CoverPrice=Open;

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

StopLoss=Param("SL",1,1,10,1);
Target=Param("Target",5,5,40,5);
ApplyStop(Type=0,Mode=1,Amount=StopLoss);
ApplyStop(Type=1,Mode=1,Amount=Target);

/* 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

RMO Trading System

RMO Trading System- Backtest Report

RMO Trading system has a very good profitability in the last 16 years, but drawdown is also quite high. For an inexperienced trader, it would be hard to digest 11 consecutive losses and less than 30% success ratio.

Parameter Value
Nifty
Initial Capital 200000
Final Capital 36656201.64
Scrip Name NSE Nifty
Backtest Period 30-May-2000 to 12-Jan-2017
Timeframe Daily
Net Profit % 18228.10% %
Annual Return % 35.78%
Number of Trades 335
Winning Trade % 29.25%
Average holding Period 5.32 periods
Max consecutive losses 11
Max system % drawdown -70.78%
Max Trade % drawdown -39.33%

Download the detailed backtest report here.

Equity Curve

The equity curve is very rough and the periods of drawdown is evident. However the overall profitability is good.

RMO Trading System Equity Curve

Profit Table

RMO Trading System Profit Table

Additional Amibroker settings for backtesting

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

Symbol Info_Nifty

Disclaimer:

All the AFL’s posted in this section are for learning purpose. Trading Tuitions does not necessarily own these AFL’s and we don’t have any intellectual property rights on them. We might copy useful AFL’s from public forums and post it in this section in a presentable format. The intent is not to copy anybody’s work but to share knowledge. If you find any misleading or non-reproducible content then please inform us at support@tradingtuitions.com

6 Comments

  1. Not possible to trade with such a huge drawdown. On Index drawdown cannot be more than 10%. All your research is good but just not possible to take up the system for trading.

    • Agreed that it’s very difficult to trade, but technically not impossible. I have mentioned the same in the post too.

  2. It is good that you are writing new AFL for various combinations.
    Have you ever tried to make a AFL based on Elliott wave. This is the only method ,if correctly understood, one can always remains on the right side of the market.
    Pl do educate to built a AFL on this subject.
    Thanks.

    • Thanks you for the recommendation. We will definitely try to create an AFL for Elliott wave

  3. Dear Admin,

    Would like to know your view on RMO ATM software , Vantage Point Software & Advanced GET software. Kindly Reply.

    Thank You.

Leave a Reply

Your email address will not be published. Required fields are marked *