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