
#property copyright "www.Forex-Zarabotok.ru"
#property link      "www.Forex-Zarabotok.ru"

//#include <stdlib.mqh>
#import "stdlib.ex4"
   string ErrorDescription(int a0); // DA69CBAFF4D38B87377667EEC549DE5A
#import "wininet.dll"
   int InternetOpenA(string a0, int a1, string a2, string a3, int a4);
   int InternetConnectA(int a0, string a1, int a2, string a3, string a4, int a5, int a6, int a7);
   int HttpOpenRequestA(int a0, string a1, string a2, string a3, string a4, int a5, int a6, int a7);
   bool HttpSendRequestA(int a0, string a1, int a2, string a3, int a4);
   int InternetReadFile(int a0, int& a1[], int a2, int& a3[]);
   int InternetCloseHandle(int a0);
#import

string Gs_76 = "Forex_DC_SC_Real";
extern int TimeFrame = 60;
int Gi_88 = 3;
bool Gi_92 = FALSE;
extern bool BUY = TRUE;
extern bool SELL = TRUE;
extern int Magic_Buy = 7777;
extern int Magic_Sell = 4444;
extern double StartLot = 0.01;
extern bool FixedLot = TRUE;
extern double RiskPercent = 0.01;
int Gi_132 = 14;
double Gd_136 = 14.0;
double Gd_144 = 1.1;
int Gi_152 = 3;
double Gd_156 = 1111.0;
double Gd_164 = 30.0;
double Gd_172 = 1111.0;
double Gd_180 = 0.001;
double Gd_188 = -0.001;
int Gi_196 = 200;
int Gi_200 = 22222;
int Gi_204 = 2;
string Gs_208 = "Forex_DC_SC_Demo";
string Gs_216 = "server.forexsovetnik.ru/olea/";
string Gs_224 = "MFEA_Key.txt";
bool Gi_232 = TRUE;
string Gs_236 = "";
string Gs_244 = "";
bool Gi_252 = FALSE;
bool Gi_256 = FALSE;
bool Gi_260 = FALSE;
int Gi_264 = -1;
string Gs_268;
int Gi_276 = 0;
int Gi_280 = 0;
int Gi_284 = 0;
int Gi_288 = 0;
int Gi_292 = 0;
int Gi_300;
int Gi_304;
double Gd_308;
double Gd_316;
double Gd_324;
double Gd_332;
double Gd_340;
double Gd_348;
double Gd_356;
string Gs_364;
string Gs_372;
string Gs_380;
int Gi_388 = 1;
bool Gi_392;

// 0CB45099AD952CDE234A8D0E6D1C7558
int f0_1(string As_0, string As_8, string As_16, string &As_24) {
   int Li_36;
   int Li_40;
   string Ls_44;
   string Ls_52;
   string Ls_68;
   As_24 = "";
   int Li_32 = 0;
   if (As_8 == "POST") Ls_68 = "Content-Type: application/x-www-form-urlencoded";
   if (As_8 == "GET") {
      As_0 = As_0 + "?" + As_16;
      Ls_68 = "";
      As_16 = "";
   }
   int Li_60 = StringFind(As_0, "/", 0);
   if (Li_60 == -1) {
      Ls_44 = As_0;
      Ls_52 = "/";
   } else {
      Ls_44 = StringSubstr(As_0, 0, Li_60);
      Ls_52 = StringSubstr(As_0, Li_60, StringLen(As_0) - Li_60);
   }
   if (Gi_252 == FALSE) {
      Gi_252 = InternetOpenA("Microsoft Internet Explorer", 0, "", "", 0);
      Gi_256 = FALSE;
   }
   if (Gi_252 != FALSE) {
      if (Gi_256 == FALSE) Gi_256 = InternetConnectA(Gi_252, Ls_44, 80, "", "", 3, 0, 0);
      if (Gi_256 != FALSE) {
         Li_36 = HttpOpenRequestA(Gi_256, As_8, Ls_52, "", "", 0, -2147483647, 0);
         if (Li_36 != 0) {
            Li_40 = HttpSendRequestA(Li_36, Ls_68, StringLen(Ls_68), As_16, StringLen(As_16));
            if (Li_40 > 0) {
               if (!f0_23(Li_36, As_24)) {
                  InternetCloseHandle(Li_40);
                  InternetCloseHandle(Li_36);
                  InternetCloseHandle(Gi_256);
                  Gi_256 = FALSE;
                  InternetCloseHandle(Gi_252);
                  Gi_252 = FALSE;
                  Li_32 = 5;
               } else {
                  InternetCloseHandle(Li_40);
                  InternetCloseHandle(Li_36);
               }
            } else {
               InternetCloseHandle(Li_36);
               InternetCloseHandle(Gi_256);
               Gi_256 = FALSE;
               InternetCloseHandle(Gi_252);
               Gi_252 = FALSE;
               Li_32 = 4;
            }
         } else {
            InternetCloseHandle(Gi_256);
            Gi_256 = FALSE;
            InternetCloseHandle(Gi_252);
            Gi_252 = FALSE;
            Li_32 = 3;
         }
      } else {
         InternetCloseHandle(Gi_252);
         Gi_252 = FALSE;
         Li_32 = 2;
      }
   } else Li_32 = 1;
   return (Li_32);
}

// E1EE65A6BDF448CA89AA94832BE53ABF
bool f0_23(int Ai_0, string &As_4) {
   int Lia_12[][256];
   int Lia_16[];
   int Lia_24[256];
   int Lia_28[1];
   string Ls_40;
   As_4 = "";
   int Li_20 = 0;
   while (!IsStopped()) {
      if (!InternetReadFile(Ai_0, Lia_24, 1024, Lia_28)) return (FALSE);
      if (Lia_28[0] == 0) break;
      ArrayResize(Lia_12, Li_20 + 1);
      ArrayResize(Lia_16, Li_20 + 1);
      Lia_16[Li_20] = Lia_28[0];
      for (int Li_32 = 0; Li_32 < 256; Li_32++) Lia_12[Li_20][Li_32] = Lia_24[Li_32];
      Li_20++;
      Sleep(1);
   }
   for (int Li_36 = 0; Li_36 < Li_20; Li_36++) {
      Lia_28[0] = Lia_16[Li_36];
      for (Li_32 = 0; Li_32 < 256; Li_32++) Lia_24[Li_32] = Lia_12[Li_36][Li_32];
      Ls_40 = "";
      for (Li_32 = 0; Li_32 < 256; Li_32++) {
         Ls_40 = Ls_40 + CharToStr(Lia_24[Li_32] & 255);
         if (StringLen(Ls_40) == Lia_28[0]) break;
         Ls_40 = Ls_40 + CharToStr(Lia_24[Li_32] >> 8 & 255);
         if (StringLen(Ls_40) == Lia_28[0]) break;
         Ls_40 = Ls_40 + CharToStr(Lia_24[Li_32] >> 16 & 255);
         if (StringLen(Ls_40) == Lia_28[0]) break;
         Ls_40 = Ls_40 + CharToStr(Lia_24[Li_32] >> 24 & 255);
         if (StringLen(Ls_40) == Lia_28[0]) break;
      }
      As_4 = StringConcatenate(As_4, Ls_40);
   }
   return (TRUE);
}

// 33A902D580E8BF1EB0F0D2B36920461B
int f0_8() {
   if (Gi_260) return (1);
   if (!IsDllsAllowed()) return (0);
   string Ls_0 = Gs_224;
   int Li_8 = FileOpen(Ls_0, FILE_READ);
   if (Li_8 == -1) {
      Alert("Немогу открыть файл " + Ls_0);
      return (0);
   }
   string Ls_12 = StringTrimLeft(StringTrimRight(FileReadString(Li_8)));
   string Ls_20 = StringTrimLeft(StringTrimRight(FileReadString(Li_8)));
   if (AccountNumber() <= 0) {
      Print("Не определен номер счета");
      return (0);
   }
   Gs_236 = "l=" + Ls_12 + "&k=" + Ls_20 + "&n=" + AccountNumber() + "&e=" + Gs_208 + "&";
   Gi_260 = TRUE;
   if (Gi_232) {
      if (!f0_12()) {
         Print("Не удалось создать папки для хранения данных");
         return (0);
      }
   }
   Print("RemoteSolveInit - Ok!");
   return (1);
}

// DF9B3DCA7FF3B7206D8305C690383CD9
int f0_22(string As_0) {
   int Li_8 = FileOpen(As_0 + "1.txt", FILE_CSV|FILE_WRITE);
   if (Li_8 == -1) return (0);
   FileClose(Li_8);
   FileDelete(As_0 + "1.txt");
   return (1);
}

// 6D47CE10CA36A4F7372906FD2C4EEB36
bool f0_12() {
   Gs_244 = "RemoteSolve\\";
   if (!f0_22(Gs_244)) return (FALSE);
   Gs_244 = Gs_244 + Gs_208 + "\\";
   if (!f0_22(Gs_244)) return (FALSE);
   string Ls_0 = f0_24();
   string Ls_8 = StringSubstr(Ls_0, 0, 1);
   string Ls_16 = StringSubstr(Ls_0, StringLen(Ls_0) - 1, 1);
   Gs_244 = Gs_244 + Ls_8 + "\\";
   if (!f0_22(Gs_244)) return (FALSE);
   Gs_244 = Gs_244 + Ls_16 + "\\";
   if (!f0_22(Gs_244)) return (FALSE);
   Gs_244 = Gs_244 + Ls_0 + "\\";
   if (!f0_22(Gs_244)) return (FALSE);
   return (TRUE);
}

// DCCF474DB73276D297BF8BE8E84859E7
string f0_21(double Ad_0) {
   string Ls_8 = DoubleToStr(Ad_0, 8);
   int Li_16 = StringFind(Ls_8, ".", 0);
   if (Li_16 == -1) return (Ls_8);
   int Li_20 = StringLen(Ls_8);
   for (int Li_24 = Li_20 - 1; Li_24 > Li_16; Li_24--)
      if (StringSubstr(Ls_8, Li_24, 1) == "0") Ls_8 = StringSubstr(Ls_8, 0, StringLen(Ls_8) - 1);
   if (StringSubstr(Ls_8, StringLen(Ls_8) - 1, 1) == ".") Ls_8 = StringSubstr(Ls_8, 0, StringLen(Ls_8) - 1);
   if (Ls_8 == ".") Ls_8 = "";
   if (Ls_8 == "") Ls_8 = "0";
   return (Ls_8);
}

// 1A55C9EF5EC8C053834FAA630C35E06B
int f0_4(string As_0, string As_8, double &Ad_16) {
   string Ls_24;
   int Li_32;
   string Ls_36;
   if (Gi_232) {
      Ls_24 = Gs_244 + StringSubstr(As_8, StringLen(As_8) - 2, 2) + "\\" + As_0 + "_" + As_8 + ".txt";
      Li_32 = FileOpen(Ls_24, FILE_CSV|FILE_READ);
      if (Li_32 != -1) {
         Ad_16 = StrToDouble(FileReadString(Li_32));
         FileClose(Li_32);
         return (1);
      }
   }
   int Li_44 = f0_1(Gs_216, "GET", Gs_236 + "f=" + As_0 + "&p=" + As_8, Ls_36);
   if (Li_44 != 0) {
      Print("Ошибка fWinInet_GetContent (#" + Li_44 + ")");
      return (0);
   }
   Ls_36 = StringTrimLeft(StringTrimRight(Ls_36));
   string Ls_48 = "<!--start-->";
   string Ls_56 = "<!--end-->";
   int Li_64 = 12;
   int Li_68 = 10;
   int Li_72 = StringLen(Ls_36);
   string Ls_76 = StringSubstr(Ls_36, 0, Li_64);
   string Ls_84 = StringSubstr(Ls_36, Li_72 - Li_68, Li_68);
   if (Ls_76 != Ls_48 || Ls_84 != Ls_56) {
      Print("Получены неправильные данные (наиболее вероятно ошибка 404)");
      return (0);
   }
   string Ls_92 = StringSubstr(Ls_36, Li_64, Li_72 - Li_64 - Li_68);
   Ls_92 = StringTrimLeft(StringTrimRight(Ls_92));
   if (StringFind(Ls_92, "Error", 0) == 0) {
      Print("ServerScript: " + Ls_92);
      return (0);
   }
   Ad_16 = StrToDouble(Ls_92);
   if (Gi_232) {
      Li_32 = FileOpen(Ls_24, FILE_CSV|FILE_WRITE);
      if (Li_32 != -1) {
         FileWrite(Li_32, Ls_92);
         FileClose(Li_32);
      }
   }
   return (1);
}

// 13C40D1EBEE03789915116497D20718D
int f0_3(string As_0, string As_8, string &As_16) {
   string Ls_24;
   int Li_32 = f0_1(Gs_216, "GET", Gs_236 + "f=" + As_0 + "&p=" + As_8, Ls_24);
   if (Li_32 != 0) {
      Print("Ошибка fWinInet_GetContent (#" + Li_32 + ")");
      return (0);
   }
   Ls_24 = StringTrimLeft(StringTrimRight(Ls_24));
   string Ls_36 = "<!--start-->";
   string Ls_44 = "<!--end-->";
   int Li_52 = 12;
   int Li_56 = 10;
   int Li_60 = StringLen(Ls_24);
   string Ls_64 = StringSubstr(Ls_24, 0, Li_52);
   string Ls_72 = StringSubstr(Ls_24, Li_60 - Li_56, Li_56);
   if (Ls_64 != Ls_36 || Ls_72 != Ls_44) {
      Print("Получены неправильные данные (наиболее вероятно ошибка 404)");
      return (0);
   }
   string Ls_80 = StringSubstr(Ls_24, Li_52, Li_60 - Li_52 - Li_56);
   Ls_80 = StringTrimLeft(StringTrimRight(Ls_80));
   if (StringFind(Ls_80, "Error", 0) == 0) {
      Print("ServerScript: " + Ls_80);
      return (0);
   }
   As_16 = Ls_80;
   return (1);
}

// D79B16A7E66444F302744BAA93DBA32B
int f0_18(string As_0) {
   string Ls_12;
   int Li_8 = TimeCurrent() / 86400;
   if (Li_8 != Gi_264) {
      if (!f0_3("Check", "", Ls_12)) return (0);
      if (Gi_264 == -1) Alert(WindowExpertName() + "(" + Symbol() + "): " + Ls_12);
      else
         if (StringTrimLeft(StringTrimRight(Ls_12)) != "Ok!") Alert(WindowExpertName() + "(" + Symbol() + "): " + Ls_12);
      Gi_264 = Li_8;
   }
   return (1);
}

// E28E06539239A6F156CD0799A6F2B206
string f0_24() {
   for (string Ls_0 = f0_21(AccountBalance()) + "_" + f0_21(TimeFrame) + "_" + f0_21(Gi_88) + "_" + f0_21(Gi_92) + "_" + f0_21(BUY) + "_" + f0_21(SELL) + "_" + f0_21(Magic_Buy) +
      "_" + f0_21(Magic_Sell) + "_" + f0_21(StartLot) + "_" + f0_21(FixedLot) + "_" + f0_21(RiskPercent); StringLen(Ls_0) < 2; Ls_0 = Ls_0 + "_") {
   }
   return (Ls_0);
}

// E37F0136AA3FFAF149B351F6A4C948E9
int init() {
   int Li_12;
   int Li_16;
   Gs_268 = Magic_Buy + "-" + Magic_Sell;
   f0_8();
   if (TimeFrame == 0) TimeFrame = Period();
   if (Gi_152 < 3) Gi_152 = 3;
   if (!IsDllsAllowed()) {
      Alert(WindowExpertName() + ": разрешите DLL");
      return (0);
   }
   Gi_392 = TRUE;
   string Ls_0 = Symbol();
   if (Ls_0 == "GBPUSD") {
      Gi_132 = 13;
      Gd_136 = 10;
      Gd_144 = 1.05;
      Gd_156 = 11;
      Gd_164 = 25;
      Gd_172 = 5;
      Gd_180 = 0.001;
      Gd_188 = -0.001;
      Gi_196 = 100;
      Gi_200 = 45;
   } else {
      if (Ls_0 == "EURUSD") {
         Gi_132 = 17;
         Gd_136 = 16;
         Gd_144 = 1.05;
         Gd_156 = 9;
         Gd_164 = 40;
         Gd_172 = 4;
         Gd_180 = 0.001;
         Gd_188 = -0.001;
         Gi_196 = 550;
         Gi_200 = 35;
      } else {
         if (Ls_0 == "AUDUSD") {
            Gi_132 = 9;
            Gd_136 = 10;
            Gd_144 = 1.0;
            Gd_156 = 4;
            Gd_164 = 25;
            Gd_172 = 4;
            Gd_180 = 0.001;
            Gd_188 = -0.001;
            Gi_196 = 125;
            Gi_200 = 25;
         } else {
            if (Ls_0 == "NZDUSD") {
               Gi_132 = 18;
               Gd_136 = 28;
               Gd_144 = 1.15;
               Gd_156 = 7;
               Gd_164 = 25;
               Gd_172 = 4;
               Gd_180 = 0.001;
               Gd_188 = -0.001;
               Gi_196 = 700;
               Gi_200 = 50;
            } else {
               if (Ls_0 == "USDCHF") {
                  Gi_132 = 18;
                  Gd_136 = 12;
                  Gd_144 = 1.0;
                  Gd_156 = 6;
                  Gd_164 = 55;
                  Gd_172 = 4;
                  Gd_180 = 0.001;
                  Gd_188 = -0.001;
                  Gi_196 = 625;
                  Gi_200 = 15;
               } else {
                  if (Ls_0 == "EURGBP") {
                     Gi_132 = 11;
                     Gd_136 = 10;
                     Gd_144 = 1.1;
                     Gd_156 = 12;
                     Gd_164 = 45;
                     Gd_172 = 11;
                     Gd_180 = 0.001;
                     Gd_188 = -0.001;
                     Gi_196 = 100;
                     Gi_200 = 25;
                  } else {
                     if (Ls_0 == "USDCAD") {
                        Gi_132 = 18;
                        Gd_136 = 16;
                        Gd_144 = 1.1;
                        Gd_156 = 4;
                        Gd_164 = 60;
                        Gd_172 = 5;
                        Gd_180 = 0.001;
                        Gd_188 = -0.001;
                        Gi_196 = 125;
                        Gi_200 = 15;
                     } else {
                        Gi_392 = FALSE;
                        Alert("" + Symbol() + " - неправильная валютная пара! Используйте рекомендуемые разработчиками валютные пары!");
                        Print("Неправильная валютная пара! Используйте рекомендуемые разработчиками валютные пары!");
                     }
                  }
               }
            }
         }
      }
   }
   Gi_276 = iTime(NULL, TimeFrame, 0);
   Gi_280 = Time[0];
   if (Digits == 5 || Digits == 3) Gi_388 = 10;
   Gd_136 *= Gi_388;
   Gi_132 *= Gi_388;
   Gi_304 = MathLog(1 / MarketInfo(Symbol(), MODE_LOTSTEP)) / MathLog(10);
   for (int Li_8 = 1; Li_8 <= Gi_88; Li_8++) {
      Li_12 = Magic_Buy + Li_8;
      Li_16 = Magic_Sell + Li_8;
      if (f0_6(Li_12, 1) == -1) return (0);
      if (f0_6(Li_16, 2) == -1) return (0);
   }
   return (0);
}

// 52D46093050F38C27267BCE42543EF60
int deinit() {
   return (0);
}

// EA2B2676C28C0DB26D39331A336C6B92
int start() {
   if (!f0_8()) return (0);
   if (!f0_18(Gs_268)) return (0);
   if (Gi_392 == FALSE) return (1);
   if (Gi_276 == iTime(NULL, TimeFrame, 0) && Gi_92 == TRUE) return (0);
   if (f0_19() == 0) return (0);
   for (int Li_0 = 1; Li_0 <= Gi_88; Li_0++)
      if (f0_13(Li_0) == -1) return (0);
   Gi_276 = iTime(NULL, TimeFrame, 0);
   return (0);
}

// A3FD2BAB434674F8B09BA0A81A04A108
int f0_13(int Ai_0) {
   int Li_12;
   int Li_16;
   RefreshRates();
   int Li_4 = Magic_Buy + Ai_0;
   int Li_8 = Magic_Sell + Ai_0;
   if (f0_6(Li_4, 1) == -1) return (-1);
   if (f0_6(Li_8, 2) == -1) return (-1);
   if (Gi_280 == iTime(NULL, TimeFrame, 0)) return (0);
   RefreshRates();
   if (!f0_17(Li_12)) return (-1);
   Gi_288 = f0_29(Li_4);
   if (Gi_288 == -1) return (-1);
   if (Gi_288 > 0 && Li_12 == 1) {
      Gd_332 = f0_5(Li_4);
      if (Gd_332 == -1.0) return (-1);
      Gd_356 = f0_27(Gi_288 + 1) * Point;
      if (Gd_332 - Ask >= Gd_356) {
         Gd_340 = f0_2(Li_4, Gi_288, 1, Gd_356);
         if (Gd_340 == -1.0) return (-1);
         Gs_364 = "eFALite_v3.2:B" + Li_4 + ":" + ((Gi_288 + 1));
         if (f0_26(OP_BUY, Gd_340, 0, 0, Li_4, Gs_364) < 0) return (-1);
         Gi_280 = iTime(NULL, TimeFrame, 0);
      }
   }
   Gi_292 = f0_29(Li_8);
   if (Gi_292 == -1) return (-1);
   if (Gi_292 > 0 && Li_12 == -1) {
      Gd_324 = f0_15(Li_8);
      if (Gd_324 == -1.0) return (-1);
      Gd_356 = f0_27(Gi_292 + 1) * Point;
      if (Bid - Gd_324 >= Gd_356) {
         Gd_348 = f0_2(Li_8, Gi_292, 2, Gd_356);
         if (Gd_348 == -1.0) return (-1);
         Gs_372 = "eFALite_v3.2:S" + Li_8 + ":" + ((Gi_292 + 1));
         if (f0_26(OP_SELL, Gd_348, 0, 0, Li_8, Gs_372) < 0) return (-1);
         Gi_280 = iTime(NULL, TimeFrame, 0);
      }
   }
   if (Gi_280 != iTime(NULL, TimeFrame, 0)) {
      if (!f0_10(Ai_0, Li_16)) return (-1);
      Gi_288 = f0_29(Li_4);
      if (Gi_288 == -1) return (-1);
      if (Li_16 > 0) {
         if (Gi_288 == 0 && BUY == TRUE) {
            Gs_364 = "eFALite_v3.2:B" + Li_4 + ":1";
            if (f0_26(OP_BUY, f0_20(), 0, 0, Li_4, Gs_364) < 0) return (-1);
            Gi_280 = iTime(NULL, TimeFrame, 0);
         }
      }
      Gi_292 = f0_29(Li_8);
      if (Gi_292 == -1) return (-1);
      if (Li_16 < 0) {
         if (Gi_292 == 0 && SELL == TRUE) {
            Gs_372 = "eFALite_v3.2:S" + Li_8 + ":1";
            if (f0_26(OP_SELL, f0_20(), 0, 0, Li_8, Gs_372) < 0) return (-1);
            Gi_280 = iTime(NULL, TimeFrame, 0);
         }
      }
   }
   return (0);
}

// C2D17379C1376B7B6BD625F4400CBA94
bool f0_17(int &Ai_0) {
   double Ld_44;
   Ai_0 = 0;
   HideTestIndicators(TRUE);
   double Ld_4 = iMACD(NULL, TimeFrame, Gd_156, Gd_164, Gd_172, PRICE_OPEN, MODE_MAIN, 0);
   double Ld_12 = iMACD(NULL, TimeFrame, Gd_156, Gd_164, Gd_172, PRICE_CLOSE, MODE_MAIN, 1);
   double Ld_20 = iMACD(NULL, TimeFrame, Gd_156, Gd_164, Gd_172, PRICE_CLOSE, MODE_MAIN, 2);
   double Ld_28 = iMACD(NULL, TimeFrame, Gd_156, Gd_164, Gd_172, PRICE_CLOSE, MODE_SIGNAL, 1);
   double Ld_36 = iMACD(NULL, TimeFrame, Gd_156, Gd_164, Gd_172, PRICE_CLOSE, MODE_SIGNAL, 2);
   HideTestIndicators(FALSE);
   string Ls_52 = Gd_188 + "," + Gd_180 + "," + Ld_4 + "," + Ld_12 + "," + Ld_20 + "," + Ld_28 + "," + Ld_36;
   if (Ld_12 > Ld_28 && Ld_20 < Ld_36) {
      if (!f0_4("F0001", Ls_52, Ld_44)) return (FALSE);
      if (Ld_44 == 1.0) Ai_0 = 1;
   }
   if (Ld_12 < Ld_28 && Ld_20 > Ld_36) {
      if (!f0_4("F0001", Ls_52, Ld_44)) return (FALSE);
      if (Ld_44 == -1.0) Ai_0 = -1;
   }
   return (TRUE);
}

// 58DC7095ADFBAFD87BA304A65054E5B4
bool f0_10(int Ai_0, int &Ai_4) {
   double Ld_8;
   double Ld_16;
   double Ld_24;
   double Ld_32;
   double Ld_40;
   double Ld_48;
   double Ld_56;
   double Ld_64;
   double Ld_72;
   string Ls_80;
   Ai_4 = 0;
   if (Ai_0 == 1) {
      HideTestIndicators(TRUE);
      Ld_8 = iMA(Symbol(), TimeFrame, Gi_196, 0, MODE_EMA, PRICE_CLOSE, 0);
      HideTestIndicators(FALSE);
      Ld_16 = Ask;
      if (Ld_16 - Ld_8 > Gi_200 * Point) Ai_4 = -1;
      if (Ld_8 - Ld_16 > Gi_200 * Point) Ai_4 = 1;
   } else {
      HideTestIndicators(TRUE);
      Ld_24 = iMACD(NULL, TimeFrame, Gd_156, Gd_164, Gd_172, PRICE_OPEN, MODE_MAIN, 0);
      Ld_32 = iMACD(NULL, TimeFrame, Gd_156, Gd_164, Gd_172, PRICE_OPEN, MODE_MAIN, 1);
      Ld_40 = iMACD(NULL, TimeFrame, Gd_156, Gd_164, Gd_172, PRICE_CLOSE, MODE_MAIN, 2);
      Ld_48 = iMACD(NULL, TimeFrame, Gd_156, Gd_164, Gd_172, PRICE_CLOSE, MODE_MAIN, 3);
      Ld_56 = iMACD(NULL, TimeFrame, Gd_156, Gd_164, Gd_172, PRICE_CLOSE, MODE_SIGNAL, 2);
      Ld_64 = iMACD(NULL, TimeFrame, Gd_156, Gd_164, Gd_172, PRICE_CLOSE, MODE_SIGNAL, 3);
      HideTestIndicators(FALSE);
      Ls_80 = Gd_188 + "," + Gd_180 + "," + Ld_24 + "," + Ld_32 + "," + Ld_40 + "," + Ld_48 + "," + 0 + "," + Ld_56 + "," + Ld_64;
      if (Ld_40 > Ld_56 && Ld_48 < Ld_64) {
         if (!f0_4("F0002", Ls_80, Ld_72)) return (FALSE);
         if (Ld_72 == 1.0) Ai_4 = 1;
      }
      if (Ld_40 < Ld_56 && Ld_48 > Ld_64) {
         if (!f0_4("F0002", Ls_80, Ld_72)) return (FALSE);
         if (Ld_72 == -1.0) Ai_4 = -1;
      }
   }
   return (TRUE);
}

// 1FACB28988828CE683F0BC4BDFD69EC3
int f0_6(int Ai_0, int Ai_4) {
   int Lia_16[50];
   bool Li_20;
   int Li_24;
   double Ld_28;
   double Ld_36;
   int Li_48;
   int Li_8 = f0_29(Ai_0);
   if (Li_8 == 0) return (0);
   if (Li_8 == -1) return (-1);
   if (Li_8 < Gi_152) {
      Gd_308 = f0_7(Ai_0, Ai_4);
      if (Gd_308 != -1.0) {
         if (Ai_4 == 1) Gd_316 = Gd_308 + Gi_132 * Point;
         else Gd_316 = Gd_308 - Gi_132 * Point;
         for (int Li_12 = 0; Li_12 < OrdersTotal(); Li_12++) {
            if (OrderSelect(Li_12, SELECT_BY_POS, MODE_TRADES)) {
               if (!(OrderSymbol() == Symbol() && OrderMagicNumber() == Ai_0 && OrderType() == OP_BUY || OrderType() == OP_SELL)) continue;
               if (NormalizeDouble(OrderTakeProfit(), Digits) == NormalizeDouble(Gd_316, Digits)) continue;
               if (f0_9(Gd_316) != 0) continue;
               return (-1);
            } else return (-1);
         }
      }
   } else {
      ArrayInitialize(Lia_16, 0);
      Li_20 = FALSE;
      Li_24 = f0_25(Ai_0, Ai_4);
      if (Li_24 != -1) {
         Ld_28 = 0;
         Ld_36 = 0;
         for (int Li_44 = 0; Li_44 < OrdersTotal(); Li_44++) {
            if (OrderSelect(Li_44, SELECT_BY_POS, MODE_TRADES)) {
               if (OrderSymbol() == Symbol() && OrderMagicNumber() == Ai_0 && OrderTicket() != Li_24 && OrderType() == OP_BUY || OrderType() == OP_SELL) {
                  Ld_28 += OrderOpenPrice() * OrderLots();
                  Ld_36 += OrderLots();
               }
            } else return (-1);
         }
         Ld_28 = NormalizeDouble(Ld_28 / Ld_36, Digits);
         if (Ai_4 == 1) Gd_316 = Ld_28 + Gi_132 * Point;
         else Gd_316 = Ld_28 - Gi_132 * Point;
         Li_48 = f0_0(Ai_0, Li_24, Gd_316, Ai_4);
         if (Li_48 == -1) return (-1);
         if (Li_48 == 0 || Li_48 == 10000) {
            Li_48 = f0_16(Ai_0, Ai_4);
            if (Li_48 == -1) return (-1);
         }
         Lia_16[0] = Li_24;
         Lia_16[1] = Li_48;
         ArrayResize(Lia_16, 2);
         if (f0_28(Ai_0, Lia_16, Li_20, Ai_4) == -1) return (-1);
      }
   }
   return (0);
}

// E29BF15C1E0E05CAC054EAA80E16C81A
int f0_25(int Ai_0, int Ai_4) {
   double Lda_8[50][3];
   if (Ai_4 == 1) ArrayInitialize(Lda_8, 10000);
   else ArrayInitialize(Lda_8, 0);
   int Li_12 = 0;
   for (int Li_16 = OrdersTotal() - 1; Li_16 >= 0; Li_16--) {
      if (OrderSelect(Li_16, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Ai_0 && OrderType() == OP_BUY || OrderType() == OP_SELL) {
            Lda_8[Li_12][0] = OrderOpenPrice();
            Lda_8[Li_12][1] = OrderLots();
            Lda_8[Li_12][2] = OrderTicket();
            Li_12++;
         }
      } else return (-1);
   }
   if (Ai_4 == 1) ArraySort(Lda_8, WHOLE_ARRAY, 0, MODE_ASCEND);
   else ArraySort(Lda_8, WHOLE_ARRAY, 0, MODE_DESCEND);
   int Li_20 = Lda_8[0][2];
   return (Li_20);
}

// 03FD98B96B08D905A18FDFA57ACE72E4
int f0_0(int Ai_0, int Ai_4, double Ad_8, int Ai_16) {
   double Lda_20[50][3];
   if (Ai_16 == 1) ArrayInitialize(Lda_20, 10000);
   else ArrayInitialize(Lda_20, 0);
   int Li_24 = 0;
   for (int Li_28 = OrdersTotal() - 1; Li_28 >= 0; Li_28--) {
      if (OrderSelect(Li_28, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Ai_0 && OrderTicket() != Ai_4 && OrderType() == OP_BUY || OrderType() == OP_SELL) {
            if (Ai_16 == 1 && OrderOpenPrice() > Ad_8) {
               Lda_20[Li_24][0] = OrderOpenPrice();
               Lda_20[Li_24][1] = OrderLots();
               Lda_20[Li_24][2] = OrderTicket();
               Li_24++;
               continue;
            }
            if (Ai_16 == 2 && OrderOpenPrice() < Ad_8) {
               Lda_20[Li_24][0] = OrderOpenPrice();
               Lda_20[Li_24][1] = OrderLots();
               Lda_20[Li_24][2] = OrderTicket();
               Li_24++;
            }
         }
      } else return (-1);
   }
   if (Ai_16 == 1) ArraySort(Lda_20, WHOLE_ARRAY, 0, MODE_ASCEND);
   else ArraySort(Lda_20, WHOLE_ARRAY, 0, MODE_DESCEND);
   int Li_32 = Lda_20[0][2];
   return (Li_32);
}

// B768D8B22AFBBC603A2AAA717079F822
int f0_16(int Ai_0, int Ai_4) {
   double Lda_8[50][3];
   if (Ai_4 == 1) ArrayInitialize(Lda_8, 0);
   else ArrayInitialize(Lda_8, 10000);
   int Li_12 = 0;
   for (int Li_16 = OrdersTotal() - 1; Li_16 >= 0; Li_16--) {
      if (OrderSelect(Li_16, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Ai_0 && OrderType() == OP_BUY || OrderType() == OP_SELL) {
            Lda_8[Li_12][0] = OrderOpenPrice();
            Lda_8[Li_12][1] = OrderLots();
            Lda_8[Li_12][2] = OrderTicket();
            Li_12++;
         }
      } else return (-1);
   }
   if (Ai_4 == 1) ArraySort(Lda_8, WHOLE_ARRAY, 0, MODE_DESCEND);
   else ArraySort(Lda_8, WHOLE_ARRAY, 0, MODE_ASCEND);
   int Li_20 = Lda_8[0][2];
   return (Li_20);
}

// EEEA76F770714EC2AB0626CEC649A0A1
int f0_28(int Ai_0, int Aia_4[50], int Ai_8, int Ai_12) {
   double Ld_16 = 0;
   double Ld_24 = 0;
   double Ld_32 = 0;
   double Ld_40 = 0;
   double Ld_48 = 0;
   double Ld_56 = 0;
   double Ld_64 = NormalizeDouble(MarketInfo(Symbol(), MODE_SPREAD), Digits) * Point;
   bool Li_72 = FALSE;
   for (int Li_76 = 0; Li_76 < OrdersTotal(); Li_76++) {
      if (OrderSelect(Li_76, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Ai_0 && OrderType() == OP_BUY || OrderType() == OP_SELL) {
            Li_72 = FALSE;
            for (int Li_80 = 0; Li_80 < ArraySize(Aia_4); Li_80++)
               if (OrderTicket() == Aia_4[Li_80]) Li_72 = TRUE;
            if (Li_72 == TRUE) {
               Ld_40 += OrderOpenPrice() * OrderLots();
               Ld_48 += OrderLots();
               continue;
            }
            Ld_16 += OrderOpenPrice() * OrderLots();
            Ld_24 += OrderLots();
         }
      } else return (-1);
   }
   if (Ld_16 > 0.0 && Ld_24 > 0.0) Ld_16 = NormalizeDouble(Ld_16 / Ld_24, Digits);
   if (Ld_40 > 0.0 && Ld_48 > 0.0) Ld_40 = NormalizeDouble(Ld_40 / Ld_48, Digits);
   bool Li_84 = FALSE;
   if (Ai_12 == 1) {
      Ld_32 = Ld_16 + Gi_132 * Point;
      Ld_56 = Ld_40 + Gi_132 * Point;
      if (Ld_56 > Ld_32) Li_84 = TRUE;
   } else {
      Ld_32 = Ld_16 - Gi_132 * Point;
      Ld_56 = Ld_40 - Gi_132 * Point;
      if (Ld_56 < Ld_32) Li_84 = TRUE;
   }
   for (Li_76 = 0; Li_76 < OrdersTotal(); Li_76++) {
      if (OrderSelect(Li_76, SELECT_BY_POS, MODE_TRADES)) {
         if (!(OrderSymbol() == Symbol() && OrderMagicNumber() == Ai_0 && OrderType() == OP_BUY || OrderType() == OP_SELL)) continue;
         Li_72 = FALSE;
         for (Li_80 = 0; Li_80 < ArraySize(Aia_4); Li_80++)
            if (OrderTicket() == Aia_4[Li_80]) Li_72 = TRUE;
         if (Li_84 == TRUE) Li_72 = FALSE;
         if (Li_72 == TRUE) {
            if (NormalizeDouble(OrderTakeProfit(), Digits) == NormalizeDouble(Ld_56, Digits)) continue;
            if (f0_9(Ld_56) != 0) continue;
            return (-1);
         }
         if (NormalizeDouble(OrderTakeProfit(), Digits) == NormalizeDouble(Ld_32, Digits)) continue;
         if (f0_9(Ld_32) != 0) continue;
         return (-1);
      } else return (-1);
   }
   return (0);
}

// 2D16C2E5D3DD33F6C2ECBE53BC848288
double f0_7(int Ai_0, int Ai_4) {
   double Ld_8 = 0;
   double Ld_16 = 0;
   for (int Li_24 = 0; Li_24 < OrdersTotal(); Li_24++) {
      if (OrderSelect(Li_24, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Ai_0) {
            Ld_8 += OrderOpenPrice() * OrderLots();
            Ld_16 += OrderLots();
         }
      } else return (-1);
   }
   if (Ld_8 > 0.0 && Ld_16 > 0.0) return (NormalizeDouble(Ld_8 / Ld_16, Digits));
   return (0);
}

// F73E6A56CA4F91D3AAEC5490FAD85DED
int f0_29(int Ai_0) {
   int Li_4 = 0;
   for (int Li_8 = 0; Li_8 < OrdersTotal(); Li_8++) {
      if (OrderSelect(Li_8, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Ai_0) Li_4++;
      } else return (-1);
   }
   return (Li_4);
}

// 1230575A3C8F2E209BE41F7A287E4687
double f0_2(int Ai_0, int Ai_4, int Ai_8, double Ad_12) {
   double Ld_52;
   double Ld_60;
   double Ld_20 = 0;
   double Ld_28 = f0_11(Ai_0);
   if (Ld_28 == -1.0) return (-1);
   double Ld_36 = f0_20();
   double Ld_44 = 0;
   if (Ai_8 == 1) {
      Ld_52 = f0_5(Ai_0);
      if (Ld_52 == -1.0) return (-1);
      Ld_44 = (Ld_52 - Ask) / Ad_12;
   } else {
      Ld_60 = f0_15(Ai_0);
      if (Ld_60 == -1.0) return (-1);
      Ld_44 = (Bid - Ld_60) / Ad_12;
   }
   if (Ld_44 <= 1.0 || Ld_44 > 100.0) Ld_44 = 1;
   Ld_20 = NormalizeDouble(Ld_28 + Ld_36 * Ld_44, Gi_304);
   if (Ld_20 < Ld_36) Ld_20 = Ld_36;
   if (Ld_20 < Ld_28) Ld_20 = Ld_28;
   double Ld_68 = MarketInfo(Symbol(), MODE_MINLOT);
   double Ld_76 = MarketInfo(Symbol(), MODE_MAXLOT);
   if (Ld_20 < Ld_68) Ld_20 = Ld_68;
   if (Ld_20 > Ld_76) Ld_20 = Ld_76;
   Ld_20 = NormalizeDouble(Ld_20, Gi_204);
   return (Ld_20);
}

// DB726B88B592E11E2C65A7FA9AF14209
double f0_20() {
   double Ld_8;
   double Ld_0 = 0;
   string Ls_16 = FixedLot + "," + StartLot + "," + RiskPercent + "," + AccountEquity();
   if (!f0_4("F0003", Ls_16, Ld_8)) return (0);
   Ld_0 = Ld_8;
   Ld_0 = NormalizeDouble(Ld_0, Gi_204);
   if (Ld_0 < StartLot) Ld_0 = StartLot;
   double Ld_24 = MarketInfo(Symbol(), MODE_MINLOT);
   double Ld_32 = MarketInfo(Symbol(), MODE_MAXLOT);
   if (Ld_0 < Ld_24) Ld_0 = Ld_24;
   if (Ld_0 > Ld_32) Ld_0 = Ld_32;
   return (Ld_0);
}

// ECF89F9BA10A418F3D764E0D2B799D09
int f0_27(int Ai_0) {
   bool Li_4 = FALSE;
   Li_4 = NormalizeDouble(Gd_136 * MathPow(Gd_144, Ai_0), 0);
   return (Li_4);
}

// 5D4E74D9081F2EF27B82B7684D6B7DA1
double f0_11(int Ai_0) {
   double Lda_4[50];
   ArrayInitialize(Lda_4, 0);
   int Li_8 = 0;
   for (int Li_12 = 0; Li_12 < OrdersTotal(); Li_12++) {
      if (OrderSelect(Li_12, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Ai_0) {
            Lda_4[Li_8] = OrderLots();
            Li_8++;
         }
      } else return (-1);
   }
   ArraySort(Lda_4, WHOLE_ARRAY, 0, MODE_DESCEND);
   return (Lda_4[0]);
}

// B217B5C3F64CD4DC9F8BF27E3F5864A9
double f0_15(int Ai_0) {
   double Lda_4[50];
   ArrayInitialize(Lda_4, 0);
   int Li_8 = 0;
   for (int Li_12 = 0; Li_12 < OrdersTotal(); Li_12++) {
      if (OrderSelect(Li_12, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Ai_0) {
            Gs_380 = OrderComment();
            Lda_4[Li_8] = OrderOpenPrice();
            Li_8++;
         }
      } else return (-1);
   }
   ArraySort(Lda_4, WHOLE_ARRAY, 0, MODE_DESCEND);
   return (Lda_4[0]);
}

// 1B6135B43061A7487898C0798C833DE1
double f0_5(int Ai_0) {
   double Lda_4[50];
   ArrayInitialize(Lda_4, 10000);
   int Li_8 = 0;
   for (int Li_12 = 0; Li_12 < OrdersTotal(); Li_12++) {
      if (OrderSelect(Li_12, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Ai_0) {
            Gs_380 = OrderComment();
            Lda_4[Li_8] = OrderOpenPrice();
            Li_8++;
         }
      } else return (-1);
   }
   ArraySort(Lda_4, WHOLE_ARRAY, 0, MODE_ASCEND);
   return (Lda_4[0]);
}

// 521001FAFEA5B8728C4CC27D32BB98D6
int f0_9(double Ad_0) {
   int Li_8;
   if (!IsStopped()) {
      if (IsTradeContextBusy()) {
         Sleep(3000);
//???/*empty:31048:(@)*/
      }
      if (!IsTradeAllowed()) return (0);
      if (OrderType() == OP_BUY && Ask > Ad_0) {
         OrderClose(OrderTicket(), OrderLots(), Ask, Gi_300);
         return (1);
      }
      if (OrderType() == OP_SELL && Bid < Ad_0) {
         OrderClose(OrderTicket(), OrderLots(), Bid, Gi_300);
         return (1);
      }
      if (!OrderModify(OrderTicket(), OrderOpenPrice(), 0, NormalizeDouble(Ad_0, Digits), 0, Yellow)) {
         Li_8 = GetLastError();
         Print("!!! Ошибка(", Li_8, "): ", ErrorDescription(Li_8));
         return (0);
      }
   }
   return (1);
}

// EADAFF477C69FB44B773D63FE02BEA8D
int f0_26(int Ai_0, double Ad_4, int Ai_12, int Ai_16, int Ai_20, string As_24, double Ad_32 = 0.0) {
   double Ld_40;
   double Ld_48;
   double Ld_56;
   color Li_68;
   int Li_72;
   int Li_64 = 0;
   int Li_76 = 0;
   Gi_300 = 2.0 * MarketInfo(Symbol(), MODE_SPREAD);
   if (!IsStopped()) {
      if (Li_76 > 5) return (0);
      if (!IsConnected()) {
         Li_76++;
         Print("Связь с сервером отсутствует!");
         Sleep(1000);
      }
      if (IsTradeContextBusy()) {
         Sleep(3000);
//???/*empty:32148:(@)*/
      }
      switch (Ai_0) {
      case OP_BUY:
         Ld_40 = NormalizeDouble(Ask, Digits);
         Ld_48 = f0_14(Ai_12 == 0, 0, NormalizeDouble(Ld_40 + Ai_12 * Point, Digits));
         Ld_56 = f0_14(Ai_16 == 0, 0, NormalizeDouble(Ld_40 - Ai_16 * Point, Digits));
         Li_68 = Blue;
         break;
      case OP_BUYSTOP:
         Ld_40 = NormalizeDouble(Ad_32, Digits);
         Ld_48 = 0;
         Ld_56 = 0;
         Li_68 = Blue;
         break;
      case OP_SELL:
         Ld_40 = NormalizeDouble(Bid, Digits);
         Ld_40 = NormalizeDouble(Bid, Digits);
         Ld_48 = f0_14(Ai_12 == 0, 0, NormalizeDouble(Ld_40 - Ai_12 * Point, Digits));
         Ld_56 = f0_14(Ai_16 == 0, 0, NormalizeDouble(Ld_40 + Ai_16 * Point, Digits));
         Li_68 = Red;
         break;
      case OP_SELLSTOP:
         Ld_40 = NormalizeDouble(Ad_32, Digits);
         Ld_48 = 0;
         Ld_56 = 0;
         Li_68 = Red;
         break;
      default:
         return (-1);
      }
      if (IsTradeAllowed()) {
         Li_64 = OrderSend(Symbol(), Ai_0, Ad_4, Ld_40, Gi_300, Ld_56, Ld_48, As_24, Ai_20, 0, Li_68);
         if (Li_64 < 0) {
            Li_72 = GetLastError();
            if (Li_72 == 4/* SERVER_BUSY */ || Li_72 == 129/* INVALID_PRICE */ || Li_72 == 135/* PRICE_CHANGED */ || Li_72 == 137/* BROKER_BUSY */ || Li_72 == 138/* REQUOTE */ ||
               Li_72 == 146/* TRADE_CONTEXT_BUSY */ || Li_72 == 136/* OFF_QUOTES */) {
               Sleep(3000);
//???/*empty:33796:(@)*/
            }
         }
      }
   }
   return (Li_64);
}

// B0E6010D5C8149E42AF8526F0710FF50
double f0_14(bool Ai_0, double Ad_4, double Ad_12) {
   if (Ai_0) return (Ad_4);
   return (Ad_12);
}

// D83FB971A1B6CC9D34612EED758A4E4E
int f0_19() {
   if (Bars < 10) {
      Print("Недостачно баров в истории!");
      return (0);
   }
   if (Bid == 0.0 || Ask == 0.0) {
      Print(StringConcatenate("Неправильные цены. Ask: ", Ask, " Bid: ", Bid));
      return (0);
   }
   return (1);
}