9

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.

Please visit Trading Tuitions Academy to learn AFL coding and create your own Trading systems.

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, SelectedValue( ROC( C, 1 ) ) ));

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

Related Posts

9 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.

  4. There are below 3 signals that makes a buy or Sell signal for RMO
    1. Both Swingtrade 2 and Swingtrade 3 should be above zero and cross over should happen
    2. Average Volumes must be above during Cross Over or volume in previous days must be above average(50 SMA)
    3. Buy triggers only when stock or index moves above the high of a cross over bar.
    For shorts its Low and Volume still as discussed above and reverse cross over
    Also Stop loss and Targets are dynamic in nature.
    Have you tried any other combinations such as 2% SL and 5% Target because in your above example you mentioned Risk Reward as 1:5 and with that it is 30%.
    with RR 2,2.5,3,3.5 i believe results vary significantly,only then we can derive average success rate.
    By changing RR if you still get 11 continuous failed trades and max draw down of 70% also only 30% success none will be using RMO as its around 6 years old and used worldwide.

  5. dear sir
    1 doubt is the first signal of the day continuation of the previous day else it is fresh signal for the calendar day since iam intraday trader and should i consider 1st signal for trading,thanks

Leave a Reply

Your email address will not be published.