/*
   Generated by EX4-TO-MQ4 decompiler V4.0.438.1 [-]
   Website: https://purebeam.biz
   E-mail : purebeam@gmail.com
*/
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Black
#property indicator_color2 Black
#property indicator_color3 Black
#property indicator_color4 Black
#property indicator_color5 Black
#property indicator_color6 Black
#property indicator_color7 Black
#property indicator_color8 Black

int ts_264;
double ts_156;
int g_period_76 = 1;
int g_applied_price_80 = PRICE_CLOSE;
int g_ma_method_84 = MODE_LWMA;
int gi_unused_88 = 0;
extern int DaysOffset = 5;
extern int MaxBars = 2000;
int gi_100 = 100;
string gs_eurusd_104 = "EURUSD";
string gs_usdjpy_112 = "USDJPY";
string gs_usdchf_120 = "USDCHF";
string gs_gbpusd_128 = "GBPUSD";
string gs_audusd_136 = "AUDUSD";
string gs_usdcad_144 = "USDCAD";
string gs_nzdusd_152 = "NZDUSD";
double g_ibuf_160[];
double g_ibuf_164[];
double g_ibuf_168[];
double g_ibuf_172[];
double g_ibuf_176[];
double g_ibuf_180[];
double g_ibuf_184[];
double g_ibuf_188[];
string gs_192 = "BSX indicator";
int gi_200 = 7;
string gsa_204[7];
int g_bars_208 = -1;

string f0_4(string as_0 = "") {
   int li_16;
   int li_20;
   string ls_ret_24;
   if (as_0 == "") as_0 = Symbol();
   f0_2(as_0, li_16, li_20);
   if (li_16 >= 0 && li_20 >= 0) {
      if (li_16 == 0) ls_ret_24 = "";
      else ls_ret_24 = StringSubstr(as_0, 0, li_16);
   } else {
      if (li_16 == -1 && li_20 == -1) ls_ret_24 = "";
      else ls_ret_24 = "PREFIX_ERROR";
   }
   return (ls_ret_24);
}

string f0_1(string as_0 = "") {
   int li_8;
   int li_12;
   string ls_unused_16;
   if (as_0 == "") as_0 = Symbol();
   f0_2(as_0, li_8, li_12);
   return (StringSubstr(as_0, li_12 + 1));
}

int f0_2(string as_0, int &ai_8, int &ai_12) {
   int li_20;
   bool li_24;
   ai_8 = -1;
   ai_12 = -1;
   for (int li_16 = 0; li_16 < StringLen(as_0); li_16++) {
      li_20 = StringGetChar(as_0, li_16);
      if ((li_20 >= 'A' && li_20 <= 'Z') || li_20 == '#') {
         li_24 = TRUE;
         if (ai_8 < 0) ai_8 = li_16;
      } else {
         li_24 = FALSE;
         if (ai_8 >= 0) {
            ai_12 = li_16 - 1;
            break;
         }
      }
   }
   if (li_24) ai_12 = li_16 - 1;
   return (ai_12 - ai_8 + 1);
}

int init() {
   SetIndexBuffer(0, g_ibuf_160);
   SetIndexBuffer(1, g_ibuf_164);
   SetIndexBuffer(2, g_ibuf_168);
   SetIndexBuffer(3, g_ibuf_172);
   SetIndexBuffer(4, g_ibuf_176);
   SetIndexBuffer(5, g_ibuf_180);
   SetIndexBuffer(6, g_ibuf_184);
   SetIndexBuffer(7, g_ibuf_188);
   SetIndexStyle(0, DRAW_NONE);
   SetIndexStyle(1, DRAW_NONE);
   SetIndexStyle(2, DRAW_NONE);
   SetIndexStyle(3, DRAW_NONE);
   SetIndexStyle(4, DRAW_NONE);
   SetIndexStyle(5, DRAW_NONE);
   SetIndexStyle(6, DRAW_NONE);
   SetIndexStyle(7, DRAW_NONE);
   IndicatorShortName(gs_192);
   string ls_0 = f0_4();
   string ls_8 = f0_1();
   gs_eurusd_104 = ls_0 + "EURUSD" + ls_8;
   gs_usdjpy_112 = ls_0 + "USDJPY" + ls_8;
   gs_usdchf_120 = ls_0 + "USDCHF" + ls_8;
   gs_gbpusd_128 = ls_0 + "GBPUSD" + ls_8;
   gs_audusd_136 = ls_0 + "AUDUSD" + ls_8;
   gs_usdcad_144 = ls_0 + "USDCAD" + ls_8;
   gs_nzdusd_152 = ls_0 + "NZDUSD" + ls_8;
   gsa_204[0] = gs_eurusd_104;
   gsa_204[1] = gs_usdjpy_112;
   gsa_204[2] = gs_usdchf_120;
   gsa_204[3] = gs_gbpusd_128;
   gsa_204[4] = gs_audusd_136;
   gsa_204[5] = gs_usdcad_144;
   gsa_204[6] = gs_nzdusd_152;
   return (0);
}

int deinit() {
   return (0);
}

int start() {
   double ld_4;
   double ld_12;
   double ld_20;
   double ld_28;
   double ld_36;
   double ld_44;
   double ld_52;
   double ld_60;
   double ld_68;
   double ld_76;
   double ld_84;
   double ld_92;
   double ld_100;
   double ld_108;
   double ld_116;
   double ld_124;
   double ld_132;
   double ld_140;
   double ld_148;
   string as_unused_160;
   double ld_164;
   double ld_172;
   double ld_180;
   double ld_188;
   double ld_196;
   double ld_204;
   double ld_212;
   double ld_220;
   datetime time_228;
   datetime time_232;
   int li_244;
   int hour_248;
   int day_of_week_252;
   int li_unused_256;
   int li_268;
   int ind_counted_236 = IndicatorCounted();
   int li_240 = MathMin(MaxBars, Bars);
   li_240 = MathMin(li_240, Bars - ind_counted_236 + 1);
   if (li_240 >= 1) {
      if (g_bars_208 != Bars) {
         li_240 = MathMin(MaxBars, Bars);
         g_bars_208 = Bars;
      }
      li_unused_256 = -1;
      ts_264 = -1;
      for (int index_0 = 0; index_0 < li_240; index_0++) {
         time_228 = Time[index_0];
         hour_248 = TimeHour(Time[index_0]);
         day_of_week_252 = TimeDayOfWeek(time_228);
         if (ts_264 < index_0) {
            li_244 = index_0;
            for (int count_260 = 0; li_244 < Bars; li_244++) {
               if (count_260 == DaysOffset && time_228 % 86400 == Time[li_244] % 86400) {
                  ts_264 = li_244;
                  li_268 = ts_264;
                  break;
               }
               if (day_of_week_252 != TimeDayOfWeek(Time[li_244])) {
                  day_of_week_252 = TimeDayOfWeek(Time[li_244]);
                  count_260++;
               }
            }
            li_unused_256 = day_of_week_252;
         } else ts_264 = li_268;
         time_232 = Time[ts_264];
         if (time_228 == time_232) {
            g_ibuf_160[index_0] = EMPTY_VALUE;
            g_ibuf_164[index_0] = EMPTY_VALUE;
            g_ibuf_168[index_0] = EMPTY_VALUE;
            g_ibuf_172[index_0] = EMPTY_VALUE;
            g_ibuf_176[index_0] = EMPTY_VALUE;
            g_ibuf_180[index_0] = EMPTY_VALUE;
            g_ibuf_184[index_0] = EMPTY_VALUE;
         } else {
            ld_4 = f0_3(gs_eurusd_104, time_228, time_232);
            ld_36 = f0_3(gs_usdjpy_112, time_228, time_232);
            ld_44 = f0_3(gs_usdchf_120, time_228, time_232);
            ld_52 = f0_3(gs_gbpusd_128, time_228, time_232);
            ld_84 = f0_3(gs_audusd_136, time_228, time_232);
            ld_132 = f0_3(gs_usdcad_144, time_228, time_232);
            ld_220 = f0_3(gs_nzdusd_152, time_228, time_232);
            ld_12 = f0_0(gs_eurusd_104, gs_usdjpy_112, time_228, time_232);
            ld_20 = f0_0(gs_eurusd_104, gs_usdchf_120, time_228, time_232);
            ld_28 = f0_6(gs_eurusd_104, gs_gbpusd_128, time_228, time_232);
            ld_60 = f0_6(gs_usdjpy_112, gs_usdchf_120, time_228, time_232);
            ld_68 = f0_0(gs_gbpusd_128, gs_usdchf_120, time_228, time_232);
            ld_76 = f0_0(gs_gbpusd_128, gs_usdjpy_112, time_228, time_232);
            ld_92 = f0_0(gs_audusd_136, gs_usdchf_120, time_228, time_232);
            ld_100 = f0_0(gs_audusd_136, gs_usdjpy_112, time_228, time_232);
            ld_124 = f0_0(gs_audusd_136, gs_usdcad_144, time_228, time_232);
            ld_148 = f0_0(gs_eurusd_104, gs_usdcad_144, time_228, time_232);
            ld_140 = f0_0(gs_gbpusd_128, gs_usdcad_144, time_228, time_232);
            ld_108 = f0_6(gs_gbpusd_128, gs_audusd_136, time_228, time_232);
            ld_116 = f0_6(gs_eurusd_104, gs_audusd_136, time_228, time_232);
            ts_156 = f0_6(gs_usdchf_120, gs_usdcad_144, time_228, time_232);
            ld_164 = f0_6(gs_usdjpy_112, gs_usdcad_144, time_228, time_232);
            ld_172 = f0_6(gs_audusd_136, gs_nzdusd_152, time_228, time_232);
            ld_180 = f0_6(gs_eurusd_104, gs_nzdusd_152, time_228, time_232);
            ld_188 = f0_6(gs_gbpusd_128, gs_nzdusd_152, time_228, time_232);
            ld_196 = f0_0(gs_nzdusd_152, gs_usdcad_144, time_228, time_232);
            ld_204 = f0_0(gs_nzdusd_152, gs_usdchf_120, time_228, time_232);
            ld_212 = f0_0(gs_nzdusd_152, gs_usdjpy_112, time_228, time_232);
            g_ibuf_160[index_0] = (ld_4 + ld_12 + ld_20 + ld_28 + ld_116 + ld_148 + ld_180) / gi_200 + gi_100;
            g_ibuf_164[index_0] = ((-ld_4) + ld_36 + ld_44 - ld_52 - ld_84 + ld_132 - ld_220) / gi_200 + gi_100;
            g_ibuf_168[index_0] = ((-ld_12) - ld_36 - ld_60 - ld_76 - ld_100 - ld_164 - ld_212) / gi_200 + gi_100;
            g_ibuf_172[index_0] = ((-ld_20) - ld_44 + ld_60 - ld_68 - ld_92 - ts_156 - ld_204) / gi_200 + gi_100;
            g_ibuf_176[index_0] = ((-ld_28) + ld_52 + ld_68 + ld_76 + ld_108 + ld_140 + ld_188) / gi_200 + gi_100;
            g_ibuf_180[index_0] = ((-ld_116) + ld_84 + ld_100 + ld_92 - ld_108 + ld_124 + ld_172) / gi_200 + gi_100;
            g_ibuf_184[index_0] = ((-ld_148) - ld_132 + ld_164 + ts_156 - ld_140 - ld_124 - ld_196) / gi_200 + gi_100;
            g_ibuf_188[index_0] = ((-ld_180) + ld_220 + ld_212 + ld_204 - ld_188 + ld_196 - ld_172) / gi_200 + gi_100;
         }
      }
      return (0);
   }
}

double f0_3(string as_0, int ai_8, int ai_12) {
   double ld_16 = f0_7(as_0, ai_8);
   double ld_24 = f0_7(as_0, ai_12);
   if (f0_5(ld_24)) return (0);
   return (1000.0 * MathLog(ld_16 / ld_24));
}

double f0_0(string as_0, string as_8, int ai_16, int ai_20) {
   double ld_24 = f0_7(as_0, ai_16) * f0_7(as_8, ai_16);
   double ld_32 = f0_7(as_0, ai_20) * f0_7(as_8, ai_20);
   if (f0_5(ld_32)) return (0);
   return (1000.0 * MathLog(ld_24 / ld_32));
}

double f0_6(string as_0, string as_8, int ai_16, int ai_20) {
   double ld_40 = f0_7(as_8, ai_16);
   double ld_48 = f0_7(as_8, ai_20);
   if (f0_5(ld_40)) return (0);
   if (f0_5(ld_48)) return (0);
   double ld_24 = f0_7(as_0, ai_16) / ld_40;
   double ld_32 = f0_7(as_0, ai_20) / ld_48;
   if (f0_5(ld_32)) return (0);
   return (1000.0 * MathLog(ld_24 / ld_32));
}

double f0_7(string a_symbol_0, int ai_8) {
   return (iMA(a_symbol_0, 0, g_period_76, 0, g_ma_method_84, g_applied_price_80, iBarShift(a_symbol_0, 0, ai_8)));
}

int f0_5(double ad_0) {
   return (NormalizeDouble(ad_0, 8) - 0.0 < 0.00000001);
}