Author: Wolfe
MoR

The MoR indicator is a specialized technical analysis tool designed to provide traders with a multi-layered view of market momentum and trend strength. Instead of looking at standard price action alone, this script processes data through several mathematical filters to identify specific market conditions.

How the Logic Works

The indicator operates in three distinct stages to transform raw market data into actionable visual information:

1. Momentum Tracking (RSI) The foundation of the tool is based on the Relative Strength Index (RSI). The script first analyzes the price movement to determine the strength of an upward or downward trend. This provides a baseline for whether the market is becoming overextended or gaining significant velocity.

2. Dual Moving Average Processing Unlike standard indicators that apply moving averages directly to the price, this tool applies two different Moving Averages (specifically Exponential Moving Averages) directly onto the RSI data itself.

  • It calculates a short-term average (period of 10) to capture immediate momentum shifts.
  • It calculates a long-term average (period of 30) to establish the broader trend of that momentum.

By layering these averages over the RSI, the tool helps smooth out market "noise" and highlights the underlying direction of the price energy.

3. The Ratio Calculation The final and most unique component of the script is the Ratio calculation. The tool takes the short-term average and divides it by the long-term average (multiplied by 100).

This percentage ratio serves as a specialized "momentum speedometer." It allows traders to see not just where the price is going, but how fast the current momentum is accelerating or decelerating relative to its historical average.

Summary for Traders

By combining these three layers, the MoR indicator moves beyond simple price tracking. It offers a sophisticated way to visualize the relationship between short-term volatility and long-term trends, providing a clearer picture of market health and potential turning points.

Indicators Used
Relative strength indexMoving average indicator
Miscellaneous
Implements a curve of type %1
11 Views
0 Downloads
0 Favorites
MoR
//+--------------------------------------------------------------+
//|                                                      MoR.mq4 |
//+--------------------------------------------------------------+
#property copyright "Wolfe"
#property link "xxxxwolfe@gmail.com"

#property indicator_separate_window
#property indicator_level1  100
#property indicator_level2  80
#property indicator_level3  50
#property indicator_level4  20
#property indicator_buffers 4
#property indicator_color1 Black    //RSI
#property indicator_color2 Blue     //MA1
#property indicator_color3 Red      //MA2
#property indicator_color4 Green    //Ratio

int  RSI_Timeframe=0;//0=current chart,1=m1,5=m5,15=m15,30=m30,60=h1,240=h4,etc...
int  RSI_Period = 10;
int  RSI_Applied_Price = 0;//0=close, 1=open, 2=high, 3=low, 4=(high+low)/2, 5=(high+low+close)/3, 6=(high+low+close+close)/4
int  MA1_Period = 10;
int  MA1_Method = 1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA
int  MA2_Period = 30;
int  MA2_Method = 1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA

double RSI[],MA1_Array[],MA2_Array[],MR_Ratio[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators setting
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1); //RSI
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1); //EMA10
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1); //EMA30
SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2); //Ratio

SetIndexBuffer(0,RSI);
SetIndexLabel(0,"RSI");

SetIndexBuffer(1,MA1_Array);
SetIndexLabel(1,"MA1");

SetIndexBuffer(2,MA2_Array);
SetIndexLabel(2,"MA2");

SetIndexBuffer(3,MR_Ratio);
SetIndexLabel(3,"Ratio");

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
IndicatorShortName("MoR");

return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
   int i,limit = Bars - IndicatorCounted() - 1;

   //+------------------------------------------------------------------+
   //| RSI |
   //+------------------------------------------------------------------+
   for(i=limit; i>=0; i--){
      RSI[i]= iRSI(NULL,RSI_Timeframe,RSI_Period,RSI_Applied_Price,i);
   }
    
   //+------------------------------------------------------------------+
   //| EMA 10 & 30 |
   //+------------------------------------------------------------------+
   for(i=limit; i>=0; i--){ 
      MA1_Array[i] = iMAOnArray(RSI,0,MA1_Period,0,MA1_Method,i);
      MA2_Array[i] = iMAOnArray(RSI,0,MA2_Period,0,MA2_Method,i);
   }
   
   //+------------------------------------------------------------------+
   //| Ratio of EMA 10 & 30 |
   //+------------------------------------------------------------------+
   for (i=0; i<=limit; i++){
      MR_Ratio[i] = MA1_Array[i] / MA2_Array[i] * 100;
   }
   
   //----
   return(0);
}

Comments