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

north east way

north east way1.306@lifeindreamsworld.mq4

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

north east way1.306_.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

Краткий обзор

О программе

Этот советник для MetaTrader 4 (MQL4) предназначен для торговли на нетрендовых коррелирующих валютных парах, используя возврат к средней цене. Советник работает только на таймфрейме M15 и требует ECN-счета с минимальным спредом и комиссиями. Он открывает множество мелких сделок одновременно, что позволяет диверсифицировать входы и выходы с рынка. Входные параметры позволяют настроить базовые настройки, управление капиталом, усреднение и уровни сетки. Советник также поддерживает мультивалютный режим, виртуальный тейк-профит и аварийное закрытие при безубытке. В коде присутствуют функции для работы с торговыми операциями, управления рисками и отображения информации на графике.

Настройки программы

НастройкаОписание
_base_ Разделитель группы базовых настроек.
MultiCurrency Режим мультивалютной торговли с одного графика. Укажите список символов через запятую.
comment Префикс для комментария к ордерам.
FirstPositionp Определяет тип первой позиции: Long, Short, Long_and_Short или NotOpen.
fastClose Включает аварийное закрытие всех позиций при достижении безубытка.
holidays Продолжительность выходных после Нового года (дни).
useVirtualTP Использовать виртуальный тейк-профит вместо реального.
_mm_ Разделитель группы настроек управления капиталом.
MaxOtherMagics Максимальное количество других магических номеров, при превышении которого сделки виртуализируются.
MaxOtherSymbols Максимальное количество других символов, при превышении которого сделки виртуализируются.
BaseForLotCalc Выбор базы для расчета автоматического лота: баланс или эквити.
virtBalance Дополнительные средства в валюте счета, учитываемые при расчете лота.
fix_balance Использовать фиксированный баланс в валюте счета для расчета лота.
USD_for_001 Параметр для автоматического расчета лота: агрессивный=1000, консервативный=5000.
Lots Фиксированный лот, если автоматическое управление капиталом отключено (AutoMM=0).
_aver_ Разделитель группы настроек усреднения.
UseUnloss Включает режим восстановления (усреднения) для выхода из убыточных позиций.
LotsMartinp Коэффициент умножения лота для мартингейла.
_grid_ Разделитель группы настроек уровней сетки.
FirstNumberp Номер первого реального уровня сетки, с которого начинаются реальные сделки (n>=0).
Получить полный код

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

#property version    "1.306"
#property strict
#property description  "Advisor trade the average price return on non-trending pairs correlated with each other.\nUse ECN accounts with a minimum spread and commissions.\nWhen EA trades, many small transactions are simultaneously opened on the account.\nThis allows you to diversify trading entrances and exits from the market."

enum TypeOfSets      {Multi_Sets_123_sbig_15adv = 7,Multi_Sets_123_small_3adv = 6,Multi_Sets_123_big_9adv = 5,Multi_Set_3_3advisors = 4,Multi_Set_2_3advisors = 3,Multi_Set_1_3advisors = 2,Custom = 1  };
enum NY_Weekends      {days_0 = 2,days_7 = 1,days_14 = 0  };
enum FirstPositiontype      {NotOpen = 4,Short = 3,Long = 2,Long_and_Short = 1  };
enum TypeBFLC      {balance = 1,equity = 0  };
enum typeord      {all = -1,sell_stop = 5,buy_stop = 4,sell_limit = 3,buy_limit = 2,sell = 1,buy = 0  };

struct _sets
  {
   string            st_1;
   int               in_2;
   double            do_3;
   double            do_4;
   double            do_5;
   double            do_6;
   double            do_7;
   double            do_8;
   void              _sets_8();
   void              _sets_9();
   void              _sets_10();
   void              _sets_11();
  };

extern string _base_="=========Basic settings========="  ;
extern string MultiCurrency=""  ;   //OneChartSetup multi currency mode.
extern string comment="new"  ;   //Prefix for comment
extern  FirstPositiontype  FirstPositionp=1  ;    //First Position
extern bool fastClose=false ;    //Emergency closing at breakeven
extern int   nmbrThisServer=1  ;    //For magic: 0 to 99
extern  NY_Weekends  holidays=0  ;    //Duration of the weekend after the New Year
extern bool useVirtualTP=false ;    //Using a virtual take-profit?
extern string _mm_="=========Money Management Settings========="  ;
extern int   MaxOtherMagics=0  ;    //Number of magics no more:
extern int   MaxOtherSymbols=0  ;    //Number of symbols no more:
extern  TypeBFLC  BaseForLotCalc=0  ;    //For autolot use
extern double virtBalance=0  ;    //Additional funds in account currency
extern double fix_balance=0  ;    //Or use fix balance in account currency
extern double USD_for_001=0  ;    //AutoMM. Aggressive=1000, Conservative=5000.
extern double Lots=0.01  ;    //Fix lot if AutoMM=0
extern string _aver_="=========Averaging Settings========="  ;
extern bool UseUnloss=true  ;    //Recovery Mode
extern double LotsMartinp=2.5  ;    //Martin ratio
extern string _grid_="=========Grid Level Settings========="  ;
extern int   FirstNumberp=3  ;    //First real deal from this level n>=0
string    global_1_st = "1.306";
_sets     global_2_a_160_ko[];
int       global_3_in = 7;
string    global_4_st = "";
int       global_5_in = 15;
bool      global_6_bo = true;
int       global_7_in = 0;
int       global_8_in = 1;
int       global_9_in = -858993459;
int       global_10_in = 1072745676;
int       global_11_in = 1717986918;
short     global_12_sh = 1072719462;
string    global_13_st = "=========Execution Settings=========";
int       global_14_in = 0;
int       global_15_in = 0;
bool      global_16_bo = true;
double    global_17_do = 0.0;
int       global_18_in = 0;
int       global_19_in = 400;
int       global_20_in = 800;
double    global_21_do = 1.4;
int       global_22_in = 14;
double    global_23_do = 0.0143;
bool      global_24_bo = true;
int       global_25_in = 0;
int       global_26_in = 0;
int       global_27_in = 0;
double    global_28_do = 0.7;
double    global_29_do = 0.9;
int       global_30_in = 70;
double    global_31_do = 1.5;
double    global_32_do = 0.9;
double    global_33_do = 0.0;
double    global_34_do = 0.0;
double    global_35_do = 1.0;
double    global_36_do = 1.0;
double    global_37_do = 100.0;
string    global_38_st = "Настройки ограничения лота";
bool      global_39_bo = true;
double    global_40_do = 100.0;
bool      global_41_bo = true;
double    global_42_do = 0.0;
int       global_43_in = 70;
int       global_44_in = 50;
int       global_45_in = 6;
string    global_46_st = "=========Tester Settings=========";
bool      global_47_bo = false;
bool      global_48_bo = false;
bool      global_49_bo = false;
string    global_50_st = "";
int       global_51_in = 0;
int       global_52_in = 0;
double    global_53_do = 0.0;
int       global_54_in = 0;
double    global_55_do = 0.0;
double    global_56_do = 0.0;
double    global_57_do = 0.0;
double    global_58_do = 0.0;
int       global_59_in = 0;
int       global_60_in = 0;
int       global_61_in = 0;
int       global_62_in = 0;
int       global_63_in = 0;
int       global_64_in = 0;
int       global_65_in = 0;
int       global_66_in = 0;
int       global_67_in = 0;
int       global_68_in = 0;
double    global_69_do = 0.0;
int       global_70_in = 0;
int       global_71_in = 0;
double    global_72_in = 0;
int       global_73_in = 0;
int       global_74_in = 0;
int       global_75_in = 0;
int       global_76_in = 0;
bool      global_77_bo = false;
int       global_78_in_si100si15[100][15];
int       global_79_in = 0;
int       global_80_in = 0;
int       global_81_in = 0;
int       global_82_in = 0;
int       global_83_in = 0;
int       global_84_in = 0;
double    global_85_do_si7si10000[7][10000];
string    global_86_st_si40000[40000]= {};
int       global_87_in_si40000[40000];
int       global_88_in = 0;
int       global_89_in = 0;
int       global_90_in = 0;
double    global_91_do = 0.0;
double    global_92_do = 0.0;
string    global_93_st;
int       global_94_in = 0;
int r1;
int       global_95_in = 0;
int       global_96_in = 0;
int       global_97_in = 0;
int       global_98_in = 1;
string    global_99_st_si1[1]= {};
double    global_100_do_si1[1];
bool      global_101_bo = true;
int       global_102_in = 0;
int       global_103_in = 0;
bool      global_104_bo = false;
bool      global_105_bo = false;
int       global_106_in = 0;
int       global_107_in = 0;
int       global_108_in = 0;
int       global_109_in = 0;
string    global_110_st;
string    global_111_st;
string    global_112_st = "";
string    global_113_st = "";
int       global_114_in = 2263842;
int       global_115_in = 0;
int       global_116_in = 0;
string    global_117_st = "no_drawdown";
int       global_118_in = 0;
int       global_119_in = 0;
string    global_120_st = "";
bool      global_121_bo = false;
double    global_122_do_si6si5si2[6][5][2];
bool      global_123_bo = true;
string    global_124_st_ko[];
double    global_125_do = 0.0;
double    global_126_do = 0.0;
double    global_127_do = 0.0;
double    global_128_do = 0.0;
double    global_129_do = 0.0;
double    global_130_do = 0.0;
double    global_131_do_ko[];

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

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

void OnTimer()
  {
   if(IsTesting())
      return;
   fun_27();
  }

double OnTester()
  {
   ArrayResize(global_131_do_ko,global_89_in - 1,0);
   for(int local_2_in = 1 ; local_2_in < global_89_in ; local_2_in ++)
     {
      global_131_do_ko[local_2_in - 1] = global_85_do_si7si10000[3][local_2_in] / global_85_do_si7si10000[3][local_2_in - 1] - 1.0;
     }
   ArraySetAsSeries(global_131_do_ko,true);
   double local_3_do = iMAOnArray(global_131_do_ko,0,global_89_in - 1,0,0,0) ;
   double local_4_do = iStdDevOnArray(global_131_do_ko,0,global_89_in - 1,0,0,0) ;
   if(local_4_do!=0.0)
     {
      return(local_3_do / local_4_do);
     }
   return(0.0);
  }

int deinit()
  {
   if(IsTesting() && global_47_bo)
     {
      fun_22();
     }
   if(IsTesting() && global_48_bo)
     {
      fun_21();
     }
   for(int local_2_in = 0 ; local_2_in < global_98_in ; local_2_in ++)
     {
      global_50_st = global_99_st_si1[local_2_in] ;
      for(int local_3_in = 1 ; local_3_in <= global_8_in ; local_3_in ++)
        {
         global_93_st = IntegerToString(local_3_in,2,48) ;
         global_26_in = StringToInteger((StringLen(global_50_st)  != 6)?"99":fun_20(StringSubstr(global_50_st,0,3)) + fun_20(StringSubstr(global_50_st,3,3)) + global_93_st) ;
         if(IsTesting())
           {
            GlobalVariableDel(string(IsTesting()) + "NUMBER" + global_50_st + string(global_26_in));
            GlobalVariableDel(string(IsTesting()) + "iBands_period" + global_50_st + string(global_26_in));
            GlobalVariableDel(string(IsTesting()) + "Distance_Price" + global_50_st + string(global_26_in));
            GlobalVariableDel(string(IsTesting()) + global_50_st + string(global_26_in) + "peak");
            GlobalVariableDel(string(IsTesting()) + "Magic" + global_50_st + string(global_26_in));
            GlobalVariableDel(string(IsTesting()) + global_50_st + string(global_26_in) + "tp");
            GlobalVariableDel(string(IsTesting()) + global_50_st + "0" + string(global_26_in));
            GlobalVariableDel(string(IsTesting()) + global_50_st + "1" + string(global_26_in));
           }
        }
     }
   return(0);
  }

int fun_12()
  {

   int       local_2_in = 0;

   global_129_do = MarketInfo(global_50_st,13) ;
   global_125_do = MarketInfo(global_50_st,13) * MarketInfo(global_50_st,11) ;
   global_126_do = MarketInfo(global_50_st,10) ;
   global_127_do = MarketInfo(global_50_st,9) ;
   global_128_do = MarketInfo(global_50_st,11) ;
   global_130_do = 0.0 ;
   if(iClose(global_50_st,0,1)>0.0)
     {
      global_130_do = (MathAbs(global_127_do / iClose(global_50_st,0,1) - 1.0)) * 10000.0 ;
     }
   if(global_127_do>global_55_do)
     {
      ObjectDelete(0,"DD");
      if((FirstPositionp == 1 || FirstPositionp == 3))
        {
         local_2_in = 2 ;
         global_53_do = 0.00001 / global_128_do * MathPow(global_31_do,MathLog(global_18_in / 100.0) / 0.6931471805599) * global_30_in / MathPow(global_31_do,2.0) * global_127_do + global_28_do * MathPow(global_29_do,global_14_in) * (global_127_do - global_56_do) / global_128_do ;
        }
     }
   if(global_126_do<global_57_do)
     {
      ObjectDelete(0,"DD");
      if((FirstPositionp == 1 || FirstPositionp == 2))
        {
         local_2_in = 1 ;
         global_53_do = 0.00001 / global_128_do * MathPow(global_31_do,MathLog(global_18_in / 100.0) / 0.6931471805599) * global_30_in / MathPow(global_31_do,2.0) * global_127_do + global_28_do * MathPow(global_29_do,global_14_in) * (global_56_do - global_127_do) / global_128_do ;
        }
     }
   return(local_2_in);
  }

void fun_13()
  {

   global_58_do = iStdDev(global_50_st,0,global_18_in,1,3,0,-1) * global_21_do ;
   if(global_24_bo == true)
     {
      double local_1_do = funs11(global_14_in, global_18_in) ;

      if(local_1_do>0.0)
        {
         global_58_do = MathMax(global_58_do,local_1_do) ;
        }
     }
   global_56_do = iMA(global_50_st,0,global_18_in,1,3,0,-1) ;

   global_55_do = global_56_do + global_58_do ;
   global_57_do = global_56_do - global_58_do ;
   global_52_in = global_27_in ;
  }

void fun_14(double para_0_do,double para_1_do,double para_2_do,datetime para_3_roomda)
  {
   bool      local_1_bo = false;
   double    local_2_do = 0.0;
   double    local_3_do = 0.0;
   double    local_4_do = 0.0;
   double    local_5_do = 0.0;
   double    local_6_do = 0.0;

   int local_7_in = MarketInfo(OrderSymbol(),12) ;
   int local_8_in = 0 ;
   int local_9_in = 0 ;
   string local_10_st = " Автор функции для:" ;
   if(para_0_do<=0.0)
     {
      para_0_do = OrderOpenPrice() ;
     }
   if(para_1_do<0.0)
     {
      para_1_do = OrderStopLoss() ;
     }
   if(para_2_do<0.0)
     {
      para_2_do = OrderTakeProfit() ;
     }
   para_0_do = NormalizeDouble(para_0_do,local_7_in) ;
   para_1_do = NormalizeDouble(para_1_do,local_7_in) ;
   para_2_do = NormalizeDouble(para_2_do,local_7_in) ;
   local_2_do = NormalizeDouble(OrderOpenPrice(),local_7_in) ;
   local_5_do = NormalizeDouble(OrderStopLoss(),local_7_in) ;
   local_6_do = NormalizeDouble(OrderTakeProfit(),local_7_in) ;
   if((!(para_0_do!=local_2_do) && !(para_1_do!=local_5_do) && !(para_2_do!=local_6_do)))
      return;
   for(local_9_in = 1 ; local_9_in <= 5 ; local_9_in ++)
     {
      if((!(IsTesting()) && (!(IsExpertEnabled()) || IsStopped() != 0)))
         return;
      RefreshRates();
      local_1_bo = OrderModify(OrderTicket(),para_0_do,para_1_do,para_2_do,para_3_roomda,-1) ;
      if(local_1_bo)
         return;
      local_8_in = GetLastError() ;
      local_3_do = MarketInfo(OrderSymbol(),10) ;
      local_4_do = MarketInfo(OrderSymbol(),9) ;
      PrintFormat("Error(" + string(local_8_in) + ") modifying order: " + fun_18(local_8_in) + ", try " + string(local_9_in));
      PrintFormat("Ask=" + string(local_3_do) + "  Bid=" + string(local_4_do) + "  sy=" + OrderSymbol() + "  op=" + string(OrderType()) + "  pp=" + string(para_0_do) + "  sl=" + string(para_1_do) + "  tp=" + string(para_2_do));
      do
        {
         if((local_8_in != 146 || !(IsTradeContextBusy())))
            continue;
         Sleep(500);
        }
      while(IsTradeContextBusy());

     }
  }

int fun_15(string para_0_st,int para_1_in,double para_2_do,double para_3_do,double para_4_do,int para_5_in,string para_6_st,double para_7_do)
  {
   int       local_1_in;
   color     local_2_co = 0;
   long      local_3_lo = 0;
   double    local_4_do = 0.0;
   double    local_5_do = 0.0;
   double    local_6_do = 0.0;
   double    local_7_do = 0.0;
   int       local_8_in = 0;
   int       local_9_in = 0;
   int       local_10_in = 0;
   int       local_11_in = 0;
   string    local_12_st;
   string    local_13_st;
   double    local_14_do;
   double    local_15_do;
   string    local_16_st;
   MqlDateTime local_17_a_129;
   MqlDateTime local_18_a_129;

   string     tmp_st_1;
   bool       tmp_bo_2;
   string     tmp_st_3;
   bool       tmp_bo_4;
   bool       tmp_bo_5;
   string     tmp_st_6;
   bool       tmp_bo_7;
   bool       tmp_bo_8;
   string     tmp_st_9;
   bool       tmp_bo_10;
   bool       tmp_bo_11;
   bool       tmp_bo_12;
   bool       tmp_bo_13;
   double     tmp_do_14;
   bool       tmp_bo_15;
   bool       tmp_bo_16;
   int        tmp_in_17;
   int        tmp_in_18;
   string     tmp_st_19;
   int        tmp_in_20;
   int        tmp_in_21;
   string     tmp_st_22;
   int        tmp_in_23;
   bool       tmp_bo_24;

   local_12_st = "" ;
   if((para_0_st == "" || para_0_st == "0"))
     {
      para_0_st = global_50_st ;
     }
   if(para_1_in == 0)
     {
      local_2_co = 32768 ;
     }
   else
     {
      local_2_co = 255 ;
     }
   local_13_st = " Автор функции: " ;
   local_14_do = para_2_do ;
   local_15_do = 0.0 ;
   if(AccountFreeMarginCheck(para_0_st,para_1_in,para_2_do)<0.0)
     {
      tmp_st_1 = (para_1_in == 0) ?"Buy":"Sell" ;
      Print("Not enough money for ",tmp_st_1," ",para_2_do," ",para_0_st," Error code=",GetLastError());
      tmp_bo_2 = false;
     }
   else
     {
      tmp_bo_2 = true;
     }
   if(!(tmp_bo_2))
     {
      Sleep(1000);
      if(AccountFreeMarginCheck(para_0_st,para_1_in,para_2_do)<0.0)
        {
         tmp_st_3 = (para_1_in == 0) ?"Buy":"Sell" ;
         Print("Not enough money for ",tmp_st_3," ",para_2_do," ",para_0_st," Error code=",GetLastError());
         tmp_bo_4 = false;
        }
      else
        {
         tmp_bo_4 = true;
        }
      if(!(tmp_bo_4))
        {
         return(-1);
        }
     }
   if(AccountInfoInteger(ACCOUNT_LIMIT_ORDERS) == 0)
     {
      tmp_bo_5 = true;
     }
   else
     {
      tmp_bo_5 = OrdersTotal()<AccountInfoInteger(ACCOUNT_LIMIT_ORDERS);
     }
   if(!(tmp_bo_5))
     {
      PrintFormat("Amount of open and pending orders has reached the limit.");
      return(-1);
     }
   if((MQLInfoString(MQL_PROGRAM_NAME) == "North East Way EA" || MQLInfoString(MQL_PROGRAM_NAME) == "NorthEastWay_v" + global_1_st || MQLInfoString(MQL_PROGRAM_NAME) == "NorthEastWay" || MQLInfoString(MQL_PROGRAM_NAME) == "NorthEastWay EA crypto"))
     {
      tmp_bo_7 = true;
     }
   else
     {
      tmp_bo_7 = false;
     }

   TimeToStruct(iTime(NULL,0,0),local_17_a_129);
   if(((local_17_a_129.year >  2021 && local_17_a_129.mon > 6) || local_17_a_129.year >  2022))
     {
      if((TerminalInfoInteger(23) != 0 || TerminalInfoInteger(38) != 0))
        {
         tmp_bo_8 = true;
        }
      else
        {
         tmp_bo_8 = false;
        }
      if(!(tmp_bo_8))
        {
         if(MQLInfoString(MQL_PROGRAM_NAME) == "NorthEastWay")
           {
            tmp_bo_10 = true;
           }
         else
           {
            tmp_bo_10 = false;
           }
         if(!(tmp_bo_10))
           {
            tmp_bo_11 = false;
           }
        }
     }
   else
     {
      tmp_bo_11 = true;
     }
   if((!(tmp_bo_7) || !(tmp_bo_11)) && !(IsTesting()) && AccountInfoInteger(ACCOUNT_TRADE_MODE) == 2 && para_2_do>0.1 && FirstNumberp + 1 <= global_14_in + 1)
     {
      return(1);
     }
   TimeToStruct(iTime(NULL,0,0),local_18_a_129);
   if(((local_18_a_129.year >  2021 && local_18_a_129.mon > 12) || local_18_a_129.year >  2022))
     {
      tmp_bo_12 = false;
     }
   else
     {
      tmp_bo_12 = true;
     }
   if(!(tmp_bo_12) && !(IsTesting()) && para_2_do>0.1 && FirstNumberp <= global_14_in + 1)
     {
      return(1);
     }
   global_40_do = SymbolInfoDouble(para_0_st,35) ;
   while(local_15_do!=para_2_do)
     {
      if(para_2_do>global_40_do && global_39_bo)
        {
         local_14_do = MathMin(para_2_do - local_15_do,global_40_do) ;
         if(local_14_do>global_40_do)
           {
            local_14_do = global_40_do ;
           }
        }
      if(local_14_do<SymbolInfoDouble(global_50_st,34))
        {
         local_16_st = StringFormat("Volume is less than the minimum SYMBOL_VOLUME_MIN=%.2f",SymbolInfoDouble(global_50_st,34));
         tmp_bo_13 = false;
        }
      else
        {
         if(local_14_do>SymbolInfoDouble(global_50_st,35))
           {
            local_16_st = StringFormat("Volume is greater than the maximum allowed SYMBOL_VOLUME_MAX=%.2f",SymbolInfoDouble(global_50_st,35));
            tmp_bo_13 = false;
           }
         else
           {
            if(MathAbs(int(MathRound(local_14_do / SymbolInfoDouble(global_50_st,36))) * SymbolInfoDouble(global_50_st,36) - local_14_do)>0.0000001)
              {
               local_16_st = StringFormat("Volume is not a multiple of the minimum gradation SYMBOL_VOLUME_STEP=%.2f, nearest correct volume %.2f",SymbolInfoDouble(global_50_st,36),int(MathRound(local_14_do / SymbolInfoDouble(global_50_st,36))) * SymbolInfoDouble(global_50_st,36));
               tmp_bo_13 = false;
              }
            else
              {
               local_16_st = "Correct volume";
               tmp_bo_13 = true;
              }
           }
        }
      if(!(tmp_bo_13))
        {
         PrintFormat(local_16_st);
         return(-1);
        }
      for(local_10_in = 1 ; local_10_in <= 5 ; local_10_in ++)
        {
         if((!(IsTesting()) && (!(IsExpertEnabled()) || IsStopped() != 0)))
            break;

         while(!(IsTradeAllowed()))
           {
            if(IsTesting() || IsOptimization())
               continue;
            Sleep(5000);

           }
         RefreshRates();
         local_8_in = MarketInfo(para_0_st,12) ;
         local_5_do = MarketInfo(para_0_st,10) ;
         local_6_do = MarketInfo(para_0_st,9) ;
         local_7_do = MarketInfo(para_0_st,13) * MarketInfo(para_0_st,11) / local_6_do * 10000.0 ;
         if(para_1_in == 0)
           {
            local_4_do = local_5_do ;
           }
         else
           {
            local_4_do = local_6_do ;
           }
         local_4_do = NormalizeDouble(local_4_do,local_8_in) ;
         local_3_lo = TimeCurrent() ;

         if((para_1_in==0 && local_5_do<=para_7_do) && (para_1_in==1 && local_6_do>=para_7_do) && (para_7_do==0.0))

           {
            Print("Price does not match the distance, try ",local_10_in);
            Print("Ask=",local_5_do," Bid=",local_6_do," sy=",para_0_st," lot=",local_14_do," op=",para_1_in," pp=",local_4_do," sl=",para_3_do," tp=",para_4_do," mn=",para_5_in," price_dist=",para_7_do);
            Sleep(7700);
            continue;
           }
         if(global_17_do>0.0 && local_7_do>global_17_do)
           {
            Print("The current spread is greater than the maximum, try ",local_10_in);
            Print("Ask=",local_5_do," Bid=",local_6_do," sy=",para_0_st," lot=",local_14_do," op=",para_1_in," pp=",local_4_do," sl=",para_3_do," tp=",para_4_do," mn=",para_5_in," price_dist=",para_7_do," max_spread=",global_17_do," curr_spread=",local_7_do);
            Sleep(7700);
            continue;
           }
         if(!(global_16_bo))
           {
            local_11_in = OrderSend(para_0_st,para_1_in,local_14_do,local_4_do,global_15_in,para_3_do,para_4_do,comment + "_" + para_6_st,para_5_in,0,local_2_co) ;
           }
         if(global_16_bo)
           {
            local_11_in = OrderSend(para_0_st,para_1_in,local_14_do,local_4_do,global_15_in,0.0,0.0,comment + "_" + para_6_st,para_5_in,0,local_2_co) ;
            tmp_in_17 = -1;
            tmp_in_18 = -1;
            tmp_st_19 = "";
            tmp_in_20 = local_11_in;
            tmp_in_21 = OrdersTotal();
            tmp_bo_24 = false;
            for(tmp_in_23 = 0 ; tmp_in_23 < tmp_in_21 ; tmp_in_23=tmp_in_23 + 1)
              {
               if(!(OrderSelect(tmp_in_23,0,0)))
                  continue;

               if((OrderSymbol() != tmp_st_19 && tmp_st_19 != ""))
                  continue;

               if((tmp_in_18 >= 0 && OrderType() != tmp_in_18))
                  continue;

               if((tmp_in_17 >= 0 && OrderMagicNumber() != tmp_in_17) || OrderTicket() != tmp_in_20)
                  continue;
               tmp_bo_24 = true;
               break;
              }
            if(tmp_bo_24)
              {
               fun_14(-1.0,para_3_do,para_4_do,0);
              }
           }
         if(local_11_in >  0)
           {
            if(IsTesting())
               break;
            WindowScreenShot(WindowExpertName() + "\\" + string(para_1_in) + WindowExpertName() + global_50_st + string(Period()) + TimeCurrent() + "_.gif",1024,768,-1,-1,-1);
            break;
           }
         local_9_in = GetLastError() ;
         Print("Error(",local_9_in,") opening position: ",fun_18(local_9_in),", try ",local_10_in);
         Print("Ask=",local_5_do," Bid=",local_6_do," sy=",para_0_st," lot=",local_14_do," op=",para_1_in," pp=",local_4_do," sl=",para_3_do," tp=",para_4_do," mn=",para_5_in);
         if(local_5_do==0.0 && local_6_do==0.0)
           {
            Print("Проверьте в Обзоре рынка наличие символа " + para_0_st);
           }
         Print("Ошибка " + string(local_9_in) + " Описание " + fun_18(local_9_in));
         if(local_9_in == 2 || local_9_in == 64 || local_9_in == 65 || local_9_in == 133)
            break;
         if((local_9_in == 128 || local_9_in == 142 || local_9_in == 143))
           {
            Sleep(66666);
           }
         if(local_5_do==0.0 && local_6_do==0.0)
           {
            Alert("Проверьте в Обзоре рынка наличие символа " + para_0_st);
           }
         if(local_9_in == 2 || local_9_in == 64 || local_9_in == 65 || local_9_in == 133)
            break;
         if((local_9_in == 4 || local_9_in == 131 || local_9_in == 132))
           {
            Sleep(30000);
            break;
           }
         if(local_9_in == 140 || local_9_in == 148 || local_9_in == 4110 || local_9_in == 4111)
            break;
         if(local_9_in == 141)
           {
            Sleep(100000);
           }
         if(local_9_in == 145)
           {
            Sleep(17000);
           }
         if(local_9_in == 146 && IsTradeContextBusy())
           {
            do
              {
               Sleep(500);
              }
            while(IsTradeContextBusy());
           }
         if(local_9_in == 135)
            continue;
         Sleep(7700);

        }
      local_15_do = local_15_do + local_14_do ;
      if(!(global_39_bo))
         break;

     }
   return(local_11_in);
  }

double fun_16(double para_0_do,bool para_2_bo)
  {
   double    local_1_do;
   string    local_2_st;
   string    local_3_st;
   double    local_4_do;
   double    local_5_do;
   double    local_6_do;
   double    local_7_do;
   int       local_8_in;
   int       local_9_in;
   int       local_10_in;

   bool       tmp_bo_1;
   double     tmp_do_2;
   int        tmp_in_3;
   int        tmp_in_4;
   double     tmp_do_5;
   double     tmp_do_6;

   local_2_st = " Автор функции: " ;
   local_4_do = 0.0 ;
   local_5_do = 0.0 ;
   local_6_do = 0.0 ;
   local_7_do = 0.0 ;
   local_8_in = 0 ;
   local_10_in = 0 ;
   local_9_in = 0 ;
   if(MarketInfo(global_50_st,24)==0.01)
     {
      local_8_in = 2 ;
     }
   else
     {
      local_8_in = 1 ;
     }
   local_5_do = MarketInfo(global_50_st,23) ;
   if(Lots<local_5_do)
     {
      Lots = local_5_do ;
     }
   local_6_do = global_37_do ;
   if(global_34_do!=0.0)
     {
      if(fix_balance>0.0)
        {
         local_7_do = fix_balance ;
        }
      else
        {
         if(BaseForLotCalc == 0)
           {
            tmp_bo_1 = AccountEquity();
           }
         else
           {
            tmp_bo_1 = AccountBalance();
           }
         local_7_do = tmp_bo_1 ;
        }
      local_7_do = local_7_do + virtBalance ;
      tmp_do_2 = local_7_do;
      tmp_in_3 = global_34_do;
      tmp_in_4 = MarketInfo(global_50_st,16);
      tmp_do_5 = 0.0;
      if(MarketInfo(global_50_st,11)!=0.0)
        {
         tmp_do_5 = MarketInfo(global_50_st,9) / MarketInfo(global_50_st,11);
        }
      if(tmp_do_5 * tmp_in_4==0.0)
        {
         PrintFormat(global_50_st + " bidcorr*ValuePerPip==0");
         tmp_do_6 = 0.0;
        }
      else
        {
         tmp_do_6 = tmp_in_3 * tmp_do_2 / (tmp_do_5 * tmp_in_4);
        }
      local_4_do = tmp_do_6 * global_36_do ;
     }
   else
     {
      if(FirstNumberp >  0 && LotsMartinp>0.0)
        {
         local_4_do = Lots / MathPow(LotsMartinp,FirstNumberp) ;
        }
      else
        {
         local_4_do = Lots ;
        }
     }
   if(para_2_bo)
     {
      local_4_do = NormalizeDouble(local_4_do,local_8_in) ;
     }
   return(local_4_do);
  }

void fun_17(string para_0_st,int para_1_in,int para_2_in)
  {
   int       local_1_in = 0;
   int       local_2_in;
   string    local_3_st;

   int        tmp_in_1;
   double     tmp_do_2;
   double     tmp_do_3;
   double     tmp_do_4;
   int        tmp_in_5;
   string     tmp_st_6;

   local_2_in = OrdersTotal() ;
   local_3_st = " Автор функции:" ;
   if(para_0_st == "0")
     {
      para_0_st = global_50_st ;
     }
   for(local_1_in=local_2_in - 1 ; local_1_in >= 0 ; local_1_in --)
     {
      if(!(OrderSelect(local_1_in,0,0)))
         continue;

      if((OrderSymbol() != para_0_st && para_0_st != ""))
         continue;

      if((para_1_in >= 0 && OrderType() != para_1_in))
         continue;

      if((OrderType() != 0 && OrderType() != 1))
         continue;

      if((para_2_in >= 0 && OrderMagicNumber() != para_2_in))
         continue;
      tmp_in_1 = 0;
      tmp_do_2 = 0.0;
      tmp_do_3 = 0.0;
      tmp_do_4 = 0.0;
      tmp_in_5 = 0;
      if((OrderType() != 0 && OrderType() != 1))
         continue;
      for(tmp_in_5 = 1 ; tmp_in_5 <= 20 ; tmp_in_5=tmp_in_5 + 1)
        {
         RefreshRates();
         tmp_do_2 = MarketInfo(OrderSymbol(),10);
         tmp_do_3 = MarketInfo(OrderSymbol(),9);
         if(OrderType() == 0)
           {
            tmp_do_4 = tmp_do_3;
           }
         else
           {
            tmp_do_4 = tmp_do_2;
           }
         if(OrderClose(OrderTicket(),OrderLots(),tmp_do_4,1,tmp_in_1))
            break;
         Print("Error(",GetLastError(),") opening position: ",fun_18(GetLastError()),", try ",tmp_in_5);
         do
           {
            if((GetLastError() != 146 || !(IsTradeContextBusy())))
               continue;
            Sleep(500);
           }
         while(IsTradeContextBusy());
        }
     }
  }

string fun_18(int para_0_in)
  {
   string    local_1_st;

   switch(para_0_in)
     {
      case 0 :
      case 1 :
         local_1_st = "no error" ;
         break;
      case 2 :
         local_1_st = "common error" ;
         break;
      case 3 :
         local_1_st = "invalid trade parameters" ;
         break;
      case 4 :
         local_1_st = "trade server is busy" ;
         break;
      case 5 :
         local_1_st = "old version of the client terminal" ;
         break;
      case 6 :
         local_1_st = "no connection with trade server" ;
         break;
      case 7 :
         local_1_st = "not enough rights" ;
         break;
      case 8 :
         local_1_st = "too frequent requests" ;
         break;
      case 9 :
         local_1_st = "malfunctional trade operation (never returned error)" ;
         break;
      case 64 :
         local_1_st = "account disabled" ;
         break;
      case 65 :
         local_1_st = "invalid account" ;
         break;
      case 128 :
         local_1_st = "trade timeout" ;
         break;
      case 129 :
         local_1_st = "invalid price" ;
         break;
      case 130 :
         local_1_st = "invalid stops" ;
         break;
      case 131 :
         local_1_st = "invalid trade volume" ;
         break;
      case 132 :
         local_1_st = "market is closed" ;
         break;
      case 133 :
         local_1_st = "trade is disabled" ;
         break;
      case 134 :
         local_1_st = "not enough money" ;
         break;
      case 135 :
         local_1_st = "price changed" ;
         break;
      case 136 :
         local_1_st = "off quotes" ;
         break;
      case 137 :
         local_1_st = "broker is busy (never returned error)" ;
         break;
      case 138 :
         local_1_st = "requote" ;
         break;
      case 139 :
         local_1_st = "order is locked" ;
         break;
      case 140 :
         local_1_st = "long positions only allowed" ;
         break;
      case 141 :
         local_1_st = "too many requests" ;
         break;
      case 145 :
         local_1_st = "modification denied because order too close to market" ;
         break;
      case 146 :
         local_1_st = "trade context is busy" ;
         break;
      case 147 :
         local_1_st = "expirations are denied by broker" ;
         break;
      case 148 :
         local_1_st = "amount of open and pending orders has reached the limit" ;
         break;
      case 149 :
         local_1_st = "hedging is prohibited" ;
         break;
      case 150 :
         local_1_st = "prohibited by FIFO rules" ;
         break;
      case 4000 :
         local_1_st = "no error (never generated code)" ;
         break;
      case 4001 :
         local_1_st = "wrong function pointer" ;
         break;
      case 4002 :
         local_1_st = "array index is out of range" ;
         break;
      case 4003 :
         local_1_st = "no memory for function call stack" ;
         break;
      case 4004 :
         local_1_st = "recursive stack overflow" ;
         break;
      case 4005 :
         local_1_st = "not enough stack for parameter" ;
         break;
      case 4006 :
         local_1_st = "no memory for parameter string" ;
         break;
      case 4007 :
         local_1_st = "no memory for temp string" ;
         break;
      case 4008 :
         local_1_st = "not initialized string" ;
         break;
      case 4009 :
         local_1_st = "not initialized string in array" ;
         break;
      case 4010 :
         local_1_st = "no memory for array\' string" ;
         break;
      case 4011 :
         local_1_st = "too long string" ;
         break;
      case 4012 :
         local_1_st = "remainder from zero divide" ;
         break;
      case 4013 :
         local_1_st = "zero divide" ;
         break;
      case 4014 :
         local_1_st = "unknown command" ;
         break;
      case 4015 :
         local_1_st = "wrong jump (never generated error)" ;
         break;
      case 4016 :
         local_1_st = "not initialized array" ;
         break;
      case 4017 :
         local_1_st = "dll calls are not allowed" ;
         break;
      case 4018 :
         local_1_st = "cannot load library" ;
         break;
      case 4019 :
         local_1_st = "cannot call function" ;
         break;
      case 4020 :
         local_1_st = "expert function calls are not allowed" ;
         break;
      case 4021 :
         local_1_st = "not enough memory for temp string returned from function" ;
         break;
      case 4022 :
         local_1_st = "system is busy (never generated error)" ;
         break;
      case 4050 :
         local_1_st = "invalid function parameters count" ;
         break;
      case 4051 :
         local_1_st = "invalid function parameter value" ;
         break;
      case 4052 :
         local_1_st = "string function internal error" ;
         break;
      case 4053 :
         local_1_st = "some array error" ;
         break;
      case 4054 :
         local_1_st = "incorrect series array using" ;
         break;
      case 4055 :
         local_1_st = "custom indicator error" ;
         break;
      case 4056 :
         local_1_st = "arrays are incompatible" ;
         break;
      case 4057 :
         local_1_st = "global variables processing error" ;
         break;
      case 4058 :
         local_1_st = "global variable not found" ;
         break;
      case 4059 :
         local_1_st = "function is not allowed in testing mode" ;
         break;
      case 4060 :
         local_1_st = "function is not confirmed" ;
         break;
      case 4061 :
         local_1_st = "send mail error" ;
         break;
      case 4062 :
         local_1_st = "string parameter expected" ;
         break;
      case 4063 :
         local_1_st = "integer parameter expected" ;
         break;
      case 4064 :
         local_1_st = "double parameter expected" ;
         break;
      case 4065 :
         local_1_st = "array as parameter expected" ;
         break;
      case 4066 :
         local_1_st = "requested history data in update state" ;
         break;
      case 4099 :
         local_1_st = "end of file" ;
         break;
      case 4100 :
         local_1_st = "some file error" ;
         break;
      case 4101 :
         local_1_st = "wrong file name" ;
         break;
      case 4102 :
         local_1_st = "too many opened files" ;
         break;
      case 4103 :
         local_1_st = "cannot open file" ;
         break;
      case 4104 :
         local_1_st = "incompatible access to a file" ;
         break;
      case 4105 :
         local_1_st = "no order selected" ;
         break;
      case 4106 :
         local_1_st = "unknown symbol" ;
         break;
      case 4107 :
         local_1_st = "invalid price parameter for trade function" ;
         break;
      case 4108 :
         local_1_st = "invalid ticket" ;
         break;
      case 4109 :
         local_1_st = "trade is not allowed in the expert properties" ;
         break;
      case 4110 :
         local_1_st = "longs are not allowed in the expert properties" ;
         break;
      case 4111 :
         local_1_st = "shorts are not allowed in the expert properties" ;
         break;
      case 4200 :
         local_1_st = "object is already exist" ;
         break;
      case 4201 :
         local_1_st = "unknown object property" ;
         break;
      case 4202 :
         local_1_st = "object is not exist" ;
         break;
      case 4203 :
         local_1_st = "unknown object type" ;
         break;
      case 4204 :
         local_1_st = "no object name" ;
         break;
      case 4205 :
         local_1_st = "object coordinates error" ;
         break;
      case 4206 :
         local_1_st = "no specified subwindow" ;
         break;
      default :
         local_1_st = "unknown error" ;
     }
   return(local_1_st);
  }

int fun_19()
  {
   int       local_1_in;
   double    local_2_do;
   bool      local_3_bo;
   int       local_4_in;
   int       local_5_in;
   int       local_6_in;

   if(!(funs2(global_50_st,-1,global_25_in,0,"")))
     {
      if(!(funs10()))
        {
         global_14_in = 0 ;
         GlobalVariableSet(string(IsTesting()) + "NUMBER" + global_50_st + string(global_26_in),0.0);
         GlobalVariableSet(string(IsTesting()) + global_50_st + string(global_26_in) + "peak",0.0);
         ObjectDelete(0,global_25_in);
        }
     }
   if(!(funs2(global_50_st,-1,global_25_in,0,"")))
     {
      if(funs10())
        {
         if((funs5() != "" || FirstPositionp == 4))
           {
            GlobalVariableSet(string(IsTesting()) + global_50_st + "0" + string(global_26_in),0.0);
            GlobalVariableSet(string(IsTesting()) + global_50_st + "1" + string(global_26_in),0.0);
            global_14_in = 0 ;
            GlobalVariableSet(string(IsTesting()) + "NUMBER" + global_50_st + string(global_26_in),0.0);
            GlobalVariableSet(string(IsTesting()) + global_50_st + string(global_26_in) + "peak",0.0);
            ObjectDelete(0,global_25_in);
           }
        }
     }
   if(global_69_do==0.0)
     {
      if(funs2(global_50_st,0,global_25_in,0,""))
        {
         global_70_in = (global_55_do - global_56_do) / global_128_do ;
         global_69_do = (global_129_do - global_70_in) * global_128_do + MathMin(iClose(global_50_st,0,1),global_127_do) ;
         GlobalVariableSet(string(IsTesting()) + "Distance_Price" + global_50_st + string(global_26_in),global_69_do);
         funs7();
        }
      if(funs2(global_50_st,1,global_25_in,0,""))
        {
         global_70_in = (global_55_do - global_56_do) / global_128_do ;
         global_69_do = global_70_in * global_128_do + MathMax(iClose(global_50_st,0,1),global_127_do) ;
         GlobalVariableSet(string(IsTesting()) + "Distance_Price" + global_50_st + string(global_26_in),global_69_do);
         funs7();
        }
     }
   if(!(GlobalVariableCheck(string(IsTesting()) + "NUMBER" + global_50_st + string(global_26_in))))
     {
      SetNUMBER(global_50_st,-1, global_25_in);
     }
   local_2_do = 0.0 ;
   local_3_bo = false ;
   local_5_in = 0 ;
   local_4_in = 0 ;
   global_129_do = MarketInfo(global_50_st,13) ;
   global_125_do = MarketInfo(global_50_st,13) * MarketInfo(global_50_st,11) ;
   global_126_do = MarketInfo(global_50_st,10) ;
   global_127_do = MarketInfo(global_50_st,9) ;
   global_128_do = MarketInfo(global_50_st,11) ;
   global_130_do = 0.0 ;
   if(iClose(global_50_st,0,1)>0.0)
     {
      global_130_do = (MathAbs(global_127_do / iClose(global_50_st,0,1) - 1.0)) * 10000.0 ;
     }
   local_6_in = 0 ;
   if(global_69_do!=0.0)
     {
      if(DELAYtime(global_50_st,-1,global_25_in,"HS",iTime(global_50_st,0,0))>global_18_in * global_33_do * PeriodSeconds(0) && global_130_do<20.0)
        {
         if((funs2(global_50_st,0,global_25_in,0,"") || funs9(0)))
           {
            if(global_126_do<=global_69_do)
              {
               local_3_bo = false ;
               local_2_do = NormalizeDouble(fun_16(1.0,false) * MathPow(global_42_do,MathMin(global_44_in,global_14_in + 1)),2) ;
               if((FirstNumberp > global_14_in + 1 || (global_43_in <  global_14_in + 1 && global_43_in >  0)))
                 {
                  local_3_bo = true ;
                  local_6_in = -1 ;
                  Print(global_50_st + " " + string(global_25_in) + " The opened grid level is less than the minimum level. The deal is virtualized");
                 }
               else
                 {
                  if(local_2_do<0.01)
                    {
                     local_3_bo = true ;
                     local_6_in = -1 ;
                     Print(global_50_st + " " + string(global_25_in) + " Current lot <0.01. The average deal is virtualized");
                    }
                  else
                    {
                     if(!(funs2(global_50_st,0,global_25_in,0,"")) && MaxOtherMagics >  0)
                       {
                        if(funs6int(global_25_in,"") >= MaxOtherMagics)
                          {
                           local_3_bo = true ;
                           local_6_in = -1 ;
                           Print(global_50_st + " " + string(global_25_in) + " GetOtherMagicsCount >= MaxOtherMagics. The deal is virtualized");
                           if(FirstNumberp <= global_14_in + 1)
                             {
                              global_14_in --;
                             }
                          }
                       }
                     else
                       {
                        if(!(funs2(global_50_st,0,global_25_in,0,"")) && MaxOtherSymbols >  0)
                          {
                           if(funs6str(global_50_st) >= MaxOtherSymbols)
                             {
                              local_3_bo = true ;
                              local_6_in = -1 ;
                              Print(global_50_st + " " + string(global_25_in) + " GetOtherSymbolsCount >= MaxOtherSymbols. The deal is virtualized");
                              if(FirstNumberp <= global_14_in + 1)
                                {
                                 global_14_in --;
                                }
                             }
                          }
                        else
                          {
                           local_6_in = fun_15(global_50_st,0,local_2_do,0.0,0.0,global_25_in,"C" + IntegerToString(global_14_in + 1,0,32),global_69_do) ;
                           if(local_6_in >  0)
                             {
                              GlobalVariableSet(string(IsTesting()) + global_50_st + "0" + string(global_26_in),0.0);
                              local_3_bo = true ;
                             }
                          }
                       }
                    }
                 }
               if(local_3_bo)
                 {
                  global_14_in ++;
                  fun80(local_6_in);
                  GlobalVariableSet(string(IsTesting()) + "NUMBER" + global_50_st + string(global_26_in),global_14_in);
                  global_70_in = (global_55_do - global_56_do) / global_128_do ;
                  global_69_do =  MathMin(iClose(global_50_st,0,1),global_127_do)+(global_129_do - global_70_in) * global_128_do  ;
                  GlobalVariableSet(string(IsTesting()) + "Distance_Price" + global_50_st + string(global_26_in),global_69_do);
                  funs7();
                 }
              }
           }
         else
           {
            if((funs2(global_50_st,1,global_25_in,0,"") || funs9(1)) && global_127_do>=global_69_do)
              {
               local_3_bo = false ;
               local_2_do = NormalizeDouble(fun_16(1.0,false) * MathPow(global_42_do,MathMin(global_44_in,global_14_in + 1)),2) ;
               if((FirstNumberp > global_14_in + 1 || (global_43_in <  global_14_in + 1 && global_43_in >  0)))
                 {
                  local_3_bo = true ;
                  local_6_in = -1 ;
                  Print(global_50_st + " " + string(global_25_in) + " The opened grid level is less than the minimum level. The deal is virtualized");
                 }
               else
                 {
                  if(local_2_do<0.01)
                    {
                     local_3_bo = true ;
                     local_6_in = -1 ;
                     Print(global_50_st + " " + string(global_25_in) + " Current lot <0.01. The average deal is virtualized");
                    }
                  else
                    {
                     if(!(funs2(global_50_st,1,global_25_in,0,"")) && MaxOtherMagics >  0)
                       {
                        if(funs6int(global_25_in,"") >= MaxOtherMagics)
                          {
                           local_3_bo = true ;
                           local_6_in = -1 ;
                           Print(global_50_st + " " + string(global_25_in) + " GetOtherMagicsCount >= MaxOtherMagics. The deal is virtualized");
                           if(FirstNumberp <= global_14_in + 1)
                             {
                              global_14_in --;
                             }
                          }
                       }
                     else
                       {
                        if(!(funs2(global_50_st,1,global_25_in,0,"")) && MaxOtherSymbols >  0)
                          {
                           if(funs6str(global_50_st) >= MaxOtherSymbols)
                             {
                              local_3_bo = true ;
                              local_6_in = -1 ;
                              Print(global_50_st + " " + string(global_25_in) + " GetOtherSymbolsCount >= MaxOtherSymbols. The deal is virtualized");
                              if(FirstNumberp <= global_14_in + 1)
                                {
                                 global_14_in --;
                                }
                             }
                          }
                        else
                          {
                           local_6_in = fun_15(global_50_st,1,local_2_do,0.0,0.0,global_25_in,"C" + IntegerToString(global_14_in + 1,0,32),global_69_do) ;
                           if(local_6_in >  0)
                             {
                              GlobalVariableSet(string(IsTesting()) + global_50_st + "1" + string(global_26_in),0.0);
                              local_3_bo = true ;
                             }
                          }
                       }
                    }
                 }
               if(local_3_bo)
                 {
                  global_14_in ++;
                  fun80(local_6_in);
                  GlobalVariableSet(string(IsTesting()) + "NUMBER" + global_50_st + string(global_26_in),global_14_in);
                  global_70_in = (global_55_do - global_56_do) / global_128_do ;
                  global_69_do = global_70_in * global_128_do + MathMax(iClose(global_50_st,0,1),global_127_do) ;
                  GlobalVariableSet(string(IsTesting()) + "Distance_Price" + global_50_st + string(global_26_in),global_69_do);
                  funs7();
                 }
              }
           }
        }
     }
   return(0);
  }

string fun_20(string para_0_st)
  {
   string     tmp_st_1;

   if(StringLen(para_0_st)  != 3)
     {
      tmp_st_1 = "9";
      return(tmp_st_1);
     }
   if(para_0_st == "AUD")
     {
      tmp_st_1 = "1";
      return(tmp_st_1);
     }
   if(para_0_st == "CAD")
     {
      tmp_st_1 = "2";
      return(tmp_st_1);
     }
   if(para_0_st == "EUR")
     {
      tmp_st_1 = "3";
      return(tmp_st_1);
     }
   if(para_0_st == "GBP")
     {
      tmp_st_1 = "4";
      return(tmp_st_1);
     }
   if(para_0_st == "JPY")
     {
      tmp_st_1 = "5";
      return(tmp_st_1);
     }
   if(para_0_st == "NZD")
     {
      tmp_st_1 = "6";
      return(tmp_st_1);
     }
   if(para_0_st == "USD")
     {
      tmp_st_1 = "7";
      return(tmp_st_1);
     }
   tmp_st_1 = "9";
   return(tmp_st_1);
  }

int fun_21()
  {
   int       local_1_in;
   string    local_2_st;
   string    local_3_st;
   string    local_4_st;
   string    local_5_st;
   string    local_6_st;
   string    local_7_st;
   string    local_8_st;
   string    local_9_st;
   int       local_10_in;
   string    local_11_st;
   int       local_12_in;
   int       local_13_in;
   int       local_14_in;

   int        tmp_in_1;
   int        tmp_in_2;
   string     tmp_st_3;
   string     tmp_st_4;
   int        tmp_in_5;
   string     tmp_st_6;
   string     tmp_st_7;
   string     tmp_st_8;
   string     tmp_st_9;

   local_2_st = "" ;
   local_3_st = "" ;
   local_4_st = "" ;
   local_5_st = "" ;
   local_6_st = "" ;
   local_7_st = "" ;
   local_8_st = "" ;
   local_9_st = "" ;
   local_10_in = 0 ;
   local_11_st = MQLInfoString(MQL_PROGRAM_NAME) + " orders " + global_50_st + " " + string(global_8_in) + "-" + string(global_33_do) + "-" + string(global_19_in) + "-" + string(global_20_in) + "-" + string(global_28_do) + "-" + string(global_29_do) + "-" + string(global_30_in) + "-" + string(global_31_do) + ".csv" ;
   FileDelete(StringConcatenate("Report ",AccountNumber()) + "//" + local_11_st,0);
   local_12_in = FileOpen(StringConcatenate("Report ",AccountNumber()) + "//" + local_11_st,11) ;
   if(local_12_in == -1)
     {
      PrintFormat("ошибка открытия файла");
     }
   if(local_12_in != -1)
     {
      FileWrite(local_12_in,"Прогон","Ордер Тиккет","Тип ордера","Лоты","Пара","Цена открытия","Цена закрытия","Stop loss","Take profot","Время открытия","Время закрытия","Меджик номер","Профит","Своп","Комиссии","Коммент","Аналитика");
      FileSeek(local_12_in,0,2);
      local_13_in = 0 ;
      for(local_14_in = 0 ; local_14_in < HistoryTotal() ; local_14_in ++)
        {
         if(OrderSelect(local_14_in,0,1))
           {
            local_10_in = MarketInfo(OrderSymbol(),12) ;
            local_2_st = DoubleToString(OrderProfit(),2) ;
            local_3_st = DoubleToString(OrderSwap(),2) ;
            local_4_st = DoubleToString(OrderCommission(),2) ;
            local_5_st = DoubleToString(OrderLots(),2) ;
            local_6_st = DoubleToString(OrderOpenPrice(),local_10_in) ;
            local_7_st = DoubleToString(OrderClosePrice(),local_10_in) ;
            local_8_st = DoubleToString(OrderStopLoss(),local_10_in) ;
            local_9_st = DoubleToString(OrderTakeProfit(),local_10_in) ;
            tmp_in_1 = OrderTicket();
            for(tmp_in_2 = 0 ; tmp_in_2 < 40000 ; tmp_in_2=tmp_in_2 + 1)
              {
               if(global_87_in_si40000[tmp_in_2] != tmp_in_1)
                  continue;
               tmp_st_3 = global_86_st_si40000[tmp_in_2];
               break;

              }
            tmp_st_3 = "0";
            tmp_st_4 = OrderComment();
            tmp_in_5 = OrderMagicNumber();
            tmp_st_6 = TimeToString(OrderCloseTime(),3);
            tmp_st_7 = TimeToString(OrderOpenTime(),3);
            tmp_st_8 = OrderSymbol();
            tmp_st_9 = "";
            switch(OrderType())
              {
               case 0 :
                  tmp_st_9 = "BUY";
                  break;
               case 1 :
                  tmp_st_9 = "SELL";
                  break;
               case 2 :
                  tmp_st_9 = "BUY LIMIT";
                  break;
               case 3 :
                  tmp_st_9 = "SELL LIMIT";
                  break;
               case 4 :
                  tmp_st_9 = "BUY STOP";
                  break;
               case 5 :
                  tmp_st_9 = "SELL STOP";
                  break;
               case 6 :
                  tmp_st_9 = "DEPOSIT";
              }
            FileWrite(local_12_in,MQLInfoString(MQL_PROGRAM_NAME) + " orders " + string(global_8_in) + "-" + string(global_33_do) + "-" + string(global_19_in) + "-" + string(global_20_in) + "-" + string(global_28_do) + "-" + string(global_29_do) + "-" + string(global_30_in) + "-" + string(global_31_do) + ".csv",DoubleToString(OrderTicket(),0),tmp_st_9,local_5_st,tmp_st_8,local_6_st,local_7_st,local_8_st,local_9_st,tmp_st_7,tmp_st_6,tmp_in_5,local_2_st,local_3_st,local_4_st,tmp_st_4,tmp_st_3);
           }
        }
      FileClose(local_12_in);
     }
   return(0);
  }

int fun_22()
  {
   int       local_1_in;
   int       local_2_in;
   int       local_3_in;
   string    local_4_st;
   string    local_5_st;
   string    local_6_st;
   string    local_7_st;
   int       local_8_in;
   string    local_9_st;
   int       local_10_in;
   int       local_11_in;

   local_2_in = -1 ;
   local_3_in = -1 ;
   local_4_st = "" ;
   local_5_st = "" ;
   local_6_st = "" ;
   local_7_st = "" ;
   local_8_in = 0 ;
   local_9_st = MQLInfoString(MQL_PROGRAM_NAME) + " equity " + global_50_st + " " + string(global_8_in) + "-" + string(global_33_do) + "-" + string(global_19_in) + "-" + string(global_20_in) + "-" + string(global_28_do) + "-" + string(global_29_do) + "-" + string(global_30_in) + "-" + string(global_31_do) + ".csv" ;
   FileDelete(StringConcatenate("Report ",AccountNumber()) + "//" + local_9_st,0);
   local_10_in = FileOpen(StringConcatenate("Report ",AccountNumber()) + "//" + local_9_st,11) ;
   if(local_10_in == -1)
     {
      PrintFormat("ошибка открытия файла");
     }
   if(local_10_in != -1)
     {
      FileWrite(local_10_in,"прогон","пара","дата","balance","equity","min_equity","symbol_koef","margin","max_margin");
      FileSeek(local_10_in,0,2);
      for(local_11_in = 0 ; local_11_in < global_89_in ; local_11_in ++)
        {
         FileWrite(local_10_in,MQLInfoString(MQL_PROGRAM_NAME) + " equity " + string(global_8_in) + "-" + string(global_33_do) + "-" + string(global_19_in) + "-" + string(global_20_in) + "-" + string(global_28_do) + "-" + string(global_29_do) + "-" + string(global_30_in) + "-" + string(global_31_do) + ".csv",global_50_st,TimeToString(int(global_85_do_si7si10000[0][local_11_in]),3),int(global_85_do_si7si10000[1][local_11_in]),int(global_85_do_si7si10000[2][local_11_in]),int(global_85_do_si7si10000[3][local_11_in]),int(global_85_do_si7si10000[5][local_11_in]),int(global_85_do_si7si10000[6][local_11_in]));
        }
      FileClose(local_10_in);
     }
   return(0);
  }

void fun_23(string para_0_st,_sets & para_1_a_160__sets_ko[])
  {
   string    local_1_st_ko[];
   string    local_2_st_ko[];
   string    local_3_st_ko[];
   double    local_4_do;
   double    local_5_do;
   double    local_6_do;
   double    local_7_do;
   double    local_8_do;
   double    local_9_do;
   int       local_10_in;
   string    local_11_st;

   int        tmp_in_1;
   int        tmp_in_2;
   int        tmp_in_3;
   int        tmp_in_4;
   int        tmp_in_5;
   int        tmp_in_6;
   int        tmp_in_7;
   int        tmp_in_8;
   int        tmp_in_9;
   int        tmp_in_10=7318875;

   local_11_st = "base" ;
   local_10_in = global_19_in ;
   local_9_do = global_21_do ;
   local_8_do = global_28_do ;
   local_7_do = global_29_do ;
   local_6_do = global_30_in ;
   local_5_do = global_31_do ;
   local_4_do = global_33_do ;
   StringSplit(para_0_st,StringGetCharacter(";",0),local_1_st_ko);
   tmp_in_1 = ArraySize(local_1_st_ko);
   for(tmp_in_2 = 0 ; tmp_in_2 < tmp_in_1 ; tmp_in_2=tmp_in_2 + 1)
     {
      local_1_st_ko[tmp_in_2] = StringTrimLeft(StringTrimRight(local_1_st_ko[tmp_in_2]));
     }
   tmp_in_3 = 0;
   tmp_in_4 = ArrayRange(local_1_st_ko,0);
   while(tmp_in_3 < MathMin(tmp_in_10,9))
     {
      if(StringTrimLeft(StringTrimRight(local_1_st_ko[tmp_in_3])) != "")
        {
         ArrayResize(para_1_a_160__sets_ko,tmp_in_3 + 1,0);
         para_1_a_160__sets_ko[tmp_in_3].st_1 = local_11_st;
         para_1_a_160__sets_ko[tmp_in_3].in_2 = local_11_st;
         para_1_a_160__sets_ko[tmp_in_3].do_3 = local_11_st;
         para_1_a_160__sets_ko[tmp_in_3].do_4 = local_11_st;
         para_1_a_160__sets_ko[tmp_in_3].do_5 = local_11_st;
         para_1_a_160__sets_ko[tmp_in_3].do_6 = local_11_st;
         para_1_a_160__sets_ko[tmp_in_3].do_7 = local_11_st;
         para_1_a_160__sets_ko[tmp_in_3].do_8 = local_11_st;
         tmp_in_5 = tmp_in_3 + 1;
         PrintFormat("using set #" + IntegerToString(tmp_in_5,0,32) + ": " + local_1_st_ko[tmp_in_3]);
         StringSplit(local_1_st_ko[tmp_in_3],StringGetCharacter(",",0),local_2_st_ko);
         tmp_in_6 = ArraySize(local_2_st_ko);
         for(tmp_in_7 = 0 ; tmp_in_7 < tmp_in_6 ; tmp_in_7=tmp_in_7 + 1)
           {
            local_2_st_ko[tmp_in_7] = StringTrimLeft(StringTrimRight(local_2_st_ko[tmp_in_7]));
           }
         for(tmp_in_3 = 0 ; tmp_in_3 < ArrayRange(local_2_st_ko,0) ; tmp_in_3=tmp_in_3 + 1)
           {
            StringSplit(local_2_st_ko[tmp_in_3],StringGetCharacter("=",0),local_3_st_ko);
            tmp_in_8 = ArraySize(local_3_st_ko);
            for(tmp_in_9 = 0 ; tmp_in_9 < tmp_in_8 ; tmp_in_9=tmp_in_9 + 1)
              {
               local_3_st_ko[tmp_in_9] = StringTrimLeft(StringTrimRight(local_3_st_ko[tmp_in_9]));
              }
            if(local_3_st_ko[0] == "s1")
              {
               para_1_a_160__sets_ko[tmp_in_3].st_1 = local_3_st_ko[1];
              }
            else
              {
               if(local_3_st_ko[0] == "s2")
                 {
                  para_1_a_160__sets_ko[tmp_in_3].in_2 = StringToInteger(local_3_st_ko[1]);
                 }
               else
                 {
                  if(local_3_st_ko[0] == "s3")
                    {
                     para_1_a_160__sets_ko[tmp_in_3].do_3 = StringToDouble(local_3_st_ko[1]);
                    }
                  else
                    {
                     if(local_3_st_ko[0] == "s4")
                       {
                        para_1_a_160__sets_ko[tmp_in_3].do_4 = StringToDouble(local_3_st_ko[1]);
                       }
                     else
                       {
                        if(local_3_st_ko[0] == "s5")
                          {
                           para_1_a_160__sets_ko[tmp_in_3].do_5 = StringToDouble(local_3_st_ko[1]);
                          }
                        else
                          {
                           if(local_3_st_ko[0] == "s6")
                             {
                              para_1_a_160__sets_ko[tmp_in_3].do_6 = StringToDouble(local_3_st_ko[1]);
                             }
                           else
                             {
                              if(local_3_st_ko[0] == "s7")
                                {
                                 para_1_a_160__sets_ko[tmp_in_3].do_7 = StringToDouble(local_3_st_ko[1]);
                                }
                              else
                                {
                                 if(local_3_st_ko[0] == "s8")
                                   {
                                    para_1_a_160__sets_ko[tmp_in_3].do_8 = StringToDouble(local_3_st_ko[1]);
                                   }
                                }
                             }
                          }
                       }
                    }
                 }
              }
           }
        }
      tmp_in_3=tmp_in_3 + 1;
      tmp_in_10 = ArrayRange(local_1_st_ko,0);
     }
  }

void fun_24()
  {
   global_122_do_si6si5si2[0][0][0] = 0.0000897;
   global_122_do_si6si5si2[0][1][0] = 0.0001034;
   global_122_do_si6si5si2[0][2][0] = 0.0001795;
   global_122_do_si6si5si2[0][3][0] = 0.0002647;
   global_122_do_si6si5si2[0][4][0] = 0.0002584;
   global_122_do_si6si5si2[1][0][0] = 0.0000588;
   global_122_do_si6si5si2[1][1][0] = 0.0000813;
   global_122_do_si6si5si2[1][2][0] = 0.0001579;
   global_122_do_si6si5si2[1][3][0] = 0.0003007;
   global_122_do_si6si5si2[1][4][0] = 0.0004076;
   global_122_do_si6si5si2[2][0][0] = 0.0000738;
   global_122_do_si6si5si2[2][1][0] = 0.0000939;
   global_122_do_si6si5si2[2][2][0] = 0.0001887;
   global_122_do_si6si5si2[2][3][0] = 0.0003237;
   global_122_do_si6si5si2[2][4][0] = 0.0003535;
   global_122_do_si6si5si2[3][0][0] = 0.0000645;
   global_122_do_si6si5si2[3][1][0] = 0.0000914;
   global_122_do_si6si5si2[3][2][0] = 0.000148;
   global_122_do_si6si5si2[3][3][0] = 0.0002208;
   global_122_do_si6si5si2[3][4][0] = 0.00025;
   global_122_do_si6si5si2[4][0][0] = 0.000054;
   global_122_do_si6si5si2[4][1][0] = 0.0000639;
   global_122_do_si6si5si2[4][2][0] = 0.0000964;
   global_122_do_si6si5si2[4][3][0] = 0.0001486;
   global_122_do_si6si5si2[4][4][0] = 0.0001765;
   global_122_do_si6si5si2[5][0][0] = 0.000258;
   global_122_do_si6si5si2[5][1][0] = 0.000221;
   global_122_do_si6si5si2[5][2][0] = 0.000159;
   global_122_do_si6si5si2[5][3][0] = 0.000221;
   global_122_do_si6si5si2[5][4][0] = 0.000258;
   global_122_do_si6si5si2[0][0][1] = 0.5292458;
   global_122_do_si6si5si2[0][1][1] = 0.5154581;
   global_122_do_si6si5si2[0][2][1] = 0.4603964;
   global_122_do_si6si5si2[0][3][1] = 0.4371622;
   global_122_do_si6si5si2[0][4][1] = 0.4761835;
   global_122_do_si6si5si2[1][0][1] 

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

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

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

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

Стоимость полного кода
11 741,50₽ ≈ $143.47