//+------------------------------------------------------------------+
//|                                                  Force Histo.mq4 |
//|                                                              cja |
//+------------------------------------------------------------------+
#property copyright "cja"
#property link      "ccjjaa@gmail.com"

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Gray
#property indicator_style1 2
#property indicator_color2 DodgerBlue
#property indicator_width2 2
#property indicator_color3 Red
#property indicator_width3 2
#property indicator_color4 Gold
#property indicator_width4 1

//---- input parameters

extern string IIIIIIIIIIIIIIIIIIIII=">>> Force Settings >>>>>>>>>>>>>>>>>";
extern int	    Force_Period		= 13;
extern int      Force_Method		= 0;
extern int      Force_Price		= 0;

string name;
         
//---- indicator buffers
double zero[];
double forceUP[];
double forceDN[];
double Force[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorDigits(2);
  
   SetIndexBuffer(0,zero);
   SetIndexStyle(0,DRAW_LINE);
    
   SetIndexDrawBegin(1,Force_Period);
   SetIndexBuffer(1,forceUP);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   
   SetIndexDrawBegin(2,Force_Period);
   SetIndexBuffer(2,forceDN);
   SetIndexStyle(2,DRAW_HISTOGRAM);
  
   SetIndexDrawBegin(3,Force_Period);
   SetIndexBuffer(3,Force);
   SetIndexStyle(3,DRAW_LINE);
  
   SetIndexLabel(0,"zero");
   SetIndexLabel(1,"Force Up");
   SetIndexLabel(2,"Force Down");
   SetIndexLabel(3,"Force Index");
   
   name = ("Force Histo [ "+Force_Period+" ]");
   IndicatorShortName(name); 
   
   return(0);
  }
  //+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return(0);
  }  
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
      
   int counted_bars=IndicatorCounted();
   int limit = Bars-counted_bars-1;
   for(int i=limit; i>=0; i--)
   {
      zero[i]=0;
      Force[i]  =iForce(NULL,0,Force_Period,Force_Method,Force_Price,i); 
      
      if(Force[i]>=0){forceUP[i]=Force[i];
      forceDN[i]=0;
      }
      else if(Force[i]<0){forceDN[i]=Force[i];
      forceUP[i]=0;
      } 
      
      
     }
     
     
//---- done
   return(0);
  }
  
//+------------------------------------------------------------------+