/*
   G e n e r a t e d  by ex4-to-mq4 decompiler FREEWARE 4.0.509.5
   Website: h T tp: / / wWw. meTaquo TEs. N E T
   E-mail :  sU PPoRt @m eT a QUOt E S. n et
*/
#property copyright "Copyright © 2009, Stratman - Forex Factory"
#property link      "http://www.forexfactory.com/member.php?u=108824"

#property indicator_chart_window

extern string Heading_SingleMode = "## Single Mode Parameters ##";
extern string Comment_TimeFrame = " - MN1,W1,D1,H4,H1,M30,M15,etc -";
extern string TimeFrame = "H4";
extern string Comment_Corner = " - TopLeft=0,TR=1,BL=2,BR=3 -";
extern int Corner = 1;
extern string Heading_ChartParam = "## Chart Parameters ##";
extern bool MultiMode = TRUE;
extern bool CandleMode = TRUE;
extern int BarsToDisplay = 18;
extern bool AutoScale = TRUE;
extern int ATRBars = 20;
extern int ATRPixelsY = 30;
extern color WickColor = DimGray;
extern color BullBarColor = Green;
extern color BearBarColor = FireBrick;
extern color ScaleColor = DimGray;
extern string Comment_Positioning = " - Positioning (in Pixels) -";
extern int WindowNumber = 0;
extern int CornerX = 40;
extern int CornerY = 120;
extern int Width = 120;
extern int Height = 120;
extern int HeadingX = 120;
extern int HeadingY = 4;
extern int ScaleStartY = 20;
extern int BarSpacingX = 7;
extern string Comment_Fonts = " - Font Parameters -";
extern string HeadingFontName = "Verdana";
extern int HeadingFontSize = 9;
extern color HeadingFontColor = DimGray;
extern string Heading_MultiMode = "## MultiMode Parameters ##";
extern int Columns = 1;
extern int Rows = 3;
extern int SpacingColumns = 20;
extern int SpacingRows = 5;
extern string Comment_Symbols = " - to use chart Symbol() -";
extern string Comment_Symbols1 = " - leave Symbol## blank.  -";
extern string Comment_TimeFrames = " - Valid TimeFrame Values: -";
extern string Comment_TimeFrames1 = " - MN1,W1,D1,H4,H1,M30,M15,etc -";
extern string Comment_TimeFrames2 = " - Leave Blank for no chart -";
extern string Symbol01 = "";
extern string TimeFrame01 = "M15";
extern string Symbol02 = "";
extern string TimeFrame02 = "H1";
extern string Symbol03 = "";
extern string TimeFrame03 = "H4";
extern string Symbol04 = "";
extern string TimeFrame04 = "";
extern string Symbol05 = "";
extern string TimeFrame05 = "";
extern string Symbol06 = "";
extern string TimeFrame06 = "";
extern string Symbol07 = "";
extern string TimeFrame07 = "";
extern string Symbol08 = "";
extern string TimeFrame08 = "";
extern string Symbol09 = "";
extern string TimeFrame09 = "";
extern string Symbol10 = "";
extern string TimeFrame10 = "";
extern string Symbol11 = "";
extern string TimeFrame11 = "";
extern string Symbol12 = "";
extern string TimeFrame12 = "";
extern string Symbol13 = "";
extern string TimeFrame13 = "";
extern string Symbol14 = "";
extern string TimeFrame14 = "";
extern string Symbol15 = "";
extern string TimeFrame15 = "";
extern string Symbol16 = "";
extern string TimeFrame16 = "";
extern string Symbol17 = "";
extern string TimeFrame17 = "";
extern string Symbol18 = "";
extern string TimeFrame18 = "";
extern string Symbol19 = "";
extern string TimeFrame19 = "";
extern string Symbol20 = "";
extern string TimeFrame20 = "";
extern string Symbol21 = "";
extern string TimeFrame21 = "";
extern string Symbol22 = "";
extern string TimeFrame22 = "";
extern string Symbol23 = "";
extern string TimeFrame23 = "";
extern string Symbol24 = "";
extern string TimeFrame24 = "";
extern string Symbol25 = "";
extern string TimeFrame25 = "";
extern string Symbol26 = "";
extern string TimeFrame26 = "";
extern string Symbol27 = "";
extern string TimeFrame27 = "";
extern string Symbol28 = "";
extern string TimeFrame28 = "";
extern string Symbol29 = "";
extern string TimeFrame29 = "";
extern string Symbol30 = "";
extern string TimeFrame30 = "";
extern string Symbol31 = "";
extern string TimeFrame31 = "";
extern string Symbol32 = "";
extern string TimeFrame32 = "";
extern string Symbol33 = "";
extern string TimeFrame33 = "";
extern string Symbol34 = "";
extern string TimeFrame34 = "";
extern string Symbol35 = "";
extern string TimeFrame35 = "";
extern string Symbol36 = "";
extern string TimeFrame36 = "";
extern string Symbol37 = "";
extern string TimeFrame37 = "";
extern string Symbol38 = "";
extern string TimeFrame38 = "";
extern string Symbol39 = "";
extern string TimeFrame39 = "";
extern string Symbol40 = "";
extern string TimeFrame40 = "";
extern string Symbol41 = "";
extern string TimeFrame41 = "";
extern string Symbol42 = "";
extern string TimeFrame42 = "";
extern string Symbol43 = "";
extern string TimeFrame43 = "";
extern string Symbol44 = "";
extern string TimeFrame44 = "";
extern string Symbol45 = "";
extern string TimeFrame45 = "";
extern string Symbol46 = "";
extern string TimeFrame46 = "";
extern string Symbol47 = "";
extern string TimeFrame47 = "";
extern string Symbol48 = "";
extern string TimeFrame48 = "";
extern string Symbol49 = "";
extern string TimeFrame49 = "";
extern string Symbol50 = "";
extern string TimeFrame50 = "";
extern string Symbol51 = "";
extern string TimeFrame51 = "";
extern string Symbol52 = "";
extern string TimeFrame52 = "";
extern string Symbol53 = "";
extern string TimeFrame53 = "";
extern string Symbol54 = "";
extern string TimeFrame54 = "";
extern string Symbol55 = "";
extern string TimeFrame55 = "";
extern string Symbol56 = "";
extern string TimeFrame56 = "";
extern string Symbol57 = "";
extern string TimeFrame57 = "";
extern string Symbol58 = "";
extern string TimeFrame58 = "";
extern string Symbol59 = "";
extern string TimeFrame59 = "";
extern string Symbol60 = "";
extern string TimeFrame60 = "";
string Gs_1252 = "SMMC_";
string Gs_1260 = ".";
string Gs_verdana_1268 = "Verdana";
int Gi_1276 = 10;
int Gia_1280[4] = {-2, 3, -2, 3};
int Gia_1284[4] = {-11, -11, 5, 5};
string Gs_1288 = "-";
int Gi_1296 = 10;
int Gia_1300[4] = {-2, 5, -2, 5};
int Gia_1304[4] = {-8, -8, 8, 8};
string Gs_1308 = ".";
string Gs_system_1316 = "System";
int Gi_1324 = 8;
int Gi_1328 = 2;
int Gi_1332 = 2;
int Gia_1336[4] = {-1, 2, -1, 2};
int Gia_1340[4] = {-11, -11, 5, 5};
string Gs_1344 = "·";
string Gs_arial_1352 = "Arial";
int Gi_1360 = 8;
int Gi_1364 = 1;
int Gi_1368 = 1;
int Gia_1372[4] = {-1, 1, -1, 1};
int Gia_1376[4] = {-6, -6, 4, 4};
int Gia_1380[61];
int Gia_1384[61];
double Gda_1388[61];
double Gda_1392[61];
int Gia_1396[61];
int Gia_1400[61];
double Gda_1404[61];
double Gda_1408[61];
string Gsa_1412[61];
string Gsa_1416[61];
string Gsa_1420[61];
int Gia_1424[61];
int Gia_1428[61];

int init() {
   if (!MultiMode) {
      Gsa_1412[0] = Symbol();
      Gsa_1416[0] = TimeFrame;
      Gia_1424[0] = ChartX(0);
      Gia_1428[0] = ChartY(0);
      Reset(0);
   } else {
      ObjectDeleteByPrefix(Gs_1252, WindowNumber);
      for (int Li_0 = 1; Li_0 <= 60; Li_0++) Gsa_1412[Li_0] = Symbol();
      if (Symbol01 != "") Gsa_1412[1] = Symbol01;
      if (Symbol02 != "") Gsa_1412[2] = Symbol02;
      if (Symbol03 != "") Gsa_1412[3] = Symbol03;
      if (Symbol04 != "") Gsa_1412[4] = Symbol04;
      if (Symbol05 != "") Gsa_1412[5] = Symbol05;
      if (Symbol06 != "") Gsa_1412[6] = Symbol06;
      if (Symbol07 != "") Gsa_1412[7] = Symbol07;
      if (Symbol08 != "") Gsa_1412[8] = Symbol08;
      if (Symbol09 != "") Gsa_1412[9] = Symbol09;
      if (Symbol10 != "") Gsa_1412[10] = Symbol10;
      if (Symbol11 != "") Gsa_1412[11] = Symbol11;
      if (Symbol12 != "") Gsa_1412[12] = Symbol12;
      if (Symbol13 != "") Gsa_1412[13] = Symbol13;
      if (Symbol14 != "") Gsa_1412[14] = Symbol14;
      if (Symbol15 != "") Gsa_1412[15] = Symbol15;
      if (Symbol16 != "") Gsa_1412[16] = Symbol16;
      if (Symbol17 != "") Gsa_1412[17] = Symbol17;
      if (Symbol18 != "") Gsa_1412[18] = Symbol18;
      if (Symbol19 != "") Gsa_1412[19] = Symbol19;
      if (Symbol20 != "") Gsa_1412[20] = Symbol20;
      if (Symbol21 != "") Gsa_1412[21] = Symbol21;
      if (Symbol22 != "") Gsa_1412[22] = Symbol22;
      if (Symbol23 != "") Gsa_1412[23] = Symbol23;
      if (Symbol24 != "") Gsa_1412[24] = Symbol24;
      if (Symbol25 != "") Gsa_1412[25] = Symbol25;
      if (Symbol26 != "") Gsa_1412[26] = Symbol26;
      if (Symbol27 != "") Gsa_1412[27] = Symbol27;
      if (Symbol28 != "") Gsa_1412[28] = Symbol28;
      if (Symbol29 != "") Gsa_1412[29] = Symbol29;
      if (Symbol30 != "") Gsa_1412[30] = Symbol30;
      if (Symbol31 != "") Gsa_1412[31] = Symbol31;
      if (Symbol32 != "") Gsa_1412[32] = Symbol32;
      if (Symbol33 != "") Gsa_1412[33] = Symbol33;
      if (Symbol34 != "") Gsa_1412[34] = Symbol34;
      if (Symbol35 != "") Gsa_1412[35] = Symbol35;
      if (Symbol36 != "") Gsa_1412[36] = Symbol36;
      if (Symbol37 != "") Gsa_1412[37] = Symbol37;
      if (Symbol38 != "") Gsa_1412[38] = Symbol38;
      if (Symbol39 != "") Gsa_1412[39] = Symbol39;
      if (Symbol40 != "") Gsa_1412[40] = Symbol40;
      if (Symbol41 != "") Gsa_1412[41] = Symbol41;
      if (Symbol42 != "") Gsa_1412[42] = Symbol42;
      if (Symbol43 != "") Gsa_1412[43] = Symbol43;
      if (Symbol44 != "") Gsa_1412[44] = Symbol44;
      if (Symbol45 != "") Gsa_1412[45] = Symbol45;
      if (Symbol46 != "") Gsa_1412[46] = Symbol46;
      if (Symbol47 != "") Gsa_1412[47] = Symbol47;
      if (Symbol48 != "") Gsa_1412[48] = Symbol48;
      if (Symbol49 != "") Gsa_1412[49] = Symbol49;
      if (Symbol50 != "") Gsa_1412[50] = Symbol50;
      if (Symbol51 != "") Gsa_1412[51] = Symbol51;
      if (Symbol52 != "") Gsa_1412[52] = Symbol52;
      if (Symbol53 != "") Gsa_1412[53] = Symbol53;
      if (Symbol54 != "") Gsa_1412[54] = Symbol54;
      if (Symbol55 != "") Gsa_1412[55] = Symbol55;
      if (Symbol56 != "") Gsa_1412[56] = Symbol56;
      if (Symbol57 != "") Gsa_1412[57] = Symbol57;
      if (Symbol58 != "") Gsa_1412[58] = Symbol58;
      if (Symbol59 != "") Gsa_1412[59] = Symbol59;
      if (Symbol60 != "") Gsa_1412[60] = Symbol60;
      Gsa_1416[1] = TimeFrame01;
      Gsa_1416[2] = TimeFrame02;
      Gsa_1416[3] = TimeFrame03;
      Gsa_1416[4] = TimeFrame04;
      Gsa_1416[5] = TimeFrame05;
      Gsa_1416[6] = TimeFrame06;
      Gsa_1416[7] = TimeFrame07;
      Gsa_1416[8] = TimeFrame08;
      Gsa_1416[9] = TimeFrame09;
      Gsa_1416[10] = TimeFrame10;
      Gsa_1416[11] = TimeFrame11;
      Gsa_1416[12] = TimeFrame12;
      Gsa_1416[13] = TimeFrame13;
      Gsa_1416[14] = TimeFrame14;
      Gsa_1416[15] = TimeFrame15;
      Gsa_1416[16] = TimeFrame16;
      Gsa_1416[17] = TimeFrame17;
      Gsa_1416[18] = TimeFrame18;
      Gsa_1416[19] = TimeFrame19;
      Gsa_1416[20] = TimeFrame20;
      Gsa_1416[21] = TimeFrame21;
      Gsa_1416[22] = TimeFrame22;
      Gsa_1416[23] = TimeFrame23;
      Gsa_1416[24] = TimeFrame24;
      Gsa_1416[25] = TimeFrame25;
      Gsa_1416[26] = TimeFrame26;
      Gsa_1416[27] = TimeFrame27;
      Gsa_1416[28] = TimeFrame28;
      Gsa_1416[29] = TimeFrame29;
      Gsa_1416[30] = TimeFrame30;
      Gsa_1416[31] = TimeFrame31;
      Gsa_1416[32] = TimeFrame32;
      Gsa_1416[33] = TimeFrame33;
      Gsa_1416[34] = TimeFrame34;
      Gsa_1416[35] = TimeFrame35;
      Gsa_1416[36] = TimeFrame36;
      Gsa_1416[37] = TimeFrame37;
      Gsa_1416[38] = TimeFrame38;
      Gsa_1416[39] = TimeFrame39;
      Gsa_1416[40] = TimeFrame40;
      Gsa_1416[41] = TimeFrame41;
      Gsa_1416[42] = TimeFrame42;
      Gsa_1416[43] = TimeFrame43;
      Gsa_1416[44] = TimeFrame44;
      Gsa_1416[45] = TimeFrame45;
      Gsa_1416[46] = TimeFrame46;
      Gsa_1416[47] = TimeFrame47;
      Gsa_1416[48] = TimeFrame48;
      Gsa_1416[49] = TimeFrame49;
      Gsa_1416[50] = TimeFrame50;
      Gsa_1416[51] = TimeFrame51;
      Gsa_1416[52] = TimeFrame52;
      Gsa_1416[53] = TimeFrame53;
      Gsa_1416[54] = TimeFrame54;
      Gsa_1416[55] = TimeFrame55;
      Gsa_1416[56] = TimeFrame56;
      Gsa_1416[57] = TimeFrame57;
      Gsa_1416[58] = TimeFrame58;
      Gsa_1416[59] = TimeFrame59;
      Gsa_1416[60] = TimeFrame60;
      for (Li_0 = 1; Li_0 <= 60; Li_0++) {
         if (Gsa_1416[Li_0] != "") {
            Gia_1424[Li_0] = ChartX(Li_0);
            Gia_1428[Li_0] = ChartY(Li_0);
            Reset(Li_0);
         }
      }
   }
   return (0);
}

int deinit() {
   ObjectDeleteByPrefix(Gs_1252, WindowNumber);
   return (0);
}

int start() {
   if (!MultiMode) {
      if (Gia_1380[0] != iTime(Gsa_1412[0], Gia_1384[0], 0)) Reset(0);
      Update(0);
   } else {
      for (int Li_0 = 1; Li_0 <= 60; Li_0++) {
         if (Gsa_1416[Li_0] != "") {
            if (Gia_1380[Li_0] != iTime(Gsa_1412[Li_0], Gia_1384[Li_0], 0)) Reset(Li_0);
            Update(Li_0);
         }
      }
   }
   return (0);
}

int ChartX(int Ai_0) {
   int Li_ret_4;
   if (Ai_0 == 0) Li_ret_4 = CornerX;
   else Li_ret_4 = CornerX + (Ai_0 - 1) % Columns * (SpacingColumns + Width);
   return (Li_ret_4);
}

int ChartY(int Ai_0) {
   int Li_ret_4;
   if (Ai_0 == 0) Li_ret_4 = CornerY;
   else Li_ret_4 = CornerY + (Ai_0 - 1) / Columns * (SpacingRows + Height);
   return (Li_ret_4);
}

void ObjectDeleteByPrefix(string As_0, int Ai_8) {
   string Lsa_12[];
   string name_20;
   int Li_28;
   ArrayResize(Lsa_12, ObjectsTotal());
   int str_len_32 = StringLen(As_0);
   for (int Li_16 = 0; Li_16 < ObjectsTotal(); Li_16++) {
      name_20 = ObjectName(Li_16);
      if (StringLen(name_20) > str_len_32 && StringSubstr(name_20, 0, str_len_32) == As_0 && ObjectFind(name_20) == Ai_8) {
         Lsa_12[Li_28] = name_20;
         Li_28++;
      }
   }
   for (Li_16 = 0; Li_16 < Li_28; Li_16++) ObjectDelete(Lsa_12[Li_16]);
}

void ObjectMakeBarVerticalLine(int Ai_0, string As_4, int Ai_12, int Ai_16, int Ai_20, int Ai_24) {
   int Li_32;
   int Li_36;
   int count_28 = 0;
   if (Ai_16 > Ai_20) {
      Li_32 = Ai_20;
      Li_36 = Ai_16;
   } else {
      Li_32 = Ai_16;
      Li_36 = Ai_20;
   }
   for (int Li_40 = Li_32; Li_40 <= Li_36; Li_40 += Gi_1368) {
      ObjectMakeLabel(Ai_0, As_4 + "Bar" + DoubleToStr(count_28, 0), Gs_1344, Ai_12 + Gia_1372[Corner], Li_40 + Gia_1376[Corner], Gs_arial_1352, Gi_1360, Ai_24);
      count_28++;
   }
}

void ObjectMakeBarTags(int Ai_0, string As_4, int Ai_12, int Ai_16, int Ai_20, int Ai_24) {
   ObjectMakeLabel(Ai_0, As_4 + "Open", Gs_1308, Ai_12 + Gia_1336[Corner] - Gi_1328, Ai_16 + Gia_1340[Corner], Gs_system_1316, Gi_1324, Ai_24);
   ObjectMakeLabel(Ai_0, As_4 + "Close", Gs_1308, Ai_12 + Gia_1336[Corner] + Gi_1364, Ai_20 + Gia_1340[Corner], Gs_system_1316, Gi_1324, Ai_24);
}

void ObjectMakeBody(int Ai_0, string As_4, int Ai_12, int Ai_16, int Ai_20, int Ai_24) {
   int Li_32;
   int Li_36;
   int count_28 = 0;
   if (Ai_16 > Ai_20) {
      Li_36 = Ai_20;
      Li_32 = Ai_16;
   } else {
      Li_36 = Ai_16;
      Li_32 = Ai_20;
   }
   for (int Li_40 = Li_36; Li_40 <= Li_32; Li_40 += Gi_1332) {
      ObjectMakeLabel(Ai_0, As_4 + "BodyL" + DoubleToStr(count_28, 0), Gs_1308, Ai_12 + Gia_1336[Corner] - Gi_1328, Li_40 + Gia_1340[Corner], Gs_system_1316, Gi_1324, Ai_24);
      ObjectMakeLabel(Ai_0, As_4 + "BodyC" + DoubleToStr(count_28, 0), Gs_1308, Ai_12 + Gia_1336[Corner], Li_40 + Gia_1340[Corner], Gs_system_1316, Gi_1324, Ai_24);
      ObjectMakeLabel(Ai_0, As_4 + "BodyR" + DoubleToStr(count_28, 0), Gs_1308, Ai_12 + Gia_1336[Corner] + Gi_1364, Li_40 + Gia_1340[Corner], Gs_system_1316, Gi_1324, Ai_24);
      count_28++;
   }
}

void ObjectMakeLabel(int Ai_0, string A_name_4, string A_text_12, int Ai_20, int Ai_24, string A_fontname_28, int A_fontsize_36, color A_color_40) {
   ObjectCreate(A_name_4, OBJ_LABEL, WindowNumber, 0, 0);
   ObjectSetText(A_name_4, A_text_12, A_fontsize_36, A_fontname_28, A_color_40);
   ObjectSet(A_name_4, OBJPROP_CORNER, Corner);
   ObjectSet(A_name_4, OBJPROP_XDISTANCE, PixelX(Ai_0, Ai_20));
   ObjectSet(A_name_4, OBJPROP_YDISTANCE, PixelY(Ai_0, Ai_24));
}

void ObjectMakeWicks(int Ai_0, string As_4, int Ai_12, int Ai_16, int Ai_20, int Ai_24, int Ai_28, int Ai_32) {
   int Li_40;
   int Li_44;
   int Li_48;
   int Li_52;
   int count_36 = 0;
   if (Ai_16 > Ai_20) {
      Li_40 = Ai_20;
      Li_44 = Ai_16;
   } else {
      Li_40 = Ai_16;
      Li_44 = Ai_20;
   }
   if (Ai_24 > Ai_28) {
      Li_52 = Ai_28;
      Li_48 = Ai_24;
   } else {
      Li_52 = Ai_24;
      Li_48 = Ai_28;
   }
   for (int Li_56 = Li_40; Li_56 <= Li_44; Li_56 += Gi_1368) {
      if (Li_56 < Li_48 || Li_56 > Li_52) ObjectMakeLabel(Ai_0, As_4 + "Bar" + DoubleToStr(count_36, 0), Gs_1344, Ai_12 + Gia_1372[Corner], Li_56 + Gia_1376[Corner], Gs_arial_1352, Gi_1360, Ai_32);
      count_36++;
   }
}

void ObjectMakeDojiBody(int Ai_0, string As_4, int Ai_12, int Ai_16, int Ai_20) {
   ObjectMakeLabel(Ai_0, As_4 + "DojiL", Gs_1308, Ai_12 + Gia_1336[Corner] - Gi_1328, Ai_16 + Gia_1340[Corner], Gs_system_1316, Gi_1324, Ai_20);
   ObjectMakeLabel(Ai_0, As_4 + "DojiC", Gs_1308, Ai_12 + Gia_1336[Corner], Ai_16 + Gia_1340[Corner], Gs_system_1316, Gi_1324, Ai_20);
   ObjectMakeLabel(Ai_0, As_4 + "DojiR", Gs_1308, Ai_12 + Gia_1336[Corner] + Gi_1364, Ai_16 + Gia_1340[Corner], Gs_system_1316, Gi_1324, Ai_20);
}

int PixelX(int Ai_0, int Ai_4) {
   int Li_ret_8 = 0;
   switch (Corner) {
   case 0:
      Li_ret_8 = Gia_1424[Ai_0] + Ai_4;
      break;
   case 1:
      Li_ret_8 = Gia_1424[Ai_0] + Width - Ai_4;
      break;
   case 2:
      Li_ret_8 = Gia_1424[Ai_0] + Ai_4;
      break;
   case 3:
      Li_ret_8 = Gia_1424[Ai_0] + Width - Ai_4;
   }
   return (Li_ret_8);
}

int PixelY(int Ai_0, int Ai_4) {
   int Li_ret_8 = 0;
   switch (Corner) {
   case 0:
      Li_ret_8 = Gia_1428[Ai_0] + Ai_4;
      break;
   case 1:
      Li_ret_8 = Gia_1428[Ai_0] + Ai_4;
      break;
   case 2:
      Li_ret_8 = Gia_1428[Ai_0] + Height - Ai_4;
      break;
   case 3:
      Li_ret_8 = Gia_1428[Ai_0] + Height - Ai_4;
   }
   return (Li_ret_8);
}

void Reset(int Ai_0) {
   int Li_4;
   int Li_16;
   double iopen_44;
   double ihigh_52;
   double iclose_60;
   double ilow_68;
   int Li_76;
   int Li_80;
   int Li_84;
   int Li_88;
   int color_92;
   int Li_120;
   double Ld_140;
   Gda_1408[Ai_0] = MarketInfo(Gsa_1412[Ai_0], MODE_POINT);
   Gsa_1420[Ai_0] = Gs_1252 + Gsa_1412[Ai_0] + Gsa_1416[Ai_0] + "_";
   Gia_1384[Ai_0] = TimePeriodFromString(Gsa_1416[Ai_0]);
   Gia_1380[Ai_0] = iTime(Gsa_1412[Ai_0], Gia_1384[Ai_0], 0);
   Gda_1388[Ai_0] = iATR(Gsa_1412[Ai_0], Gia_1384[Ai_0], ATRBars, 1);
   if (Gda_1388[Ai_0] == 0.0) {
      Print("Error: iATR function returned 0 ... exiting");
      return;
   }
   int color_96 = WickColor;
   ObjectDeleteByPrefix(Gsa_1420[Ai_0], WindowNumber);
   string Ls_100 = Gsa_1420[Ai_0] + "Heading";
   string Ls_108 = Gsa_1412[Ai_0] + " " + Gsa_1416[Ai_0];
   ObjectMakeLabel(Ai_0, Ls_100, Ls_108, HeadingX, HeadingY, HeadingFontName, HeadingFontSize, HeadingFontColor);
   int Li_12 = Width / 2 + BarSpacingX;
   Gia_1400[Ai_0] = ScaleStartY + (Height - ScaleStartY) / 2;
   double ihigh_20 = iHigh(Gsa_1412[Ai_0], Gia_1384[Ai_0], iHighest(Gsa_1412[Ai_0], Gia_1384[Ai_0], MODE_HIGH, BarsToDisplay + 1, 0));
   double ilow_28 = iLow(Gsa_1412[Ai_0], Gia_1384[Ai_0], iLowest(Gsa_1412[Ai_0], Gia_1384[Ai_0], MODE_LOW, BarsToDisplay + 1, 0));
   double Ld_36 = ihigh_20 - ilow_28;
   Gda_1392[Ai_0] = ilow_28 + Ld_36 / 2.0;
   bool Li_116 = BarsToDisplay % 2;
   if (Li_116) Li_120 = MathFloor(BarsToDisplay / 2.0) - 1.0;
   else {
      Li_120 = BarsToDisplay / 2 + 1;
      Li_12 += MathFloor(BarSpacingX / 2);
   }
   Gia_1396[Ai_0] = Li_12 + Li_120 * BarSpacingX;
   double Ld_124 = Gda_1388[Ai_0] / Gda_1408[Ai_0];
   double Ld_132 = Ld_124 / 10.0;
   if (AutoScale) Ld_140 = (Height - ScaleStartY) / (Ld_36 / Gda_1408[Ai_0] / 10.0);
   else Ld_140 = ATRPixelsY / Ld_132;
   Gda_1404[Ai_0] = Ld_140 / 10.0;
   if (Ld_140 > 3.0) {
      for (int Li_8 = ScaleStartY; Li_8 < Height; Li_8 += MathRound(Ld_140)) {
         Ls_100 = Gsa_1420[Ai_0] + "ScalePip" + DoubleToStr(Li_16, 0);
         if (Li_16 % 10 == 0) ObjectMakeLabel(Ai_0, Ls_100, Gs_1288, Gia_1300[Corner], Li_8 + Gia_1304[Corner], Gs_verdana_1268, Gi_1296, ScaleColor);
         else ObjectMakeLabel(Ai_0, Ls_100, Gs_1260, Gia_1280[Corner], Li_8 + Gia_1284[Corner], Gs_verdana_1268, Gi_1276, ScaleColor);
         Li_16++;
      }
   } else {
      if (10.0 * Ld_140 > 1.0) {
         for (Li_8 = ScaleStartY; Li_8 < Height; Li_8 += MathRound(10.0 * Ld_140)) {
            Ls_100 = Gsa_1420[Ai_0] + "ScalePip" + DoubleToStr(Li_16, 0);
            ObjectMakeLabel(Ai_0, Ls_100, Gs_1288, Gia_1300[Corner], Li_8 + Gia_1304[Corner], Gs_verdana_1268, Gi_1296, ScaleColor);
            Li_16++;
         }
      }
   }
   for (int Li_148 = BarsToDisplay; Li_148 >= 1; Li_148--) {
      Li_4 = Li_12 + (Li_120 - Li_148) * BarSpacingX;
      iopen_44 = iOpen(Gsa_1412[Ai_0], Gia_1384[Ai_0], Li_148);
      ihigh_52 = iHigh(Gsa_1412[Ai_0], Gia_1384[Ai_0], Li_148);
      ilow_68 = iLow(Gsa_1412[Ai_0], Gia_1384[Ai_0], Li_148);
      iclose_60 = iClose(Gsa_1412[Ai_0], Gia_1384[Ai_0], Li_148);
      Li_76 = Gia_1400[Ai_0] - MathRound(Gda_1404[Ai_0] * (iopen_44 - Gda_1392[Ai_0]) / Gda_1408[Ai_0]);
      Li_80 = Gia_1400[Ai_0] - MathRound(Gda_1404[Ai_0] * (ihigh_52 - Gda_1392[Ai_0]) / Gda_1408[Ai_0]);
      Li_88 = Gia_1400[Ai_0] - MathRound(Gda_1404[Ai_0] * (ilow_68 - Gda_1392[Ai_0]) / Gda_1408[Ai_0]);
      Li_84 = Gia_1400[Ai_0] - MathRound(Gda_1404[Ai_0] * (iclose_60 - Gda_1392[Ai_0]) / Gda_1408[Ai_0]);
      if (iclose_60 > iopen_44) color_92 = BullBarColor;
      else color_92 = BearBarColor;
      if (WickColor == CLR_NONE) color_96 = color_92;
      Ls_100 = Gsa_1420[Ai_0] + "Bar_" + DoubleToStr(Li_148, 0) + "_";
      if (CandleMode) {
         if (Li_76 == Li_84) ObjectMakeDojiBody(Ai_0, Ls_100, Li_4, Li_76, color_96);
         else ObjectMakeBody(Ai_0, Ls_100, Li_4, Li_76, Li_84, color_92);
         ObjectMakeWicks(Ai_0, Ls_100, Li_4, Li_88, Li_80, Li_76, Li_84, color_96);
      } else {
         ObjectMakeBarVerticalLine(Ai_0, Ls_100, Li_4, Li_88, Li_80, color_92);
         ObjectMakeBarTags(Ai_0, Ls_100, Li_4, Li_76, Li_84, color_92);
      }
   }
}

int TimePeriodFromString(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 == "MN1") Li_ret_8 = 43200;
   return (Li_ret_8);
}

void Update(int Ai_0) {
   int color_60;
   string Ls_4 = Gsa_1420[Ai_0] + "Bar_0_";
   int color_64 = WickColor;
   ObjectDeleteByPrefix(Ls_4, WindowNumber);
   double iopen_12 = iOpen(Gsa_1412[Ai_0], Gia_1384[Ai_0], 0);
   double ihigh_20 = iHigh(Gsa_1412[Ai_0], Gia_1384[Ai_0], 0);
   double ilow_36 = iLow(Gsa_1412[Ai_0], Gia_1384[Ai_0], 0);
   double iclose_28 = iClose(Gsa_1412[Ai_0], Gia_1384[Ai_0], 0);
   int Li_44 = Gia_1400[Ai_0] - MathRound(Gda_1404[Ai_0] * (iopen_12 - Gda_1392[Ai_0]) / Gda_1408[Ai_0]);
   int Li_48 = Gia_1400[Ai_0] - MathRound(Gda_1404[Ai_0] * (ihigh_20 - Gda_1392[Ai_0]) / Gda_1408[Ai_0]);
   int Li_56 = Gia_1400[Ai_0] - MathRound(Gda_1404[Ai_0] * (ilow_36 - Gda_1392[Ai_0]) / Gda_1408[Ai_0]);
   int Li_52 = Gia_1400[Ai_0] - MathRound(Gda_1404[Ai_0] * (iclose_28 - Gda_1392[Ai_0]) / Gda_1408[Ai_0]);
   if (iclose_28 > iopen_12) color_60 = BullBarColor;
   else color_60 = BearBarColor;
   if (WickColor == CLR_NONE) color_64 = color_60;
   if (CandleMode) {
      if (Li_44 == Li_52) ObjectMakeDojiBody(Ai_0, Ls_4, Gia_1396[Ai_0], Li_44, color_64);
      else ObjectMakeBody(Ai_0, Ls_4, Gia_1396[Ai_0], Li_44, Li_52, color_60);
      ObjectMakeWicks(Ai_0, Ls_4, Gia_1396[Ai_0], Li_56, Li_48, Li_44, Li_52, color_64);
      return;
   }
   ObjectMakeBarVerticalLine(Ai_0, Ls_4, Gia_1396[Ai_0], Li_56, Li_48, color_60);
   ObjectMakeBarTags(Ai_0, Ls_4, Gia_1396[Ai_0], Li_44, Li_52, color_60);
}
