//+------------------------------------------------------------------+
//|                                              FXPT_HotLine_v1.mq4 |
//|                                         Developed by fxprotrader |
//|                                     http://www.fxpro-trader.com" |
//| USE AT YOUR OWN RISK. Verify On Demo First.                      |
//| Verify On Demo First.                                            | 
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, FX ProTrader"
#property description "FX ProTrader"
#property link      "http://www.fxprotrader.net"
#property indicator_chart_window
//  #property strict


//-------- HISTORY----------------
// v1 Initial release(10152015)

#property indicator_chart_window

//---- input parameters

string FileName="FXPT_HotLine_v1";
string ID ="FXPThotline_";
string LineName="main";      

input string  Comment1="---UI Prefs---";
input int TextSize = 10;
input int TextDistance = 5;
input color TextClr=Red;
input int TextPos=15;
input int TextPosRight=4;
input color LineClr=Red;
input int LineWidth=1;
input int LvlStyle=0;
input int NumBars = 100;
input int PipsFromLine = 3;

input string  Comment2="---Last Update---";
input string Update="10.15.2015 06:15am";


//global
double Poin;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void){


if (Point == 0.00001) Poin = 0.0001; 
else if (Point == 0.001) Poin = 0.01; 
else Poin = Point; 

 string sObjName = ID+LineName;      
 ObjectCreate(sObjName, OBJ_HLINE,0,Time[0],Bid);
 ObjectSet(sObjName, OBJPROP_STYLE,LvlStyle);
 ObjectSet(sObjName, OBJPROP_COLOR,LineClr);        
 ObjectSet(sObjName, OBJPROP_WIDTH,LineWidth);

  sObjName = ID+LineName+"_text";
 ObjectDelete(sObjName);
 ObjectCreate(sObjName, OBJ_TEXT,0, Time[0]+(3600*5),Bid+(TextDistance*Poin));
 ObjectSetText(sObjName,"Drag line", TextSize, "Arial ", TextClr);

   
//--- initialization done
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit(const int reason){

  DeleteObjects(ID);

}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
//---
   if(id==CHARTEVENT_OBJECT_CLICK){
   
      string ClickedChartObject=sparam;
      //--- 
      if(ClickedChartObject == "baseLineName")
      //---
   int countonline=0;
 string sObjName = ID+LineName;      
double LinePrc = ObjectGetDouble(0, sparam, OBJPROP_PRICE,0);

for(int i=0; i<NumBars; i++){

if((LinePrc < High[i]+(PipsFromLine*Poin)) && (LinePrc > High[i]-(PipsFromLine*Poin))){
countonline++;
}
if((LinePrc < Low[i]+(PipsFromLine*Poin)) && (LinePrc > Low[i]-(PipsFromLine*Poin))){
countonline++;
}

sObjName = ID+LineName+"_text";
ObjectMove(sObjName,0,Time[0]+(3600*TextPosRight),LinePrc+(TextPos*Poin));
ObjectSetText(sObjName,IntegerToString(countonline), TextSize, "Arial", TextClr);
}
 ChartRedraw();
}

}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[]){

 
 
  return(rates_total);
}
//+------------------------------------------------------------------+
//                                                                   +
//+------------------------------------------------------------------+
void DeleteObjects(string label){
   int objs = ObjectsTotal();
   string name;
   for(int cnt=ObjectsTotal()-1;cnt>=0;cnt--)
   {
      name=ObjectName(cnt);
      if (StringFind(name,label,0)>-1) ObjectDelete(name);
      WindowRedraw();
   }
 return;
}
//+------------------------------------------------------------------+
