
#property copyright "Peter D."
#property link      ""

#property indicator_chart_window

extern string Panel_Position_Settings = "<<< Panel Position Settings >>>";
extern int Which_Window = 0;
extern int Which_Corner = 3;
extern int X_Position = 0;
extern int Y_Position = 5;

extern string pus1 = "";
extern string Panel_Color = "<<< Panel Color Settings >>>";
extern color PC_Color1 = OrangeRed;
extern color PC_Color2 = Black;
extern bool One_BackGround_Color = False;
string gs_unused_128 = "If \'One_BackGround_Color\' is true";
string gs_unused_136 = "individual background is ignored.";

extern string pus2 = "";
extern string Pair_Name = "<<< \'Pair Name\' Color Settings >>>";
extern bool PN = TRUE;
extern color PNS_color1= White;
extern color PNS_color2 = Black;

extern string pus3 = "";
extern string Price_color = "<<< Price Color Settings >>>";
extern bool PC = TRUE;
extern color PC_color1 = PaleGreen;
extern color PC_color2 = DeepPink;
extern color PC_color3 = RoyalBlue;
extern color PC_color4 = Black;

extern string pus4 = "";
extern string Spread_color = "<<< Spread Color Settings >>>";
extern bool SC = TRUE;
extern color SC_color1 = Yellow;
extern color SC_color2 = Black;

extern string pus5 = "";
extern string Volume_color = "<<< Volume Color Settings >>>";
extern bool DV = TRUE;
extern color DV_color1 = MediumSeaGreen;
extern color DV_color2 = Red;

extern string pus6 = "";
extern string Pips_To_Open = "<<< \'Pips To Open\' Settings >>>";
extern bool PTO = TRUE;
extern color PTO_color1 = MediumSeaGreen;
extern color PTO_color2 = Red;
extern color PTO_color3 = Yellow;
extern color PTO_color4 = Black;
extern string PTO_TF = "D1";
extern string USE_TF_PTO = "use M1,M5,M15,M30,H1,H4,W1,MN";

extern string pus7 = "";
extern string Per_day_ran = "<<< \'Open_range_percents\' Settings >>>";
extern bool DRP = TRUE;
extern color Color_up = MediumSeaGreen;
extern color Color_down = Red;

extern string pus8 = "";
extern string High_To_Low = "<<< \'High to Low\' Settings >>>";
extern bool HTL = TRUE;
extern color HTL_color1 = Yellow;
extern color HTL_color2 = Black;
extern string HTL_TF = "D1";
extern string USE_TF_HTL = "use M1,M5,M15,M30,H1,H4,W1,MN";

extern string pus9 = "";
extern string Daily_Avarage = "<<< \'Daily Average\' Settings >>>";
extern bool DA = true;
extern color DA_color1 = MediumSeaGreen;
extern color DA_color2 = Red;
extern color DA_color3 = Yellow;
extern color DA_color4 = Black;

extern string pus10 = "";
extern string ATR_Pips = "<<< \'ATR Pips\' Settings >>>";
extern bool ATR = TRUE;
extern color ATR_color1 = Yellow;
extern color ATR_color2 = Black;
extern int koef_ATR = 3;
extern int ATR_period = 14;
extern int Trade_level_ATR = 6;
extern color Trade_color_ATR = Turquoise;

extern string pus11 = "";
extern string Candle_time = "<<< \'Candle Time\' Settings >>>";
extern bool CT = TRUE;
extern color CT_color1 = Orange;
extern color CT_color2 = Black;

extern string pus12 = "";
extern string En_lot = "<<< \'Enter_lot_percents\' Settings >>>";
extern bool EL = TRUE;
extern double balance_part = 24;
extern color Color_en = DarkTurquoise;

extern string pus13 = "";
extern string sca = "<<< \'Scale\' Settings >>>";
extern bool SCA = TRUE;
extern double Scale_value = 200;
extern color Color_sc = White;
extern color Color_sc_value = LightBlue;

extern string pus14 = "";
extern string Description = "<<< Description color Settings >>>";
extern color Des_color = White;
string gs_zthvinfo_452 = "ZTHVinfo";
string gs_460 = "THV3 Info";
string gs_468 = "_________________________________";
string gs_arial_476 = "Arial";
int gi_484 = 5;
int gi_488 = 8421504;
int gi_492 = -1;
int gi_496 = 8421504;
int gi_500 = 6908265;
string gs_unused_504 = "Arial";
int gi_unused_512 = 8;
string gs_unused_516 = "Tahoma";
int gi_unused_524 = 8;
string gs_arial_528 = "Arial";
string g_fontname_536 = "Arial Bold";
double g_bid_544 = 0.0;
int gi_552 = 0;
string gs_desc_556 = "Desc";
int gi_564 = 0;
int gi_568 = 30;
int gi_572 = 20;
int gi_576 = 0;
int gi_unused_580 = 0;
int gi_584 = 0;
int Dig_sp;
double point_sp;


int init() {
point_sp=Point;
if(Digits==3 || Digits==5) {point_sp*=10; Dig_sp=1;}


   IndicatorShortName(gs_460);
   CreateAllObjects();
   return (0);
}

int start() {
   UpdateAllObjects();
   return (0);
}

int deinit() {
   DeleteAllObjects();
   return (0);
}

void createObject(string a_name_0, string a_fontname_8, int a_fontsize_16, string a_text_20, color a_color_28, int a_x_32, int a_y_36, int a_corner_40, int a_window_44) {
   if (ObjectFind(a_name_0) != -1) ObjectDelete(a_name_0);
   ObjectCreate(a_name_0, OBJ_LABEL, a_window_44, 0, 0);
   ObjectSet(a_name_0, OBJPROP_CORNER, a_corner_40);
   ObjectSet(a_name_0, OBJPROP_COLOR, a_color_28);
   ObjectSet(a_name_0, OBJPROP_XDISTANCE, a_x_32);
   ObjectSet(a_name_0, OBJPROP_YDISTANCE, a_y_36);
   ObjectSetText(a_name_0, a_text_20, a_fontsize_16, a_fontname_8, a_color_28);
}

string getLabelNumber() {
   gi_576++;
   string ls_ret_0 = "L" + DoubleToStr(gi_576, 0);
   return (ls_ret_0);
}

int GetIntPeriod(string as_0) {
   int li_ret_8 = 0;
   if (as_0 == "M1") li_ret_8 = 1;
   if (as_0 == "M5") li_ret_8 = 5;
   if (as_0 == "M15") li_ret_8 = 15;
   if (as_0 == "M30") li_ret_8 = 30;
   if (as_0 == "H1") li_ret_8 = 60;
   if (as_0 == "H4") li_ret_8 = 240;
   if (as_0 == "D1") li_ret_8 = 1440;
   if (as_0 == "W1") li_ret_8 = 10080;
   if (as_0 == "MN") li_ret_8 = 43200;
   return (li_ret_8);
}

void createBackPanel(int ai_0, int ai_4, int ai_8) {
   int li_12 = 30;
   int li_16 = 20;
   int li_20 = ai_4 - 5;
   int li_32 = Which_Corner;
   if (li_32 != 1) {
      if (li_32 == 3) {
      }
   }
   int li_28 = 6;
   int li_24 = ai_0 - 24;
   if (false) {
      li_28 = 5;
      li_24 = ai_0 - 5;
   }
   for (int li_36 = 1; li_36 <= li_28; li_36++) {
      createObject(gs_zthvinfo_452 + "_P" + gi_584, "Wingdings", li_12, CharToStr(110), ai_8, li_24, li_20, Which_Corner, Which_Window);
      gi_584++;
      li_24 += li_16;
   }
}

void createSystemInfo(int ai_0, int &ai_4) {
   int li_8;
   int li_12;
   if (Which_Corner > 1) {
      ai_4 += gi_564;
      li_12 = -1;
      li_8 = ai_4;
   } else {
      li_12 = 1;
      li_8 = ai_4;
   }
   createBackPanel(ai_0, li_8, PC_Color2);
   createBackPanel(ai_0, li_8 + 13 * li_12, PC_Color2);
   if (Which_Corner == 2 || Which_Corner == 3) li_8 += gi_568 - 5;
   else li_8 += 3;
   createObject(gs_zthvinfo_452 + getLabelNumber(), gs_arial_476, gi_484, 0, gi_488, ai_0, li_8, Which_Corner, Which_Window);
   li_8 += 1 * li_12;
   createObject(gs_zthvinfo_452 + getLabelNumber(), gs_arial_476, gi_484, 0, gi_492, ai_0, li_8, Which_Corner, Which_Window);
   li_8 += 5 * li_12;
   if (li_12 < 0) li_8 -= 10;
   createObject(gs_zthvinfo_452 + "THV  ", "Arial Bold", 9, "THV  " + " " + "V4  Info", gi_496, ai_0 + 11, li_8+16, Which_Corner, Which_Window);
   li_8 += 15 * li_12;
   if (li_12 < 0) li_8 += 4;
   createObject(gs_zthvinfo_452 + "Peter D in FF", "Arial", 8, CharToStr(169) + " " + "Peter D in FF", gi_500, ai_0 + 12, li_8 + 15, Which_Corner, Which_Window);
   li_8 += li_12 << 30;
   if (li_12 < 0) li_8 += 5;
   createObject(gs_zthvinfo_452 + getLabelNumber(), gs_arial_476, gi_484, gs_468, gi_492, ai_0, li_8, Which_Corner, Which_Window);
   li_8 += 1 * li_12;
   createObject(gs_zthvinfo_452 + getLabelNumber(), gs_arial_476, gi_484, gs_468, gi_488, ai_0, li_8, Which_Corner, Which_Window);
   if (Which_Corner > 1) {
      ai_4 -= gi_568 - 10;
      return;
   }
   ai_4 += gi_568;
}

void createTickerLabel(int ai_0, int &ai_4) {
   int li_8;
   int li_12;
   if (Which_Corner > 1) li_8 = ai_4 - 8;
   else li_8 = ai_4 + 10;
   if (One_BackGround_Color) li_12 = PC_Color2;
   else li_12 = PNS_color2;
   createObject(gs_zthvinfo_452 + "lblPairName", g_fontname_536, 14, Symbol(), PNS_color1, ai_0 + 15, li_8+8, Which_Corner, Which_Window);
   adjustNextItemPosition(ai_0, li_8+6, ai_4, li_12);
}

void createPriceLabel(int ai_0, int &ai_4) {
   int li_8;
   int li_12;
   if (Which_Corner > 1) li_8 = ai_4 - 8;
   else li_8 = ai_4 + 10;
   if (One_BackGround_Color) li_12 = PC_Color2;
   else li_12 = PC_color4;
   createObject(gs_zthvinfo_452 + "lblPrice", g_fontname_536, 14, DoubleToStr(g_bid_544, Digits), getPriceColor(), ai_0 + 20, li_8, Which_Corner, Which_Window);
   adjustNextItemPosition(ai_0, li_8, ai_4, li_12);
}

void createSpreadLabel(int ai_0, int &ai_4) {
   int li_8;
   int li_12;
   int li_16;
   int li_20;
   if (Which_Corner > 1) li_8 = ai_4 - 8;
   else li_8 = ai_4 + 10;
   if (One_BackGround_Color) li_20 = PC_Color2;
   else li_20 = SC_color2;
   if (Which_Corner == 1 || Which_Corner == 3) {
      li_12 = 65;
      li_16 = 20;
   } else {
      li_12 = 20;
      li_16 = 65;
   }
   createObject(gs_zthvinfo_452 + "lblSpread" + gs_desc_556, gs_arial_528, 8, "Spread:", Des_color, ai_0 - 14 + li_12, li_8 + 4, Which_Corner, Which_Window);
   createObject(gs_zthvinfo_452 + "lblSpread", g_fontname_536, 10, DoubleToStr((Ask - Bid) / point_sp, Dig_sp), SC_color1, ai_0 + 1 + li_16, li_8 + 1, Which_Corner, Which_Window);
   adjustNextItemPosition(ai_0, li_8, ai_4, li_20);
}

///////////////////////////////
void createDaily_Volume(int ai_0, int &ai_4) {
   int li_8;
   int li_12;
   int li_16;
   int li_20;
   if (Which_Corner > 1) li_8 = ai_4 - 8;
   else li_8 = ai_4 + 10;
   if (One_BackGround_Color) li_20 = PC_Color2;
   else li_20 = HTL_color2;
   if (Which_Corner == 1 || Which_Corner == 3) {
      li_12 = 40;
      li_16 = 5;
   } else {
      li_12 = -10;
      li_16 = 60;
   }
   
   
   createObject(gs_zthvinfo_452 + "lblDailyVolume" + gs_desc_556, gs_arial_528, 8, "D volume:", Des_color, ai_0 + li_12+12, li_8 + 4, Which_Corner, Which_Window);
   createObject(gs_zthvinfo_452 + "lblDailyVolume", g_fontname_536, 10, DoubleToStr(iVolume(Symbol(),PERIOD_D1,0),0), Black, ai_0 - 2 + li_16, li_8 + 1, Which_Corner, Which_Window);
   adjustNextItemPosition(ai_0, li_8, ai_4, li_20);
   }

void createPipsToOpenLabel(int ai_0, int &ai_4) {
   int li_8;
   int li_12;
   int li_16;
   int li_20;
   if (Which_Corner > 1) li_8 = ai_4 - 8;
   else li_8 = ai_4 + 10;
   if (One_BackGround_Color) li_20 = PC_Color2;
   else li_20 = PTO_color4;
   if (Which_Corner == 1 || Which_Corner == 3) {
      li_12 = 35;
      li_16 = 5;
   } else {
      li_12 = 3;
      li_16 = 70;
   }
   int li_24 = getPipsToOpenValue();
   int li_28 = getPipsToOpenColor();
   createObject(gs_zthvinfo_452 + "lblPipsToOpen" + gs_desc_556, gs_arial_528, 8, "Pips to Open:", Des_color, ai_0 + li_12, li_8 + 4, Which_Corner, Which_Window);
   createObject(gs_zthvinfo_452 + "lblPipsToOpen", g_fontname_536, 7, DoubleToStr(li_24, 0), li_28, ai_0 + 0 + li_16, li_8 + 1, Which_Corner, Which_Window);
   adjustNextItemPosition(ai_0, li_8, ai_4, li_20);
}

///////////////////////////////
void createDay_Range_PercentsLabel(int ai_0, int &ai_4) {
   int li_8;
   int li_12;
   int li_16;
   int li_20;
   if (Which_Corner > 1) li_8 = ai_4 - 8;
   else li_8 = ai_4 + 10;
   if (One_BackGround_Color) li_20 = PC_Color2;
   else li_20 = HTL_color2;
   if (Which_Corner == 1 || Which_Corner == 3) {
      li_12 = 40;
      li_16 = 5;
   } else {
      li_12 = 5;
      li_16 = 70;
   }
   createObject(gs_zthvinfo_452 + "lblDayRangePercents" + gs_desc_556, gs_arial_528, 8, "Open per(%):", Des_color, ai_0 + li_12 - 8, li_8 + 4, Which_Corner, Which_Window);
   createObject(gs_zthvinfo_452 + "lblDayRangePercents", g_fontname_536, 10, DoubleToStr(getDay_range_percents(), 0), Black, ai_0 + 0 + li_16, li_8 + 1, Which_Corner, Which_Window);
   adjustNextItemPosition(ai_0, li_8, ai_4, li_20);
   }
   
   //////
int getDay_range_percents()
{
 color Color;
  double day_percent_Op;
  
  
  if(Bid>iOpen(Symbol(),PERIOD_D1,0)) 
  {
  Color=Color_up; 
  double high_open_100_1=100/(((iHigh(Symbol(),PERIOD_D1,0)-iOpen(Symbol(),PERIOD_D1,0))/Point));
  day_percent_Op=high_open_100_1*((Bid-iOpen(Symbol(),PERIOD_D1,0))/Point);
  }
  
  if(Bid<iOpen(Symbol(),PERIOD_D1,0)) 
  {
  Color=Color_down; 
  double open_low_100_1=100/(((iOpen(Symbol(),PERIOD_D1,0)-iLow(Symbol(),PERIOD_D1,0))/Point));
  day_percent_Op=open_low_100_1*((iOpen(Symbol(),PERIOD_D1,0)-Bid)/Point);
  }
 
return(day_percent_Op);
}

void createHighToLowLabel(int ai_0, int &ai_4) {
   int li_8;
   int li_12;
   int li_16;
   int li_20;
   if (Which_Corner > 1) li_8 = ai_4 - 8;
   else li_8 = ai_4 + 10;
   if (One_BackGround_Color) li_20 = PC_Color2;
   else li_20 = HTL_color2;
   if (Which_Corner == 1 || Which_Corner == 3) {
      li_12 = 40;
      li_16 = 5;
   } else {
      li_12 = 5;
      li_16 = 70;
   }
   createObject(gs_zthvinfo_452 + "lblHighToLow" + gs_desc_556, gs_arial_528, 8, "High to Low:", Des_color, ai_0 + li_12 - 3, li_8 + 4, Which_Corner, Which_Window);
   createObject(gs_zthvinfo_452 + "lblHighToLow", g_fontname_536, 10, DoubleToStr(getHighToLow(), 0), HTL_color1, ai_0 + 0 + li_16, li_8 + 1, Which_Corner, Which_Window);
   adjustNextItemPosition(ai_0, li_8, ai_4, li_20);
}


////////////////////////////////////////////////////////////////
void createDailyAverageLabel(int ai_0, int &ai_4) {
   int li_8;
   int li_12;
   int li_16;
   int li_20;
   if (Which_Corner > 1) li_8 = ai_4 - 8;
   else li_8 = ai_4 + 10;
   if (One_BackGround_Color) li_20 = PC_Color2;
   else li_20 = DA_color4;
   if (Which_Corner == 1 || Which_Corner == 3) {
      li_12 = 32;
      li_16 = 5;
   } else {
      li_12 = 2;
      li_16 = 73;
   }
   createObject(gs_zthvinfo_452 + "lblDailyAverage" + gs_desc_556, gs_arial_528, 8, "Daily Average:", Des_color, ai_0 + li_12-4, li_8 + 2, Which_Corner, Which_Window);
   createObject(gs_zthvinfo_452 + "lblDailyAverage", g_fontname_536, 8, getDailyAverageValue(), getDailyAverageColor(), ai_0 + 0 + li_16, li_8 + 1, Which_Corner, Which_Window);
   adjustNextItemPosition(ai_0, li_8, ai_4, li_20);
}

void createATRPipsLabel(int ai_0, int &ai_4) {
   int li_8;
   int li_12;
   int li_16;
   int li_20;
   if (Which_Corner > 1) li_8 = ai_4 - 8;
   else li_8 = ai_4 + 10;
   if (One_BackGround_Color) li_20 = PC_Color2;
   else li_20 = ATR_color2;
   if (Which_Corner == 1 || Which_Corner == 3) {
      li_12 = 28;
      li_16 = 2;
   } else {
      li_12 = -14;
      li_16 = 73;
   }
   createObject(gs_zthvinfo_452 + "lblATRPips" + gs_desc_556, gs_arial_528, 8, "ATR (TP):", Des_color, ai_0 + li_12+19, li_8 + 4, Which_Corner, Which_Window);
   createObject(gs_zthvinfo_452 + "lblATRPips", g_fontname_536, 10, DoubleToStr(getATRPipsStopLossValue(), 0), ATR_color1, ai_0 + 12 + li_16, li_8 + 2, Which_Corner, Which_Window);
   adjustNextItemPosition(ai_0, li_8, ai_4, li_20);
}

void createCandleTimeLabel(int ai_0, int &ai_4) {
   int li_8;
   int li_12;
   int li_16;
   int li_20;
   if (Which_Corner > 1) li_8 = ai_4 - 8;
   else li_8 = ai_4 + 10;
   if (One_BackGround_Color) li_20 = PC_Color2;
   else li_20 = CT_color2;
   if (Which_Corner == 1 || Which_Corner == 3) {
      li_12 = 60;
      li_16 = 3;
   } else {
      li_12 = 4;
      li_16 = 42;
   }
   createObject(gs_zthvinfo_452 + "lblCandleTime" + gs_desc_556, gs_arial_528, 8, "Candle:", Des_color, ai_0 + li_12, li_8 + 4, Which_Corner, Which_Window);
   createObject(gs_zthvinfo_452 + "lblCandleTime", g_fontname_536, 10, getCandleTime(), CT_color1, ai_0 + li_16, li_8 + 2, Which_Corner, Which_Window);
   adjustNextItemPosition(ai_0, li_8, ai_4, li_20);
}

///////////////////////////////
void createEnterLotLabel(int ai_0, int &ai_4) {
   int li_8;
   int li_12;
   int li_16;
   int li_20;
   if (Which_Corner > 1) li_8 = ai_4 - 8;
   else li_8 = ai_4 + 10;
   if (One_BackGround_Color) li_20 = PC_Color2;
   else li_20 = HTL_color2;
   if (Which_Corner == 1 || Which_Corner == 3) {
      li_12 = 40;
      li_16 = 5;
   } else {
      li_12 = 5;
      li_16 = 70;
   }
   int lot_okrug=1;
   if(Digits==3 || Digits==5) lot_okrug=2;
   
   createObject(gs_zthvinfo_452 + "lblEnterLot" + gs_desc_556, gs_arial_528, 8, "Lot to open:", Des_color, ai_0 + li_12 - 3, li_8 + 4, Which_Corner, Which_Window);
   createObject(gs_zthvinfo_452 + "lblEnterLot", g_fontname_536, 10, DoubleToStr(getEnterLot(),lot_okrug), Black, ai_0 - 2 + li_16, li_8 + 1, Which_Corner, Which_Window);
   adjustNextItemPosition(ai_0, li_8, ai_4, li_20);
   }
   
   ///////////////////////////////
void createScaleLabel(int ai_0, int &ai_4) {
double poi=Point;
if(Digits==3 || Digits==5)
poi/=10;

   int li_8;
   int li_12;
   int li_16;
   int li_20;
   if (Which_Corner > 1) li_8 = ai_4 - 8;
   else li_8 = ai_4 + 10;
   if (One_BackGround_Color) li_20 = PC_Color2;
   else li_20 = HTL_color2;
   if (Which_Corner == 1 || Which_Corner == 3) {
      li_12 = 60;
      li_16 = 5;
   } else {
      li_12 = 5;
      li_16 = 70;
   }
  
   
   createObject(gs_zthvinfo_452 + "lblScale" + gs_desc_556, gs_arial_528, 8, "Scale:", Des_color, ai_0 + li_12 - 3, li_8 + 4, Which_Corner, Which_Window);
   createObject(gs_zthvinfo_452 + "lblScale", g_fontname_536, 10,DoubleToStr((WindowPriceMax()-WindowPriceMin())/poi,0), Black, ai_0 - 2 + li_16, li_8 + 1, Which_Corner, Which_Window);
   adjustNextItemPosition(ai_0, li_8, ai_4, li_20);
   }


////////////////////////
double getEnterLot()
{
int lot_okrug=1;
if(Digits==3 || Digits==5) lot_okrug=2;

double ret_lot=NormalizeDouble(MathFloor(AccountBalance()/balance_part)/100,lot_okrug);
if(ret_lot<MarketInfo(Symbol(),MODE_MINLOT)) ret_lot=MarketInfo(Symbol(),MODE_MINLOT);

return(ret_lot);
}


void drawSeparatorLine(int ai_0, int ai_4) {
   createObject(gs_zthvinfo_452 + getLabelNumber(), gs_arial_476, gi_484-1, gs_468, PC_Color1, ai_0, ai_4, Which_Corner, Which_Window);
}

void adjustNextItemPosition(int ai_0, int ai_4, int &ai_8, int ai_12) {
   if (Which_Corner < 2) ai_4 -= 6;
   else ai_4 -= 8;
   createBackPanel(ai_0, ai_4, ai_12);
   if (Which_Corner < 2) ai_4 += 20;
   else ai_4 += 8;
   drawSeparatorLine(ai_0, ai_4);
   if (Which_Corner > 1) {
      ai_8 -= gi_572;
      return;
   }
   ai_8 += gi_572;
}

double calcPoint() {
   double l_point_0;
   if (Point == 0.00001) l_point_0 = 0.0001;
   else {
      if (Point == 0.001) l_point_0 = 0.01;
      else l_point_0 = Point;
   }
   return (l_point_0);
}

int getPriceColor() {
   int li_ret_0 = PC_color3;
   if (Bid > g_bid_544) li_ret_0 = PC_color1;
   if (Bid < g_bid_544) li_ret_0 = PC_color2;
   g_bid_544 = Bid;
   return (li_ret_0);
}

int getPipsToOpenValue() {
   int l_timeframe_0 = GetIntPeriod(PTO_TF);
   double l_iopen_4 = iOpen(NULL, l_timeframe_0, 0);
   double l_iclose_12 = iClose(NULL, l_timeframe_0, 0);
   int li_ret_20 = (l_iclose_12 - l_iopen_4) / calcPoint();
   return (li_ret_20);
}

int getPipsToOpenColor() {
   int li_ret_0 = PTO_color3;
   int li_4 = getPipsToOpenValue();
   if (li_4 > gi_552) li_ret_0 = PTO_color1;
   else li_ret_0 = PTO_color2;
   return (li_ret_0);
}

double getHighToLow() {
   int l_timeframe_0 = GetIntPeriod(HTL_TF);
   double l_ihigh_4 = iHigh(NULL, l_timeframe_0, 0);
   double l_ilow_12 = iLow(NULL, l_timeframe_0, 0);
   return ((l_ihigh_4 - l_ilow_12) / calcPoint());
}

string getDailyAverageValue() {
   string l_dbl2str_0;
   double ld_8 = calcDailyAverage(1);
   if (Point == 0.00001) l_dbl2str_0 = DoubleToStr(ld_8, Digits - 5);
   else l_dbl2str_0 = DoubleToStr(ld_8, Digits - 4);
   return (l_dbl2str_0);
}

int getDailyAverageColor() {
   int li_ret_0 = DA_color3;
   double ld_4 = calcDailyAverage(1);
   double ld_12 = calcDailyAverage(2);
   if (ld_4 > ld_12) li_ret_0 = DA_color1;
   else
      if (ld_4 < ld_12) li_ret_0 = DA_color2;
   return (li_ret_0);
}

int getATRPipsStopLossValue() {
   int li_8;
   double ld_ret_0 = 0;
   if (koef_ATR > 0) {
      if (StringFind(Symbol(), "JPY", 0) != -1) li_8 = 100;
      else li_8 = 10000;
      ld_ret_0 = MathCeil(li_8 * koef_ATR * iATR(NULL, 0, ATR_period, 0));
   }
   return (ld_ret_0);
}


void calcTotalHeights() {
   gi_564 = gi_568;
   if (PN) gi_564 += gi_572;
   if (PC) gi_564 += gi_572;
   if (SC) gi_564 += gi_572;
   if (PTO) gi_564 += gi_572;
   
   if (DRP) gi_564 += gi_572;
   
   if (HTL) gi_564 += gi_572;
   if (DA) gi_564 += gi_572;
   if (ATR) gi_564 += gi_572;
   if (CT) gi_564 += gi_572;
   
    if (EL) gi_564 += gi_572;
     if (SCA) gi_564 += gi_572;
}

string getCandleTime() {
   string ls_ret_0;
   int li_12;
   int li_16;
   int li_20;
   int li_24;
   string ls_unused_28;
   string ls_unused_36;
   string ls_44;
   string ls_52;
   string ls_60;
   if (Period() < PERIOD_W1) {
      ls_unused_28 = "  ";
      ls_unused_36 = "  ";
      li_24 = Time[0] + 60 * Period() - TimeCurrent();
      li_20 = li_24 % 60;
      ls_44 = li_20;
      if (li_20 < 10) ls_44 = "0" + ls_44;
      li_16 = (li_24 - li_24 % 60) / 60;
      for (int l_count_8 = 0; l_count_8 < 24; l_count_8++) {
         if (li_16 >= 60) {
            li_16 -= 60;
            li_12++;
         }
      }
      ls_52 = li_16;
      if (li_16 < 10) ls_52 = "0" + ls_52;
      ls_60 = li_12;
      if (li_12 < 10) ls_60 = "0" + ls_60;
      ls_ret_0 = ls_52 + ":" + ls_44;
      if (li_12 >= 1) ls_ret_0 = ls_60 + ":" + ls_52 + ":" + ls_44;
   } else ls_ret_0 = "Only<W1";
   return (ls_ret_0);
}

double calcDailyAverage(int ai_0) {
   double ld_24;
   double ld_32;
   double ld_40;
   int l_timeframe_4 = 1440;
   double ld_8 = calcPoint();
   double ld_16 = (iHigh(NULL, l_timeframe_4, ai_0) - iLow(NULL, l_timeframe_4, ai_0)) / ld_8;
   for (int li_56 = ai_0; li_56 <= ai_0 + 4; li_56++) ld_24 += (iHigh(NULL, l_timeframe_4, li_56) - iLow(NULL, l_timeframe_4, li_56)) / ld_8;
   ld_24 /= 5.0;
   for (li_56 = ai_0; li_56 <= ai_0 + 9; li_56++) ld_32 += (iHigh(NULL, l_timeframe_4, li_56) - iLow(NULL, l_timeframe_4, li_56)) / ld_8;
   ld_32 /= 10.0;
   for (li_56 = ai_0; li_56 <= ai_0 + 19; li_56++) ld_40 += (iHigh(NULL, l_timeframe_4, li_56) - iLow(NULL, l_timeframe_4, li_56)) / ld_8;
   ld_40 /= 20.0;
   double ld_ret_48 = (ld_16 + ld_24 + ld_32 + ld_40) / 4.0;
   return (ld_ret_48);
}

void CreateAllObjects() {
   int li_4;
   int li_8;
   int li_unused_12;
   //string ls_unused_28;
   if (Which_Window >= 0) {
      if (Which_Corner < 0 || Which_Corner > 3) Which_Corner = 0;
      li_4 = X_Position + 5;
      li_8 = Y_Position + 5;
      li_unused_12 = li_8;
      calcTotalHeights();
      createSystemInfo(li_4, li_8);
      if (PN) createTickerLabel(li_4, li_8);
      if (PC) createPriceLabel(li_4, li_8);
      if (SC) createSpreadLabel(li_4, li_8);
      
      if (DV) createDaily_Volume(li_4, li_8);
      
      if (PTO) createPipsToOpenLabel(li_4, li_8);
      
      if (DRP) createDay_Range_PercentsLabel(li_4, li_8);
      
      if (HTL) createHighToLowLabel(li_4, li_8);
      if (DA) createDailyAverageLabel(li_4, li_8);
      if (ATR) createATRPipsLabel(li_4, li_8);
      if (CT) createCandleTimeLabel(li_4, li_8);
      
      if (EL) createEnterLotLabel(li_4, li_8);
      if (SCA) createScaleLabel(li_4, li_8);
   }
}

void UpdateAllObjects() {
   if (PN) ObjectSetText(gs_zthvinfo_452 + "lblPairName", Symbol());
   if (PC) ObjectSetText(gs_zthvinfo_452 + "lblPrice", DoubleToStr(g_bid_544, Digits), 14, g_fontname_536, getPriceColor());
   if (SC) ObjectSetText(gs_zthvinfo_452 + "lblSpread", DoubleToStr((Ask - Bid) / point_sp, Dig_sp));
   
   if (DV) 
   color d_v_col;
   {
   if(Bid>iOpen(Symbol(),PERIOD_D1,0)) d_v_col=DV_color1;
   if(Bid<iOpen(Symbol(),PERIOD_D1,0)) d_v_col=DV_color2;
   
   ObjectSetText(gs_zthvinfo_452 + "lblDailyVolume", DoubleToStr(iVolume(Symbol(),PERIOD_D1,0),0),10,g_fontname_536,d_v_col);
   }
   
   if (PTO) ObjectSetText(gs_zthvinfo_452 + "lblPipsToOpen", DoubleToStr(getPipsToOpenValue(), 0), 10, g_fontname_536, getPipsToOpenColor());
   if (DRP)
   {
   color Color;
 
  if(Bid>iOpen(Symbol(),PERIOD_D1,0)) 
  Color=Color_up; 
 
  if(Bid<iOpen(Symbol(),PERIOD_D1,0))  
  Color=Color_down; 
  
   ObjectSetText(gs_zthvinfo_452 + "lblDayRangePercents", DoubleToStr(getDay_range_percents(),0),10,g_fontname_536,Color);
   }
   
   
   
   
   if (HTL) ObjectSetText(gs_zthvinfo_452 + "lblHighToLow", DoubleToStr(getHighToLow(), 0));
   if (DA) ObjectSetText(gs_zthvinfo_452 + "lblDailyAverage", getDailyAverageValue(), 10, g_fontname_536, getDailyAverageColor());
   if (ATR)
   {
   color ATR__color;
   if(getATRPipsStopLossValue()>=Trade_level_ATR) ATR__color=Trade_color_ATR;
   if(getATRPipsStopLossValue()<Trade_level_ATR) ATR__color=ATR_color1;
   ObjectSetText(gs_zthvinfo_452 + "lblATRPips", DoubleToStr(getATRPipsStopLossValue(), 0),10, g_fontname_536,ATR__color);
   }
   if (CT) ObjectSetText(gs_zthvinfo_452 + "lblCandleTime", getCandleTime());
   
   if (EL) 
   {
   int lot_okrug=1;
if(Digits==3 || Digits==5) lot_okrug=2;
   ObjectSetText(gs_zthvinfo_452 + "lblEnterLot", DoubleToStr(getEnterLot(),lot_okrug), 10, g_fontname_536, Color_en);
   }
   
   if (SCA) 
   {
   double poi=Point;
   if(Digits==3 || Digits==5)
poi*=10;
  
  color Color_sca=Color_sc;
  if((WindowPriceMax()-WindowPriceMin())/poi>=Scale_value)
  Color_sca=Color_sc_value;
  
   ObjectSetText(gs_zthvinfo_452 + "lblScale", DoubleToStr((WindowPriceMax()-WindowPriceMin())/poi,0), 10, g_fontname_536, Color_sca);
   }
   
}

void DeleteAllObjects() {
   for (int li_0 = ObjectsTotal() - 1; li_0 >= 0; li_0--)
      if (StringFind(ObjectName(li_0), gs_zthvinfo_452, 0) >= 0) ObjectDelete(ObjectName(li_0));
}









