ClarityIndex

Author: Copyright 2020, PuguForex.
Indicators Used
Moving average indicator
0 Views
0 Downloads
0 Favorites
ClarityIndex
//+------------------------------------------------------------------+
//|                                                 ClarityIndex.mq4 |
//|                                       Copyright 2020, PuguForex. |
//|                          https://www.mql5.com/en/users/puguforex |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, PuguForex."
#property link      "https://www.mql5.com/en/users/puguforex"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Black
#property indicator_width1 2
#property indicator_level1 0.0
#property indicator_levelstyle STYLE_DOT
#property indicator_levelcolor Silver

extern int            Lookback  = 14; //Lookback Period
extern int            Smoothing = 14; //Smoothing Period
extern ENUM_MA_METHOD Method    = MODE_EMA; //Smoothing Method
//
//
//
//
//

double ci[],bulls[],bears[],pos[],neg[],vi[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(6);
//--- indicator buffers mapping
      SetIndexBuffer(0,ci);
      SetIndexBuffer(1,bulls);
      SetIndexBuffer(2,bears);
      SetIndexBuffer(3,pos);
      SetIndexBuffer(4,neg);
      SetIndexBuffer(5,vi);
//---
   return(0);
  }
int deinit() { return(0); } 
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   int limit,counted_bars=IndicatorCounted();

   if(counted_bars<0)   return(-1);
   if(counted_bars>0) counted_bars--;
         limit = MathMin(Bars-counted_bars,Bars-1);

//---
   
   for(int i=limit; i>=0; i--)
   {
      bulls[i] = (i<Bars-1) ? Close[i]>Close[i+1] ? High[i]-Low[i] : 0 : 0;
      bears[i] = (i<Bars-1) ? Close[i]<Close[i+1] ? High[i]-Low[i] : 0 : 0;
      pos[i]   = bulls[i]==0 ? 0 : 1;
      neg[i]   = bears[i]==0 ? 0 : 1;
      
      double bullsSum = 1;
      double bearsSum = 1;
      double posSum   = 1;
      double negSum   = 1;
      double volSum   = 1;
      int k           = 1;
      
      for (k=1; k<Lookback && (i+k)<Bars; k++)
      {
       volSum   += (int)Volume[i+k];
       bullsSum += bulls[i+k];
       bearsSum += bears[i+k];
       posSum   += pos[i+k];
       negSum   += neg[i+k];
      }
      
      double gain = (volSum/Lookback)*(bullsSum/Lookback)*posSum;
      double loss = (volSum/Lookback)*(bearsSum/Lookback)*negSum;
      
      vi[i] = gain-loss;
      ci[i] = iMAOnArray(vi,0,Smoothing,0,Method,i);
   }   
   
//--- return value of prev_calculated for next call
   return(0);
  }
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---