Q(VolumeNorm_Low)

Download script
Author: MNS777
Q(VolumeNorm_Low)

This technical tool is designed to analyze market dynamics by focusing on the relationship between price movement and trading volume. Instead of looking at price alone, it evaluates how much "effort" (volume) is being expended to move the price in a specific direction, helping traders identify the intensity behind market trends.

Core Logic and Mechanics

The script operates through several distinct analytical stages to transform raw market data into visual signals:

1. Volume-Adjusted Movement Calculation The foundation of this indicator is a unique calculation that measures the distance between a candle's opening price and its low point, weighted against the total volume of that period. By dividing this price range by the volume, the script essentially determines the "cost" or "efficiency" of the downward movement. It highlights whether price drops are occurring on high liquidity or if they are becoming exhausted.

2. Smoothing and Trend Identification To prevent the data from appearing too erratic or "noisy," the script applies a Moving Average to the calculated volume-adjusted values. This smoothing process helps filter out minor market fluctuations, allowing the user to see the broader underlying trend of the volume-to-price relationship more clearly.

3. Directional Filtering and Visualization The indicator then categorizes these movements into specific visual components:

  • Dynamic Histograms: The tool separates the data into two distinct categories based on whether the movement is positive or negative. When the logic detects a specific direction, it highlights that value as a histogram; when the direction flips, it clears the opposite side. This creates a clean, visual "split" between different types of market pressure.
  • Signal Line: A dedicated signal line tracks the moving average of these values, providing a steady reference point to observe the overarching momentum.

Summary for the User

In practical terms, this script helps you visualize whether the market is moving with strong conviction or if it is losing steam. By normalizing price movements against volume, it provides a clearer picture of "true" market activity, making it easier to distinguish between significant trend shifts and insignificant price fluctuations.

Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1
10 Views
0 Downloads
0 Favorites
Q(VolumeNorm_Low)
//+------------------------------------------------------------------+
//| Web:                                           Q(VolumeNorm).mq4 |
//|                                                           MNS777 |
//|                                                mns777.ru@mail.ru |
//+------------------------------------------------------------------+
#property copyright "MNS777"
#property link      "Web:" 
//---- îòðèñîâêà èíäèêàòîðà â îòäåëüíîì îêíå
#property  indicator_separate_window
//---- êîëè÷åñòâî èíäèêàòîðíûõ áóôôåðîâ
#property  indicator_buffers 4
//---- öâåòà èíäèêàòîðà 
#property  indicator_color1  Black
#property  indicator_color2  Lime
#property  indicator_color3  Red
#property  indicator_color4  Blue
//---- òîëùèíà èíäèêàòîðíûõ ëèíèé
#property indicator_width1 1
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2

//---- ÂÕÎÄÍÛÅ ÏÀÐÀÌÅÒÐÛ ÈÍÄÈÊÀÒÎÐÀ þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþææ+
extern int PeriodMA = 24;
extern int ShiftMA = 0;
extern int ModeMA = 0;
extern double K = 1000;
extern int MaxBars = 1000 ; // áàðîâ èñòîðèè
extern string autor="Mns777.ru@mail.ru";
//---- æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ+

//---- èíäèêàòîðíûå áóôôåðû
double     ExtBuffer0[];
double     ExtBuffer1[];
double     ExtBuffer2[];
double   SignalBuffer[];

//+------------------------------------------------------------------+
//|        indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   //---- ñòèëè èçîáðàæåíèÿ èíäèêàòîðà
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexStyle(3,DRAW_LINE);
   //---- òî÷íîñòü
   IndicatorDigits(Digits+1);
   SetIndexDrawBegin(0,Digits);
   SetIndexDrawBegin(1,Digits);
   SetIndexDrawBegin(2,Digits);
   SetIndexDrawBegin(3,Digits);
//---- 3 èíäèêàòîðíûõ áóôôåðà èñïîëüçîâàíû äëÿ ñ÷¸òà.
   SetIndexBuffer(0,ExtBuffer0);
   SetIndexBuffer(1,ExtBuffer1);
   SetIndexBuffer(2,ExtBuffer2);
   SetIndexBuffer(3,SignalBuffer);
//---- èìåíà äëÿ îêîí äàííûõ è ëýéáû äëÿ ñóáúîêîí.
   IndicatorShortName("Q(VolumeNorm)");
   SetIndexLabel(1,NULL);
   SetIndexLabel(2,NULL);
   SetIndexLabel(3,"MA");
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int    limit;
   int    counted_bars=IndicatorCounted();
   double prev,current;
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=MaxBars;
//---- macd
   for(int i=0; i<limit; i++)
      ExtBuffer0[i]= ((Low[i] - Open[i])*K)/ Volume[i];
      
      //---- signal line counted in the 2-nd buffer
   for(i=0; i<limit; i++)
      SignalBuffer[i]=iMAOnArray(ExtBuffer0,Bars,PeriodMA,ShiftMA,ModeMA,i);
    
     
     
     
     
     
     
     
    
      
//---- dispatch values between 2 buffers
   bool up=true;
   for(i=limit-1; i>=0; i--)
     {
      current=ExtBuffer0[i];
     
      if(current>0) up=true;
      if(current<0) up=false;
      if(!up)
        {
         ExtBuffer2[i]=current;
         ExtBuffer1[i]=0.0;
        }
      else
        {
         ExtBuffer1[i]=current;
         ExtBuffer2[i]=0.0;
        }
     }
//---- done
   return(0);
  }
//+------------------------------------------------------------------+



Comments