ChandeQStik_v1_001

Author: Copyright � 2006, TrendLaboratory Ltd.
ChandeQStik_v1_001

The ChandeQStick indicator is a technical analysis tool designed to help traders visualize momentum and the strength of price movements over a specific period. Rather than looking at raw price action alone, it focuses on the "body" of the price bars to determine whether the market is trending upward or downward with increasing intensity.

How the Logic Works

1. Measuring Price Movement (The Difference) The script begins by analyzing the difference between the opening and closing prices of each candle. By focusing only on this "difference," the indicator ignores "wicks" (the extreme highs and lows that don't result in a final price) and instead measures the actual progress made during that time frame.

2. Smoothing the Data To filter out市场的 "noise"—those small, erratic fluctuations that can lead to false signals—the script applies a Moving Average to those price differences. This smoothing process allows the tool to identify the underlying trend of the momentum rather than reacting to every minor price tick. Users can choose between different types of moving averages (such as Simple, Exponential, Smooth, or Linear Weighted) depending on how quickly they want the indicator to react to new information.

3. Visualizing Momentum (The Sticks) The final output is displayed as a histogram in a separate window. The logic determines the direction of the "sticks" based on whether the current momentum value is higher or lower than the previous one:

  • Upward Momentum: If the current smoothed value is greater than or equal to the previous one, the indicator shows an upward-pointing stick. This suggests that the buying pressure (or the strength of the trend) is sustaining or increasing.
  • Downward Momentum: If the current smoothed value is lower than the previous one, the indicator shows a downward-pointing stick. This signals that the selling pressure is gaining ground or that the current trend is weakening.

Summary for the Trader

In simple terms, this tool acts as a momentum tracker. It takes the "meat" of the price movement, smooths it out to see the bigger picture, and then shows you whether that movement is accelerating in a positive or negative direction. It helps traders quickly identify whether the current trend has strength behind it or if it is starting to falter.

Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1
11 Views
0 Downloads
0 Favorites
ChandeQStik_v1_001
//+------------------------------------------------------------------+
//|                                              ChandeQStick_v1.mq4 |
//|                           Copyright © 2006, TrendLaboratory Ltd. |
//|            http://finance.groups.yahoo.com/group/TrendLaboratory |
//|                                       E-mail: igorad2004@list.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, TrendLaboratory Ltd."
#property link      "http://finance.groups.yahoo.com/group/TrendLaboratory"
//----
#property indicator_separate_window
#property indicator_buffers   2
#property indicator_color1    LightBlue
#property indicator_color2    Orange
#property indicator_width1    3
#property indicator_width2    3
#property indicator_level1    0
//---- input parameters
extern int       Length =8; // Period of evaluation
extern int       MA_Mode=0; // MA mode : 0-SMA,1-EMA,2-SMMA,3-LWMA
//---- buffers
double CQS_Up[];
double CQS_Dn[];
double Diff[];
double CQS[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(4);
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,CQS_Up);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexBuffer(1,CQS_Dn);
   SetIndexBuffer(2,Diff);
   SetIndexBuffer(3,CQS);
//---- name for DataWindow and indicator subwindow label
   string short_name="ChandeQStick("+Length+","+MA_Mode+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,"CQS Up");
   SetIndexLabel(0,"CQS Down");
//----
   SetIndexDrawBegin(0,Length);
   SetIndexDrawBegin(1,Length);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int      shift, limit, counted_bars=IndicatorCounted();
//---- 
   /*
   if ( counted_bars < 0 ) return(-1);
   if ( counted_bars ==0 ) limit=Bars-Length-1;
   if ( counted_bars < 1 ) 
   for(int i=1;i<Length;i++) 
   {
   CQS_Up[Bars-i]=0;    
   CQS_Dn[Bars-i]=0;  
   CQS[Bars-i]=0;
   Diff[Bars-i]=0;
   }   
   if(counted_bars>0) limit=Bars-counted_bars;
   */
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//----
   for( shift=limit; shift>=0; shift--)
      Diff[shift]=Close[shift]-Open[shift];
//----
   for( shift=limit; shift>=0; shift--)
     {
      CQS[shift]=iMAOnArray(Diff,0,Length,0,MA_Mode,shift);
      if (CQS[shift]>=CQS[shift+1]) {CQS_Up[shift]=CQS[shift];CQS_Dn[shift]=0;}
      else
         if (CQS[shift]<CQS[shift+1]) {CQS_Dn[shift]=CQS[shift];CQS_Up[shift]=0;}
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+

Comments