← К каталогу
Исходный код · ID 336

megadroid v1.2.mq4

Похожие материалы по тегам

ea robofibo source v.11.2.mq4MetaTrader 4 · 1 общих теговᴇɴᴛʀʏ.txtTradingView · 1 общих теговzonestrategy.mqhMetaTrader 5 · 1 общих теговxauusd_simple_strategy7.mq4MetaTrader 4 · 1 общих теговxauusd_grok_presisi_scalper_v1.4 - anti detach.mq5MetaTrader 5 · 1 общих теговxauusd_gold_perfect.mq4MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Получить полный код

Поиск по коду файла

#include <WinUser32.mqh>
#include <stdlib.mqh>

#import "MegaDroid.dll"
   int GetGmtOffset(int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7, double& a8[]);
   void Activate(string a0, int a1, int a2, string a3, int a4);
   int GetState();
   int GetStatus();
   bool IsTradeTime(string a0, int a1, int a2, int a3, int a4);
   bool s1_Buy(double a0, double a1, double a2, double a3, double a4, double a5, double a6, double a7, int a8, int a9);
   bool s1_Sell(double a0, double a1, double a2, double a3, double a4, double a5, double a6, double a7, int a8, int a9);
   bool s2_Buy(double a0, double a1, double a2, double a3, double a4, double a5, int a6, int a7);
   bool s2_Sell(double a0, double a1, double a2, double a3, double a4, double a5, int a6, int a7);
   bool s1_Init(string a0, int& a1[], int& a2[], int& a3[], int& a4[], int& a5[], int& a6[], int& a7[], int& a8[], int& a9[], int& a10[], int& a11[], double& a12[], double& a13[], double& a14[], double& a15[], int& a16[], int& a17[], int& a18[], int& a19[], int& a20[], int& a21[]);
   bool s2_Init(string a0, int& a1[], int& a2[], int& a3[], double& a4[], int& a5[], int& a6[], int& a7[], int& a8[], double& a9[], double& a10[], double& a11[], int& a12[], int& a13[], int& a14[], int& a15[], int& a16[], int& a17[]);
#import

extern string Version = "1.20";
extern string _1 = "System Parameters";
extern bool Stealth = TRUE;
extern bool Aggressive = TRUE;
extern bool NFA = FALSE;
extern double GmtOffset = 0.0;
extern bool AutoLocalGmtOffset = TRUE;
extern bool AutoServerGmtOffset = TRUE;
extern int S1_Reference = 77777773;
extern int S2_Reference = 33333337;
extern string ReceiptCode = "";
extern string _2 = "Comment Position";
extern int TopPadding = 30;
extern int LeftPadding = 20;
extern color TextColor1 = WhiteSmoke;
extern color TextColor2 = LightGray;
extern string _3 = "Strategy Parameters";
extern int Slippage = 3;
extern bool SendEmails = FALSE;
extern string _4 = "Order Management";
extern double LotSize = 0.1;
extern string _5 = "Ratio Order Management";
extern double RiskLevel = 0.1;
extern bool RecoveryMode = TRUE;
bool gi_212 = FALSE;
double gd_216 = 1000.0;
double gd_224 = 0.2;
bool gi_232 = FALSE;
bool gi_236 = TRUE;
bool gi_240 = TRUE;
int gi_244 = 3;
bool gi_248 = TRUE;
int gi_252;
int g_datetime_256;
int gi_260;
double g_hour_264;
int gi_272;
int g_spread_276;
int g_spread_280;
int g_stoplevel_284;
double gd_288;
double gd_296;
double gd_304;
bool gi_312 = FALSE;
int gi_316 = 0;
int gi_320 = 0;
string gs_324;
string gs_332;
string gs_340;
int g_timeframe_348 = PERIOD_M15;
int gi_352 = 10;
int gi_356 = 50;
int gi_360 = 200;
int gi_364 = 20;
int gi_368 = 0;
int gi_372 = 16711680;
int gi_376 = 255;
int g_period_380 = 6;
int g_period_384 = 20;
int g_period_388 = 8;
double gd_392 = 70.0;
double gd_400 = 30.0;
double gd_408 = 64.0;
double gd_416 = 36.0;
bool gi_424 = TRUE;
bool gi_428 = TRUE;
bool gi_432 = TRUE;
int gi_436 = 12;
bool gi_440 = TRUE;
int gi_444 = 20;
bool gi_448 = TRUE;
bool gi_452 = FALSE;
double gd_456 = 1.0;
double gd_464 = 24.0;
bool gi_472 = TRUE;
double gd_476 = 1.0;
double gd_484 = 1.0;
bool gi_492 = FALSE;
int gi_496 = 0;
bool gi_500 = TRUE;
bool gi_504 = TRUE;
int gi_508 = 21;
int gi_512 = 1;
int gi_516 = 21;
int gi_520 = 0;
int g_timeframe_524 = PERIOD_M5;
int gi_528 = 35;
int gi_532 = 60;
int gi_536 = 200;
int gi_540 = 20;
double gd_544 = 1.0;
int gi_552 = 0;
int gi_556 = 16748574;
int gi_560 = 9639167;
int gi_564 = 36;
int g_period_568 = 168;
int g_period_572 = 275;
bool gi_576 = TRUE;
bool gi_580 = FALSE;
bool gi_584 = TRUE;
double gd_588 = 1.0;
double gd_596 = 12.0;
double gd_604 = 24.0;
bool gi_612 = FALSE;
bool gi_616 = FALSE;
int gi_620 = 0;
bool gi_624 = TRUE;
bool gi_628 = TRUE;
int gi_632 = 21;
int gi_636 = 4;
int gi_640 = 21;
int gi_644 = 0;
int gi_648 = 0;
int gi_652 = 0;
int gi_656 = 0;
int gi_660;
int gi_664;
double gd_668 = 0.0;
double gd_676 = 0.0;
bool gi_684 = FALSE;
bool gi_688;
bool gi_692;
int gi_696;
int g_count_700 = 0;
int g_ticket_704 = -2;
int g_ticket_708 = -2;
double g_ord_profit_712 = 0.0;
double g_ord_profit_720 = 0.0;
int g_ticket_728 = -2;
int g_ticket_732 = -2;
double g_ord_profit_736 = 0.0;
double g_ord_profit_744 = 0.0;
int gi_752 = 0;
int gi_756 = 0;
int gi_760 = 0;
int gi_764 = 0;
double g_irsi_768;
double g_irsi_776;
double g_irsi_784;
double g_irsi_792;
double g_icci_800;
double g_icci_808;
double g_icci_816;
double g_ima_840;
bool gi_848 = TRUE;
bool gi_852 = TRUE;
double g_ihigh_856 = 0.0;
double g_ilow_864 = 0.0;
bool gi_872 = FALSE;
int gi_876 = 0;
int gi_880 = 0;
int gi_884 = 0;
int gi_888 = 0;
int gi_892;
int gi_896;
int gi_900 = 0;
int gi_904 = 0;
int gi_908;
int g_datetime_912 = 0;
int g_datetime_916 = 0;
int g_ticket_920 = 0;
int g_datetime_924 = 0;
int g_ticket_928 = 0;
int g_datetime_932 = 0;
bool gi_936 = TRUE;
int g_datetime_940 = 0;
int g_datetime_944 = 0;
int gi_948 = 0;
double g_icci_952;
double g_icci_960;
double g_ihigh_968;
double g_ilow_976;
double g_ihigh_984;
double g_ilow_992;
bool gi_1000 = FALSE;
int gi_1004 = 0;
int gi_1008 = 0;
int gi_1012 = 0;
int gi_1016 = 0;
int gi_1020;
int gi_1024;
int g_ticket_1028 = -1;
int gi_1032;
int gi_1036;
int g_datetime_1040;
int g_datetime_1044;
double g_ord_open_price_1048;
int g_ticket_1056 = -1;
int gi_1060;
int gi_1064;
int g_datetime_1068;
int g_datetime_1072;
double g_ord_open_price_1076;
bool gi_1084 = TRUE;
int g_datetime_1088 = 0;
int g_datetime_1092 = 0;
string gsa_1096[] = {".", "..", "...", "....", "....."};
int gi_unused_1100 = 0;
int gi_unused_1104 = 0;
bool gi_1108 = FALSE;

int S1_CheckSymbol() {
   int lia_0[1];
   int lia_4[1];
   int lia_8[1];
   int lia_12[1];
   int lia_16[1];
   int lia_20[1];
   int lia_24[1];
   int lia_28[1];
   int lia_32[1];
   int lia_36[1];
   int lia_40[1];
   double lda_44[1];
   double lda_48[1];
   double lda_52[1];
   double lda_56[1];
   int lia_60[1];
   int lia_64[1];
   int lia_68[1];
   int lia_72[1];
   int lia_76[1];
   int lia_80[1];
   if (s1_Init(Symbol(), lia_0, lia_4, lia_8, lia_12, lia_16, lia_20, lia_24, lia_28, lia_32, lia_36, lia_40, lda_44, lda_48, lda_52, lda_56, lia_60, lia_64, lia_68, lia_72, lia_76, lia_80)) {
      gi_352 = lia_0[0];
      gi_360 = lia_4[0];
      gi_364 = lia_8[0];
      gi_368 = lia_12[0];
      g_period_380 = lia_16[0];
      g_period_384 = lia_20[0];
      g_period_388 = lia_24[0];
      gd_392 = lia_28[0];
      gd_400 = lia_32[0];
      gd_408 = lia_36[0];
      gd_416 = lia_40[0];
      gd_456 = lda_44[0];
      gd_464 = lda_48[0];
      gd_476 = lda_52[0];
      gd_484 = lda_56[0];
      gi_496 = lia_60[0];
      gi_508 = lia_64[0];
      gi_512 = lia_68[0];
      gi_516 = lia_72[0];
      gi_520 = lia_76[0];
      g_timeframe_348 = lia_80[0];
      return (1);
   }
   return (0);
}

int S2_CheckSymbol() {
   int lia_0[1];
   int lia_4[1];
   int lia_8[1];
   int lia_12[1];
   double lda_16[1];
   int lia_20[1];
   int lia_24[1];
   int lia_28[1];
   double lda_32[1];
   double lda_36[1];
   double lda_40[1];
   int lia_44[1];
   int lia_48[1];
   int lia_52[1];
   int lia_56[1];
   int lia_60[1];
   int lia_64[1];
   if (s2_Init(Symbol(), lia_0, lia_4, lia_8, lda_16, lia_12, lia_20, lia_24, lia_28, lda_32, lda_36, lda_40, lia_44, lia_48, lia_52, lia_56, lia_60, lia_64)) {
      gi_528 = lia_0[0];
      gi_536 = lia_4[0];
      gi_540 = lia_8[0];
      gd_544 = lda_16[0];
      gi_552 = lia_12[0];
      gi_564 = lia_20[0];
      g_period_568 = lia_24[0];
      g_period_572 = lia_28[0];
      gd_588 = lda_32[0];
      gd_596 = lda_36[0];
      gd_604 = lda_40[0];
      gi_620 = lia_44[0];
      gi_632 = lia_48[0];
      gi_636 = lia_52[0];
      gi_640 = lia_56[0];
      gi_644 = lia_60[0];
      g_timeframe_524 = lia_64[0];
      return (1);
   }
   return (0);
}

int init() {
      // код доступен только после оплаты
   }

int deinit() {
   if (IsTesting()) {
      if (!IsVisualMode()) {
         PrintLN("GmtOffset:");
         PrintLN(DoubleToStr(GmtOffset, 1), TextColor2, gi_652, gi_648 - 1, 55);
         PrintSep();
         PrintLN("Digits:");
         PrintLN(Digits, TextColor2, gi_652, gi_648 - 1, 35);
         PrintLN("Spread:");
         PrintLN(StringConcatenate(DoubleToStr(g_spread_276 / gd_288, 1), " (", g_spread_276, " pips)"), TextColor2, gi_652, gi_648 - 1, 40);
         PrintSep();
      }
      return (0);
   }
   switch (UninitializeReason()) {
   case REASON_CHARTCLOSE:
   case REASON_REMOVE:
      Deleteobjects(0, gi_656);
      gi_656 = 0;
      break;
   case REASON_RECOMPILE:
   case REASON_CHARTCHANGE:
   case REASON_PARAMETERS:
   case REASON_ACCOUNT:
      Deleteobjects(1, gi_656);
      gi_656 = 1;
   }
   return (0);
}

int waitForContext() {
   for (int l_count_0 = 0; IsTradeContextBusy() && l_count_0 < 20; l_count_0++) Sleep(15);
   if (l_count_0 >= 20) Print("Trade context is buisy more than ", DoubleToStr(15 * l_count_0 / 1000, 2), " seconds");
   else
      if (l_count_0 > 0) Print("Trade context was buisy ", DoubleToStr(15 * l_count_0 / 1000, 2), " seconds");
   return (l_count_0);
}

int openOrder(int a_cmd_0, double a_lots_4, double a_price_12, double a_price_20, double a_price_28, int a_magic_36, color a_color_40, bool ai_44) {
   int l_error_68;
   double l_price_48 = 0;
   double l_price_56 = 0;
   if (!ai_44) {
      l_price_48 = a_price_20;
      l_price_56 = a_price_28;
   }
   waitForContext();
   int l_ticket_64 = OrderSend(Symbol(), a_cmd_0, a_lots_4, a_price_12, Slippage * gd_288, l_price_56, l_price_48, "", a_magic_36, 0, a_color_40);
   if (l_ticket_64 > 0) {
      if (ai_44) {
         if (OrderSelect(l_ticket_64, SELECT_BY_TICKET)) {
            waitForContext();
            OrderModify(l_ticket_64, OrderOpenPrice(), a_price_28, a_price_20, 0, a_color_40);
         }
      }
      if (SendEmails) SendMail(gs_324, "Open " + OpPrint(a_cmd_0) + ": [" + Symbol() + "] " + NormalizeDouble(a_price_12, Digits));
   } else {
      l_error_68 = GetLastError();
      if (!ai_44) return (openOrder(a_cmd_0, a_lots_4, a_price_12, a_price_20, a_price_28, a_magic_36, a_color_40, 1));
      Print(OpPrint(a_cmd_0) + " operation failed - error(", l_error_68, "): ", ErrorDescription(l_error_68));
   }
   return (l_ticket_64);
}

int closeOrder(int ai_0, color a_color_4) {
   double l_price_8;
   int l_error_20;
   for (int l_count_16 = 0; l_count_16 < 20; l_count_16++) {
      if (waitForContext() > 5) RefreshRates();
      if (ai_0 == 0) l_price_8 = Bid;
      else l_price_8 = Ask;
      if (OrderClose(OrderTicket(), OrderLots(), l_price_8, Slippage * gd_288, a_color_4)) return (-1);
      l_error_20 = GetLastError();
      Print("Order close operation failed - error(", l_error_20, "): ", ErrorDescription(l_error_20));
      RefreshRates();
   }
   Print("Order close operation failed");
   return (OrderTicket());
}

double MMLots(double ad_0, double ad_8, int &ai_16) {
   return (NormalizeLots(ad_0 * ad_8 / MarketInfo(Symbol(), MODE_MARGINREQUIRED) / (AccountLeverage() / 100.0), ai_16));
}

double NormalizeLots(double ad_0, int &ai_8) {
   double l_lotstep_20 = MarketInfo(Symbol(), MODE_LOTSTEP);
   double l_minlot_28 = MarketInfo(Symbol(), MODE_MINLOT);
   double l_maxlot_36 = MarketInfo(Symbol(), MODE_MAXLOT);
   double ld_ret_12 = MathCeil(ad_0 / l_lotstep_20) * l_lotstep_20;
   ai_8 = 0;
   if (ld_ret_12 < l_minlot_28) {
      ld_ret_12 = l_minlot_28;
      ai_8 = -1;
   }
   if (ld_ret_12 > l_maxlot_36) {
      ld_ret_12 = l_maxlot_36;
      ai_8 = 1;
   }
   return (ld_ret_12);
}

void CountBalance(double ad_0) {
   gd_668 += ad_0;
   if (gd_676 < gd_668) gd_676 = gd_668;
}

double RecoveryLot(double ad_0) {
   int li_8;
   if (gd_676 > gd_668 && gi_752 > gi_760 && gi_756 > gi_760) return (NormalizeLots(2.0 * ad_0, li_8));
   gi_760 = MathMax(gi_752, gi_756);
   return (ad_0);
}

int RecoverTrades() {
   int l_count_0 = 0;
   for (int l_pos_4 = OrdersHistoryTotal() - 1; l_pos_4 >= 0; l_pos_4--) {
      if (OrderSelect(l_pos_4, SELECT_BY_POS, MODE_HISTORY)) {
         if (OrderMagicNumber() != S1_Reference && OrderMagicNumber() != S2_Reference) continue;
         CountBalance(OrderProfit());
         l_count_0++;
      }
   }
   return (l_count_0);
}

int Recover(int a_magic_0, int a_cmd_4) {
   for (int l_pos_8 = OrdersTotal() - 1; l_pos_8 >= 0; l_pos_8--) {
      if (OrderSelect(l_pos_8, SELECT_BY_POS)) {
         if (OrderMagicNumber() == a_magic_0) {
            if (OrderSymbol() == Symbol())
               if (OrderType() == a_cmd_4) return (OrderTicket());
         }
      }
   }
   return (-1);
}

void RefreshOrders() {
   g_count_700 = 0;
   for (int l_pos_0 = OrdersTotal() - 1; l_pos_0 >= 0; l_pos_0--) {
      if (OrderSelect(l_pos_0, SELECT_BY_POS)) {
         if (OrderSymbol() == Symbol())
            if (OrderMagicNumber() != S1_Reference && OrderMagicNumber() != S2_Reference) g_count_700++;
      }
   }
}

int FIFOrule() {
   return (g_count_700 <= 0 && g_ticket_704 < 0 && g_ticket_708 < 0 && g_ticket_728 < 0 && g_ticket_732 < 0);
}

int s1_direction() {
   if (g_icci_800 >= 0.0 || g_irsi_768 >= 50.0) g_datetime_916 = g_datetime_256;
   if (g_icci_800 <= 0.0 || g_irsi_768 <= 50.0) g_datetime_912 = g_datetime_256;
   if (g_datetime_916 > 0 && g_datetime_256 - g_datetime_916 > 3600.0 * gd_476) return (2);
   if (g_datetime_912 > 0 && g_datetime_256 - g_datetime_912 > 3600.0 * gd_476) return (3);
   if (g_datetime_916 == 0 || g_datetime_912 == 0) return (0);
   return (1);
}

void s1_dayRange() {
   int l_shift_0;
   if (g_datetime_256 - gi_272 < 3600.0 * gi_436) l_shift_0 = iBarShift(NULL, g_timeframe_348, gi_272 - 86400);
   else l_shift_0 = iBarShift(NULL, g_timeframe_348, gi_272);
   g_ihigh_856 = iHigh(NULL, g_timeframe_348, iHighest(NULL, g_timeframe_348, MODE_HIGH, l_shift_0 - gi_252, gi_252));
   g_ilow_864 = iLow(NULL, g_timeframe_348, iLowest(NULL, g_timeframe_348, MODE_LOW, l_shift_0 - gi_252, gi_252));
}

void s1_setRules() {
   int li_0;
   HideTestIndicators(TRUE);
   g_irsi_768 = iRSI(NULL, g_timeframe_348, g_period_380, PRICE_CLOSE, gi_252);
   g_irsi_776 = iRSI(NULL, g_timeframe_348, g_period_380, PRICE_CLOSE, gi_252 + 1);
   g_irsi_784 = iRSI(NULL, g_timeframe_348, g_period_380, PRICE_CLOSE, gi_252 + 2);
   if (gi_424) g_irsi_792 = iRSI(NULL, PERIOD_M1, g_period_384, PRICE_CLOSE, gi_252);
   g_icci_800 = iCCI(NULL, g_timeframe_348, g_period_388, PRICE_TYPICAL, gi_252);
   g_icci_808 = iCCI(NULL, g_timeframe_348, g_period_388, PRICE_TYPICAL, gi_252 + 1);
   g_icci_816 = iCCI(NULL, g_timeframe_348, g_period_388, PRICE_TYPICAL, gi_252 + 2);
   g_ima_840 = iMA(NULL, g_timeframe_348, g_period_388, 0, MODE_SMA, PRICE_MEDIAN, gi_252);
   if (gi_440) {
      if (g_irsi_768 >= 50 - gi_444 / 2 && g_irsi_768 <= gi_444 / 2 + 50) {
         gi_848 = TRUE;
         gi_852 = TRUE;
      }
   }
   if (gi_432) s1_dayRange();
   if (gi_472) {
      li_0 = gi_900;
      gi_900 = s1_direction();
      if (li_0 != gi_900) {
         gi_904 = li_0;
         if (gi_900 == 1) gi_908 = g_datetime_256 + 3600.0 * gd_484;
      }
   }
   if (gi_496 > 0) {
      if (g_spread_276 > gi_496 * gd_288) {
         if (g_spread_280 < g_spread_276) {
            Print("Strategy1: Safe spread limit exceeded: spread = ", g_spread_276);
            if (gi_500) Print("Strategy1: Using DayDirection filter");
         }
         gi_872 = TRUE;
      } else gi_872 = FALSE;
   }
   HideTestIndicators(FALSE);
   if (gi_872) {
      gi_892 = gi_516;
      gi_896 = gi_520;
      return;
   }
   gi_892 = gi_508;
   gi_896 = gi_512;
}

int s1_openBuyRule() {
   double l_iclose_0;
   double l_iclose_8;
   int l_shift_16;
   int l_shift_20;
   if (!gi_848) return (0);
   if (gi_872 && !gi_500) return (0);
   if (gi_472) {
      if (gi_900 == 2) return (0);
      if (g_datetime_256 <= gi_908)
         if (gi_904 == 2) return (0);
   }
   if (gi_492 || gi_872) {
      if (g_datetime_256 - gi_272 < 43200.0) {
         l_shift_16 = iBarShift(NULL, g_timeframe_348, gi_272 - 86400);
         l_shift_20 = iBarShift(NULL, g_timeframe_348, gi_272);
      } else {
         l_shift_16 = iBarShift(NULL, g_timeframe_348, gi_272);
         l_shift_20 = gi_252;
      }
      l_iclose_8 = iClose(NULL, g_timeframe_348, l_shift_16);
      l_iclose_0 = iClose(NULL, g_timeframe_348, l_shift_20);
      if (l_iclose_0 < l_iclose_8) return (0);
   }
   return (s1_Buy(Ask, g_icci_800, g_irsi_768, g_irsi_792, g_ima_840, gd_400, gd_416, gi_352 * gd_288 * Point, gi_428, gi_424));
}

int s1_openSellRule() {
   double l_iclose_0;
   double l_iclose_8;
   int l_shift_16;
   int l_shift_20;
   if (!gi_852) return (0);
   if (gi_872 && !gi_500) return (0);
   if (gi_472) {
      if (gi_900 == 3) return (0);
      if (g_datetime_256 <= gi_908)
         if (gi_904 == 3) return (0);
   }
   if (gi_492 || gi_872) {
      if (g_datetime_256 - gi_272 < 43200.0) {
         l_shift_16 = iBarShift(NULL, g_timeframe_348, gi_272 - 86400);
         l_shift_20 = iBarShift(NULL, g_timeframe_348, gi_272);
      } else {
         l_shift_16 = iBarShift(NULL, g_timeframe_348, gi_272);
         l_shift_20 = gi_252;
      }
      l_iclose_8 = iClose(NULL, g_timeframe_348, l_shift_16);
      l_iclose_0 = iClose(NULL, g_timeframe_348, l_shift_20);
      if (l_iclose_0 > l_iclose_8) return (0);
   }
   return (s1_Sell(Bid, g_icci_800, g_irsi_768, g_irsi_792, g_ima_840, gd_392, gd_408, gi_352 * gd_288 * Point, gi_428, gi_424));
}

bool s1_closeBuyRule() {
   if (Stealth || OrderTakeProfit() == 0.0) {
      if (gi_352 > 0)
         if (NormalizeDouble(Bid - OrderOpenPrice(), Digits) >= NormalizeDouble(gi_352 * Point * gd_288, Digits)) return (TRUE);
   }
   if (OrderStopLoss() == 0.0) {
      if (gi_880 > 0)
         if (NormalizeDouble(OrderOpenPrice() - Ask, Digits) >= NormalizeDouble(gi_880 * Point * gd_288, Digits)) return (TRUE);
   }
   if (gi_452) {
      if (g_ticket_920 != OrderTicket()) {
         g_datetime_924 = OrderOpenTime();
         g_ticket_920 = OrderTicket();
      }
      if (g_icci_800 >= 0.0 || g_irsi_768 >= 50.0) g_datetime_924 = g_datetime_256;
      if (g_icci_816 < g_icci_808 && g_irsi_784 < g_irsi_776) g_datetime_924 = iTime(NULL, g_timeframe_348, gi_252);
      if (g_datetime_256 - g_datetime_924 > 3600.0 * gd_456 && OrderProfit() < 0.0) return (TRUE);
   }
   if (gi_448) {
      if (g_datetime_256 - OrderOpenTime() > 3600.0 * gd_456) {
         if (g_icci_800 > 0.0 && g_irsi_768 > 50.0 && OrderProfit() > 0.0) return (TRUE);
         if (g_datetime_256 - OrderOpenTime() > 3600.0 * gd_464) return (TRUE);
      }
   }
   return (FALSE);
}

bool s1_closeSellRule() {
   if (Stealth || OrderTakeProfit() == 0.0) {
      if (gi_352 > 0)
         if (NormalizeDouble(OrderOpenPrice() - Ask, Digits) >= NormalizeDouble(gi_352 * Point * gd_288, Digits)) return (TRUE);
   }
   if (OrderStopLoss() == 0.0) {
      if (gi_888 > 0)
         if (NormalizeDouble(Bid - OrderOpenPrice(), Digits) >= NormalizeDouble(gi_888 * Point * gd_288, Digits)) return (TRUE);
   }
   if (gi_452) {
      if (g_ticket_928 != OrderTicket()) {
         g_datetime_932 = OrderOpenTime();
         g_ticket_928 = OrderTicket();
      }
      if (g_icci_800 <= 0.0 || g_irsi_768 <= 50.0) g_datetime_932 = g_datetime_256;
      if (g_icci_816 > g_icci_808 && g_irsi_784 > g_irsi_776) g_datetime_932 = iTime(NULL, g_timeframe_348, gi_252);
      if (g_datetime_256 - g_datetime_932 > 3600.0 * gd_456 && OrderProfit() < 0.0) return (TRUE);
   }
   if (gi_448) {
      if (g_datetime_256 - OrderOpenTime() > 3600.0 * gd_456) {
         if (g_icci_800 < 0.0 && g_irsi_768 < 50.0 && OrderProfit() > 0.0) return (TRUE);
         if (g_datetime_256 - OrderOpenTime() > 3600.0 * gd_464) return (TRUE);
      }
   }
   return (FALSE);
}

int s1_openBuy() {
   double ld_0 = 0;
   double ld_8 = 0;
   if (g_ilow_864 > 0.0) {
      gi_880 = (Bid - g_ilow_864 + Point * gd_288) / Point;
      if (gi_360 > 0 && gi_880 > gi_360 * gd_288) gi_880 = gi_360 * gd_288;
      if (gi_880 < gi_364 * gd_288) gi_880 = gi_364 * gd_288;
   } else gi_880 = gi_364 * gd_288;
   if (gi_880 < g_stoplevel_284) gi_880 = g_stoplevel_284;
   if (Stealth) gi_876 = gi_356 * gd_288;
   else gi_876 = gi_352 * gd_288;
   if (gi_876 < g_stoplevel_284) gi_876 = g_stoplevel_284;
   ld_8 = NormalizeDouble(Bid - gi_880 * Point, Digits);
   ld_0 = NormalizeDouble(Ask + gi_876 * Point, Digits);
   return (openOrder(OP_BUY, gd_296, Ask, ld_0, ld_8, S1_Reference, gi_372, 0));
}

int s1_openSell() {
   double ld_0 = 0;
   double ld_8 = 0;
   if (g_ihigh_856 > 0.0) {
      gi_888 = (g_ihigh_856 - Ask + Point * gd_288) / Point;
      if (gi_360 > 0 && gi_888 > gi_360 * gd_288) gi_888 = gi_360 * gd_288;
      if (gi_888 < gi_364 * gd_288) gi_888 = gi_364 * gd_288;
   } else gi_888 = gi_364 * gd_288;
   if (gi_888 < g_stoplevel_284) gi_888 = g_stoplevel_284;
   if (Stealth) gi_884 = gi_356 * gd_288;
   else gi_884 = gi_352 * gd_288;
   if (gi_884 < g_stoplevel_284) gi_884 = g_stoplevel_284;
   ld_8 = NormalizeDouble(Ask + gi_888 * Point, Digits);
   ld_0 = NormalizeDouble(Bid - gi_884 * Point, Digits);
   return (openOrder(OP_SELL, gd_296, Bid, ld_0, ld_8, S1_Reference, gi_376, 0));
}

int s1_buyControl() {
   int li_ret_16;
   double l_ord_takeprofit_0 = OrderTakeProfit();
   double l_ord_stoploss_8 = OrderStopLoss();
   if (l_ord_takeprofit_0 == 0.0 || l_ord_stoploss_8 == 0.0) {
      if (l_ord_takeprofit_0 == 0.0) {
         if (gi_876 < g_stoplevel_284) gi_876 = g_stoplevel_284;
         l_ord_takeprofit_0 = NormalizeDouble(Ask + gi_876 * Point, Digits);
      }
      if (l_ord_stoploss_8 == 0.0) {
         if (gi_880 < g_stoplevel_284) gi_880 = g_stoplevel_284;
         l_ord_stoploss_8 = NormalizeDouble(Bid - gi_880 * Point, Digits);
      }
      waitForContext();
      OrderModify(OrderTicket(), OrderOpenPrice(), l_ord_stoploss_8, l_ord_takeprofit_0, 0, Green);
   }
   if (s1_closeBuyRule()) {
      li_ret_16 = closeOrder(0, Violet);
      if (li_ret_16 < 0) return (li_ret_16);
   }
   if (gi_368 > 0) {
      if (Bid - OrderOpenPrice() > Point * gd_288 * gi_368) {
         if (OrderStopLoss() < Bid - Point * gd_288 * gi_368 || OrderStopLoss() == 0.0) {
            waitForContext();
            OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid - Point * gd_288 * gi_368, Digits), OrderTakeProfit(), 0, Green);
         }
      }
   }
   return (OrderTicket());
}

int s1_sellControl() {
   int li_ret_16;
   double l_ord_takeprofit_0 = OrderTakeProfit();
   double l_ord_stoploss_8 = OrderStopLoss();
   if (l_ord_takeprofit_0 == 0.0 || l_ord_stoploss_8 == 0.0) {
      if (l_ord_takeprofit_0 == 0.0) {
         if (gi_884 < g_stoplevel_284) gi_884 = g_stoplevel_284;
         l_ord_takeprofit_0 = NormalizeDouble(Bid - gi_884 * Point, Digits);
      }
      if (l_ord_stoploss_8 == 0.0) {
         if (gi_888 < g_stoplevel_284) gi_888 = g_stoplevel_284;
         l_ord_stopl

Показано первые 50% кода (символов: 37538)

Что вы получите после оплаты

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода: 3 754 ₽