Cronex DeMarker
Download scriptThe Cronex DeMarker is a specialized technical analysis tool designed to provide traders with a clearer view of market momentum and potential trend reversals. Unlike standard indicators that focus solely on price, this script analyzes the "strength" or "exhaustion" of price movements to help identify when a trend might be losing steam.
How the Logic Works
The indicator operates through a three-step layered calculation process:
1. The Momentum Foundation (DeMarker) At its core, the tool utilizes the DeMarker oscillator. This component tracks the relationship between the high and low prices of a period. By focusing on these extremes, it identifies whether the market is moving with conviction or if it is becoming overextended. It essentially acts as the "raw data" source for the rest of the indicator.
2. The Fast Smoothing Layer The script then takes that raw momentum data and applies a "Fast Moving Average." This calculation smooths out the jagged, rapid fluctuations of the DeMarker oscillator. By doing this, it filters out minor market noise, making it easier to see the immediate, short-term direction of the momentum.
3. The Slow Smoothing Layer Finally, the script applies a "Slow Moving Average" to that same momentum data. This provides a broader, long-term perspective of the trend. It represents the overall "health" of the market movement over a larger window of time.
How to Interpret the Results
By displaying these three components together in a separate window, the indicator allows you to see the relationship between different speeds of market momentum:
- Trend Confirmation: When the fast and slow smoothed lines move in the same direction, it confirms that the current trend has consistent strength.
- Potential Reversals: When there is a significant gap or a "crossing" between the fast and slow moving averages, it may signal that the momentum is shifting. For instance, if the fast line drops significantly below the slow line while the price is still high, it could indicate that the upward trend is exhausting.
- Visual Clarity: Because the script uses specific smoothing methods (Linear Weighted), it aims to react more dynamically to recent changes than a standard average would, helping traders spot turning points more efficiently.
//+------------------------------------------------------------------+
//| Cronex DeMarker.mq4 |
//| Copyright © 2007, Cronex. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, Cronex"
#property link "http://www.metaquotes.net/"
//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Silver
#property indicator_color2 Blue
#property indicator_color3 Red
//#property indicator_width1 2
//---- indicator parameters
extern int DeMarker=25;
extern int FastMA=14;
extern int SlowMA=25;
//---- indicator buffers
double DeMarkerBuffer[];
double FastMABuffer[];
double SlowMABuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- drawing settings
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);
SetIndexDrawBegin(1,SlowMA);
// IndicatorDigits(Digits+1);
//---- indicator buffers mapping
SetIndexBuffer(0,DeMarkerBuffer);
SetIndexBuffer(1,FastMABuffer);
SetIndexBuffer(2,SlowMABuffer);
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("Cronex DeMarker");
SetIndexLabel(0,"DeMarker");
SetIndexLabel(1,"Fast MA");
SetIndexLabel(2,"Slow MA");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Cronex DeMarker |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- DeMarker counted in the 1-st buffer
for(int i=0; i<limit; i++)
DeMarkerBuffer[i]=iDeMarker(NULL,0,DeMarker,i);
//---- signal line counted in the 2-nd buffer
for(i=0; i<limit; i++)
{
FastMABuffer[i]=iMAOnArray(DeMarkerBuffer,Bars,FastMA,0,MODE_LWMA,i);
SlowMABuffer[i]=iMAOnArray(DeMarkerBuffer,Bars,SlowMA,0,MODE_LWMA,i);
}
//---- done
return(0);
}
//+------------------------------------------------------------------+
Comments