//+------------------------------------------------------------------+
//|                                               Volume_Counter.mq4 |
//|                                                         Zen_Leow |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Zen_Leow"
#property link      ""

#property indicator_chart_window
extern int Count_Bars = 20;
extern int Top_Offset = 10; 
extern int Right_Offset  = 30;
extern string Corner_Index_Desc = "0:TopLeft | 1:TopRight | 2:BottomLeft | 3:BottomRight";
extern int Corner_Index = 3;
extern int InWindow = 0;
extern color Title_Text_Color = Yellow;
extern color UP_Text_Color = Green;
extern color DOWN_Text_Color = Red;


int Font_Size = 10;
int subsequent_offset = 15;

int Up_Volume = 0;
int Down_Volume = 0;

string indicatorName = "VolumeCounter";

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
   Up_Volume = 0;
   Down_Volume = 0;
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
//----
   ObjectsDeleteAll(0,"VolumeCounter_*",InWindow); 
//----
   return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+

void CalculateVolume()
{
   Up_Volume = 0;
   Down_Volume = 0;
   
   //for (int i=0; i<Count_Bars; i++)
   for (int i=Count_Bars; i>=0; i--)
   {
      if (Close[i] > Open[i])
      {
         Up_Volume = Up_Volume + Volume[i];
         
       } 
      
      if (Close[i] < Open[i])
      {
         Down_Volume = Down_Volume + Volume[i];
        
      }
   }
}

int start()
{  
   double percent = 0.0;

   CalculateVolume();
   ObjectsDeleteAll(0,"VolumeCounter_*",InWindow);
   
   if (Up_Volume > Down_Volume)
   {
      percent = MathRound(((Up_Volume-Down_Volume)/Up_Volume)*100);
      printf(percent);
      ObjectCreate(0,"VolumeCounter_Title", OBJ_LABEL, InWindow, 0, 0);
      ObjectSet("VolumeCounter_Title", OBJPROP_CORNER, Corner_Index);
      ObjectSet("VolumeCounter_Title", OBJPROP_XDISTANCE, Right_Offset);
      ObjectSet("VolumeCounter_Title", OBJPROP_YDISTANCE, Top_Offset);
      ObjectSetText("VolumeCounter_Title", "Number of Bars Counted: " + Count_Bars + " - " + DoubleToString(percent,0) + "% UP VOLUME", Font_Size, "Arial",  Title_Text_Color);
   }
   else
      if (Down_Volume > Up_Volume)
      {
         percent = MathRound(((Down_Volume-Up_Volume)/Down_Volume)*100);
         ObjectCreate(0,"VolumeCounter_Title", OBJ_LABEL, InWindow, 0, 0);
         ObjectSet("VolumeCounter_Title", OBJPROP_CORNER, Corner_Index);
         ObjectSet("VolumeCounter_Title", OBJPROP_XDISTANCE, Right_Offset);
         ObjectSet("VolumeCounter_Title", OBJPROP_YDISTANCE, Top_Offset);
         ObjectSetText("VolumeCounter_Title", "Number of Bars Counted: "+Count_Bars+" - "+DoubleToString(percent,0)+"% DOWN VOLUME", Font_Size, "Arial",  Title_Text_Color);
      }   
   
   
   ObjectCreate(0,"VolumeCounter_UpLabel", OBJ_LABEL, InWindow,0, 0);
   ObjectSet("VolumeCounter_UpLabel", OBJPROP_CORNER, Corner_Index);
   ObjectSet("VolumeCounter_UpLabel", OBJPROP_XDISTANCE, Right_Offset);
   ObjectSet("VolumeCounter_UpLabel", OBJPROP_YDISTANCE, Top_Offset+subsequent_offset);
   ObjectSetText("VolumeCounter_UpLabel", "UP Bars: "+DoubleToString(Up_Volume,0), Font_Size,"Arial", UP_Text_Color);
      
   ObjectCreate(0, "VolumeCounter_DownLabel", OBJ_LABEL, InWindow,0, 0);
   ObjectSet("VolumeCounter_DownLabel", OBJPROP_CORNER, Corner_Index);
   ObjectSet("VolumeCounter_DownLabel", OBJPROP_XDISTANCE, Right_Offset);
   ObjectSet("VolumeCounter_DownLabel", OBJPROP_YDISTANCE, Top_Offset+subsequent_offset*2);
   ObjectSetText("VolumeCounter_DownLabel", "DOWN Bars: "+DoubleToString(Down_Volume,0), Font_Size, "Arial",DOWN_Text_Color);
   
 //----
   return(0);
}

//+------------------------------------------------------------------+