Orders Execution
Checks for the total of open ordersChecks for the total of closed ordersIt Closes Orders by itself It automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategy
Indicators Used
Indicator of the average true rangeMoving average indicatorStochastic oscillatorBill Williams Awesome oscillatorFractalsBill Williams Accelerator/Decelerator oscillatorDeMarker indicatorCommodity channel indexRelative strength indexMoney flow indexLarry William percent range indicatorMACD HistogramMoving Average of OscillatorMovement directional indexParabolic Stop and Reverse system
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
exp_Lego_3
//+-------------------------------------------------------------------+
//|                                          Build_Own_Strategy!.mq4  |
//|                                     © 2007  v0 - AutoGrapf.dp.ua  | // It was shared for MQL4 book. So, there are no any reserved copyrights except open source since beginning.
//|                                             v1 2010 Seletsky R.V. | // Also shared
//|                                          v2,v3 AnonymousMMMMMMMMMI| // All are shared.
//+-------------------------------------------------------------------+






//-----------------------------------------------------------------------------------------------------------+
//                                       Èíñòðóêöèÿ ïî ïðèìåíåíèþ                                            |
//------------------------------------------------------------------------------------------------------ 1 --+


// Òðåòüÿ âåðñèÿ ñîâåòíèêà "Ïîñòàâü ñâîþ ñòðàòåãèþ!". Îïèñàíåå - ëåâåå, â êàâû÷êàõ :)
// Ôóíêöèè: 16+1 èíäèêàòîðîâ, 
// Ñ Â Î É Ñ Ò Â À
// Âñå èíäèêàòîðû ðàáîòàþò ïî "ïðîñòîìó ïðèíöèïó" - íàïðèìåð, ñòîõàñòèê "ïî ïðîñòîìó" äà¸ò ñèãíàë íà ïîêóïêó ïðè çàøêàëèâàíèè çà 80; 
// à íà ïðîäàæó - ïðè ïàäåíèè íèæå 20;  OsMA ñèãíàëèò î ïîêóïêå è ïðîäàæå, åñëè âèñèò âûøå è íèæå íóëåâîé ëèíèè ñîîòâåòñòâåííî;
// â îáùåì - âñå íàñòðîéêè "ïðîñòûå", äàæå "ïðèìèòèâíûå".
// Òàêæå, âîçìîæíà óñòàíîâêà ñâîèõ ïîëüçîâàòåëüñêèõ èíäèêàòîðîâ (êîòîðûå â áîëüøèíñòâå ñëó÷àåâ "óæå íàñòðîåíû")
// Ï Ð Å Ä Í À Ç Í À × Å Í È Å
// Ðàçðàáîòàíà äàííàÿ âåøü äëÿ óìåþùèõ èíòóèòèâíî ìåíÿòü êîä, òî åñòü äëÿ òåõ, êòî íå çíàåò MQL4, íî óìååò ðàáîòàòü ñ C++ èëè Pascal.
// Ò.å. çíàåò øêîëüíóþ èíôîðìàòèêó.
// Ï Ð Î Á Ë Å Ì Û
// Ê ñîæàëåíèþ, ó ìåíÿ íå õâàòàåò çíàíèé íà óñòàíîâêó âíóòðü õîòÿ áû 
// Ñ äðóãîé ñòîðîíû, âû âñåãäà ìîæåòå èñïîëüçîâàòü ñâîè ëþáèìûå èíäèêàòîðû. Ïðîáëåìà â òîì, ÷òî ÿ íèêàê íå ñìîã âñòàèòü äàæå
// ïðîñòåíüêèé OrderModify äëÿ ñòîï-ìåíåäæìåíòà â ñòèëå "îäèí âûõîä íà ïèêå, äðóãîé - ïî òðàëó" èëè ïî ïðèíöèïó "äâà îòäåëüíûõ ñòîï-ëîññà".
// Îñîáåííîñòè, çàëîæåííûå â êîíñòðóêöèþ åù¸ äî ìåíÿ.




// Êîïèðàéòû - ñâîáîäíûé äîñòóï.
//Òàê êàê ýòî MQL4.com, òî ìîæåòå äåëàòü ÷òî õî÷åòñÿ.
// Íî òîëüêî íå çàáûâàéòå çäåñü äåëèòüñÿ íåêîòîðûìè íàðàáîòêàìè

// È ïîñëåäíåå. Êòî-íèáóäü, ïîñòàüòå ìíå â êîä ôóíêöèþ "òðàëà" è "áåçóáûòêà"!
// Áèáëèîòåêà òðàëèíãà ïðèëàãàåòñÿ, íî ÿ íå çíàþ, ÷òî äåëàòü...




//--------------------------------------------------------------------------------------------------

//-----------------Paramethers---------------------------------------------------------- 1 --------

extern   string   Instructsia                =  "...  is in code-to comments";
extern   string   Obshie_Parametrii          =  "----  Obshie_Parametrii ---- ";            
extern double StopLoss    =0;      // StopLoss
extern double TakeProfit  =0;      // ÒakeÐrofit.
extern double Slippage = 2; // Slippage. /Ïðîñêàëüçûâàíèå.
extern   string ID_of_EA              =  "Îíî æå MagicNumber, îíî æå íîìåðíîé çíàê";
extern double __ID_of_EA = 219249; // ZIGZAG æå. "Çàâîäñêîé èäåíòèôèêàòîð"
extern   string    Block_of_Stakes           =  "----  Stake tuning ----"; 
extern   string    Bl_1                      =  "1 - FixLot, 2 - Martigail, 3 - Percental";
extern   string    Bl_2                      =  "Ìàðòèí-à æä¸ò íîâîé ñäåëêè, à íå ïåðåáèâàåò ñòàðóþ";
extern   string    Bl_3                      =  "IK is a miltiplies for Martingail-taktic";
extern double StakeMode   =1;      //   
extern double Lts1        =0.1;    // Fixlot
extern double IK          =2;      // Multiplying Lts1 * IK (if the previous deal was fail). Normally, Martingail is ThisDealLots = PrevDealLots * 2,  so...
extern double Percents    =5;      //
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  
 extern bool    AllPositions    = true;  // Âñå ïîçèöèè èëè âûáðàííîå çíà÷åíèå
 extern bool    ProfitTrailing  = true;   // Òðàë ñ ïðîôèòà èëè ñ íà÷àëà 
 extern int     TrailingStop    = 30;     // Óðîâåíü
 extern int     TrailingStep    = 1;      // Øàã
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

extern   string   ATR                        =  "---- ---- ---- ----"; 
extern   string   ATRovo                     =  "ATR ìîæíî èñïîëüçîâàòü äëÿ óñòàíîâêè TP è SL."; // Actually, never tuned by me properly.
extern   string   _prednaznachenie_          =  "ATR_Multiply íàñòðàèâàåò ìíîæèòåëü ÷óâñòâèòåëüíîñòè";
extern   string   __eto___________          =  "Íàïðèìåð, åñëè Multiply=0.9, òî ðåàêöèÿ - 0.9 ïèïñîâ íà 0.0001 ATR";
extern double ATR_Period =14;
extern double ATR_Multiply = 0.9;         
extern double ATR_Reach  =0.0014;
extern  bool ATR_SL = false;
extern  bool ATR_TP = false;   




 // Do not want more...
extern string Implemented_Indicators         = "Çàâîäñêèå èíäèêàòîðû";
extern string Dont_earse                     = "Êàæäûé íàõîäèòñÿ ïî êîìàíäå Ctlr+F";
extern string WARNING1                       = "ÑÂÎÉÑÒÂÀ ÈÍÄÈÊÀÒÎÐÀ ÍÀÑÒÐÀÈÂÀÞÒÑß Â ÊÎÍÑÎËÈ";
extern string WARNING2                       = "ÓÁÅÄÈÒÅÑÜ, ×ÒÎ ÈÍÄÈÊÀÒÎÐÛ ÏÎÑÒÀÂËÅÍÛ ÏÐÀÂÈËÜÍÎ";
extern string WARNING3                       = "ÈÍÀ×Å ÑÒÐÀÒÅÃÈß ÁÓÄÅÒ ÈÑÏÎÐ×ÅÍÀ";
extern string The_List_Of                    = " Êîíñîëü òðåáóåò íåáîëüøîãî êîäåðñêîãî ÷óòüÿ èëè ïîìîùè";
extern   string  Two_ÌÀs_Cross     = "---- ----";
extern  bool  otkr_MA    =false;
extern  bool  zakr_MA    =false;  // Ïåðåñå÷åíèå äâóõ ñêîëüçÿùèõ. Ïðÿìî êàê MACD.
extern double MA1           =4;
extern double MA2           =67;
extern double Shift_ma      =1;  // Øèôò - ýòî áàð, íà êîòîðûé îïèðàåòñÿ ñîâåòíèê. 1 - ñâåæåçàêðûâøèéñÿ, 0 - òåêóùèé, 3 - òðè ñâå÷è íàçàä... 
extern double MA_sort_avoidit=0; //0 - Simple, 1 - Expotential, 2 - Smoothed, 3 - Linear Weighed
extern   string   Stochastic       =  "---- ----";
extern  bool   otkr_Stoh   =false;
extern  bool   zakr_Stoh   =false;
extern double per_K=5;
extern double per_D=3;
extern double slow=3;
extern double zoneBUY=20;
extern double zoneSELL=80; //Ñòàðàÿ òåìà - íèêòî íå ëþáèò íàñòðàèâàòü óðîâíè ïî îòäåëüíîñòè.
extern   string   Awesome          =  "---- ----";
extern  bool   otkr_AO   =false;
extern  bool   zakr_AO   =false;
extern   string   Fractals         =  "---- ----";
extern  bool   otkr_Fractals   =false; 
extern  bool   zakr_Fractals   =false;
extern   string   Accelerator      =  "---- ---- ";
extern  bool   otkr_AC   =false;
extern  bool   zakr_AC   =false;
extern   string   Demarker         =  "---- ---- ";
extern  bool   otkr_Dema   =false;
extern  bool   zakr_Dema   =false;
extern double DeMa_period=14;
extern double niz_ur=0.3;
extern double verx_ur=0.7;
extern   string   CCI              =  "---- ---- ";
extern  bool   otkr_CCI   =false;
extern  bool   zakr_CCI   =false;
extern double CCI_period=14;
extern double CCI_Level=100;    // What, if we want 95?
extern   string   RSI              =  "RSI óäîáíåå âñ¸-òàêè íàñòðàèâàòü òàê, êàê åñòü.";
extern  bool   otkr_RSI   =false;
extern  bool   zakr_RSI   =false;
extern double RSI_Period =14;
extern double RSI_High=70;
extern double RSI_Low=30;
extern   string   MACD             =  "---- ---- ";
extern  bool   otkr_MACD   =false;
extern  bool   zakr_MACD   =false;
extern double MACD_Fast=9;
extern double MACD_Slow=26;   // MACD uses SIGNAL line
extern double MACD_Signal=14; // because you have 2 MA Cross system
extern string     OsMA             =  "---- ---- ";
extern  bool   otkr_OsMA   =false;
extern  bool   zakr_OsMA   =false;
extern double OsMA_Fast=9;
extern double OsMA_Slow=26;   // SIGNAL line (Well, you can also try Zignal.com as a platform - expenseful lux look is a sort of guaranty. Yes, I've made an ad here - Anon MMMMMMMMMI)
extern double OsMA_Signal=14; // because you have 2 MA Cross system
extern   string   WPR              =  "Ýòî çíà÷èò Williams Percent Range";
extern  bool   otkr_WPR   = false;
extern  bool   zakr_WPR   = false;
extern double WPR_Period = 14;
extern double WPR_Shift = 0; 
extern   string   MoneyFlow_aka_MFI=  "---- ---- ";
extern  bool   otkr_MFI   = false;
extern  bool   zakr_MFI   = false;
extern double MFI_Period=14;
extern double MFI_High  =70;
extern double MFI_Low   =30;
extern   string   ADX              =  "ADX Main Line, óðîâíè - 30 è 70"; 
extern  bool   otkr_ADX   = false;
extern  bool   zakr_ADX   = false;
extern double ADX_Period=14;
extern string SAR                  =  "---- ---- ";
extern  bool otkr_SAR = false;
extern  bool zakr_SAR = false;
extern double SAR_Step =0.02;
extern double SAR_MaxStep =0.2;





extern string Custom_Indicators              =  "Ïîëüçîâàòåëüñêèå èíäèêàòîðû";  
extern string Custom_Indicator1              =  "Ïðåäïîëàãàåòñÿ, ÷òî îíè íàñòðîåíû ÷åðåç ðåäàêòèðîâíàèå êîäà.";

extern  bool  otkr_Custom_1 = false;
extern  bool  zakr_Custom_1 = false;
//extern double Period1   =4;      //  ýòîé âåðñèè îòêëþ÷åíî.
//extern double Shift1    =3;
extern string Custom_Indicator2              =  "----";
extern  bool  otkr_Custom_2 = false;
extern  bool  zakr_Custom_2 = false;
//extern double Period2   =4;
//extern double Shift2    =3;
extern string Custom_Indicator3              =  "----";
extern  bool  otkr_Custom_3 = false;
extern  bool  zakr_Custom_3 = false;
//extern double Period3   =4;
//extern double Shift3    =3;
extern string Custom_Indicator4              =  "----";
extern  bool  otkr_Custom_4 = false;
extern  bool  zakr_Custom_4 = false;
// extern double Period4   =4;
// extern double Shift4    =3;
// extern string Custom_Indicator5           =  "----";   
// extern  bool  otkr_Custom_5 = false;
// extern  bool  zakr_Custom_5 = false;
// extern double Period5   =4;
// extern double Shift5    =3;
// extern string Custom_Indicator6           =  "----";
// extern  bool  otkr_Custom_6 = false;
// extern double Period6   =4;
// extern double Shift6    =3;
// extern string Custom_Indicator7           =  "----";
// extern  bool  otkr_Custom_7 = false;
// extern  bool  zakr_Custom_7 = false;
// extern double Period7   =4;
// extern double Shift7    =3;
// extern string Custom_Indicator8           =  "----";
// extern  bool  otkr_Custom_8 = false;
// extern  bool  zakr_Custom_8 = false;
// extern double Period8   =4;
// extern double Shift8    =3;
// extern string Custom_Indicator9           =  "----";
// extern  bool  otkr_Custom_9 = false;
// extern  bool  zakr_Custom_9 = false;
// extern double Period9   =4;
// extern double Shift9    =3;
// extern string Custom_Indicator10          =  "----";
// extern  bool  otkr_Custom_10= false;
// extern  bool  zakr_Custom_10= false;
// extern double Period10  =4;
// extern double Shift10   =3;
// extern string Custom_Indicator11          =  "----";
// extern  bool  otkr_Custom_11= false;
// extern  bool  zakr_Custom_11= false;
// extern double Period11  =4;
// extern double Shift11   =3;
// extern string Custom_Indicator12          =  "----";
// extern  bool  otkr_Custom_12= false;
// extern  bool  zakr_Custom_12= false;
// extern double Period12  =4;
// extern double Shift12   =3;
// extern string Custom_Indicator13          =  "----";
// extern  bool  otkr_Custom_13= false;
// extern  bool  zakr_Custom_13= false;
// extern double Period13  =4;
// extern double Shift13   =3;
// extern string Custom_Indicator14          =  "----";
// extern  bool  otkr_Custom_14= false;
// extern  bool  zakr_Custom_14= false;
// extern double Period14  =4;
// extern double Shift14   =3;
// extern string Custom_Indicator15          =  "----";
// extern  bool  otkr_Custom_15= false;
// extern  bool  zakr_Custom_15= false;
// extern double Period15  =4;
// extern double Shift15   =3;
// extern string Custom_Indicator16          =  "----";
// extern  bool  otkr_Custom_16= false;
// extern  bool  zakr_Custom_16= false;
// extern double Period16  =4;
// extern double Shift16   =3; 





bool Work=true;                    
bool OrderSal;
string Symb;                       // Èìÿ ïàðû (íàïðèìåð -  EURUSD) 

//xxxxxxxxxxxx
int i;
//xxxxxxxxxxxx
//-----------------------------------------------------------  2  -----
int start()
  {
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  for ( i=0; i<OrdersTotal(); i++){if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){  
  if (AllPositions ||OrderMagicNumber()){  //èëè ëþáîå íåîáõîäèìîå çíà÷åíèå,íàïðèìåð,Symbol()
  TrailingPositions();}}} 
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
   int
  
   Total,                           // Êîëè÷åñòâî îðäåðîâ â îêíå 
   Tip=-1,                          // Òèï âûáðàí. îðäåðà (B=0,S=1)
   Ticket;                          // Íîìåð îðäåðà
  
   double
   Lot,                             // Êîëè÷. ëîòîâ â âûáðàí.îðäåðå
   Lts,                             // Êîëè÷. ëîòîâ â îòêðûâ.îðäåðå
   lot,
   Min_Lot,                         // Ìèíèìàëüíîå êîëè÷åñòâî ëîòîâ
   Step,                            // Øàã èçìåíåíèÿ ðàçìåðà ëîòà
   Free,                            // Òåêóùèå ñâîáîäíûå ñðåäñòâà
   One_Lot,                         // Ñòîèìîñòü îäíîãî ëîòà
   Price,                           // Öåíà âûáðàííîãî îðäåðà
   SL,                              // SL âûáðàííîãî îðäåðà 
   TP,                              // TP âûáðàííîãî îðäåðà
   //--
   MA_By,MA_Sell,Stoh_By,Stoh_Sell,AO_By,AO_Sell,Fractals_By,Fractals_Sell,AC_By,AC_Sell,Cls_MA_Sell,Cls_MA_By,Cls_Stoh_Sell,Cls_Stoh_By,
   Cls_AO_Sell,Cls_AO_By,Cls_Fractals_By,Cls_Fractals_Sell,Cls_AC_Sell,Cls_AC_By,Dema_By,Cls_Dema_Sell,Dema_Sell,Cls_Dema_By,CCI_By,CCI_Sell,Cls_WPR_Sell,Cls_CCI_By,Cls_CCI_Sell,
   RSI_By,RSI_Sell,Cls_RSI_Sell,Cls_RSI_By,MFI_By,MFI_Sell,Cls_MFI_Sell,Cls_MFI_By,WPR_By,WPR_Sell,Cls_WRP_Sell,Cls_WPR_By,  //äîáàâëåííîå.
   MACD_By,MACD_Sell,Cls_MACD_Sell,Cls_MACD_By,OsMA_By,OsMA_Sell,Cls_OsMA_Sell,Cls_OsMA_By,ADX_By,ADX_Sell,Cls_ADX_Sell,Cls_ADX_By,SAR_By,SAR_Sell,Cls_SAR_Sell,Cls_SAR_By,
   Custom_1__By, Custom_1__Sell, Cls_Custom_1__By, Cls_Custom_1__Sell,Custom_2__By, Custom_2__Sell, Cls_Custom_2__By, Cls_Custom_2__Sell,Custom_3__By, Custom_3__Sell, Cls_Custom_3__By, Cls_Custom_3__Sell,Custom_4__By, Custom_4__Sell, Cls_Custom_4__By, Cls_Custom_4__Sell,
   Custom_5__By, Custom_5__Sell, Cls_Custom_5__By, Cls_Custom_5__Sell,Custom_6__By, Custom_6__Sell, Cls_Custom_6__By, Cls_Custom_6__Sell,Custom_7__By, Custom_7__Sell, Cls_Custom_7__By, Cls_Custom_7__Sell,Custom_8__By, Custom_8__Sell, Cls_Custom_8__By, Cls_Custom_8__Sell,
   Custom_9__By, Custom_9__Sell, Cls_Custom_9__By, Cls_Custom_9__Sell,Custom_10_By, Custom_10_Sell, Cls_Custom_10_By, Cls_Custom_10_Sell,Custom_11_By, Custom_11_Sell, Cls_Custom_11_By, Cls_Custom_11_Sell,Custom_12_By, Custom_12_Sell, Cls_Custom_12_By, Cls_Custom_12_Sell,
   Custom_13_By, Custom_13_Sell, Cls_Custom_13_By, Cls_Custom_13_Sell,Custom_14_By, Custom_14_Sell, Cls_Custom_14_By, Cls_Custom_14_Sell,Custom_15_By, Custom_15_Sell, Cls_Custom_15_By, Cls_Custom_15_Sell,Custom_16_By, Custom_16_Sell, Cls_Custom_16_By, Cls_Custom_16_Sell;

  bool
   Modific=true,
   Ans  =false,                     // Îòâåò ñåðâåðà ïîñëå çàêðûòèÿ
   Cls_B=false,                     // Êðèòåðèé äëÿ çàêðûòèÿ  Buy
   Cls_S=false,                     // Êðèòåðèé äëÿ çàêðûòèÿ  Sell
   Opn_B=false,                     // Êðèòåðèé äëÿ îòêðûòèÿ  Buy
   Opn_S=false,                     // Êðèòåðèé äëÿ îòêðûòèÿ  Sell
   S_Bar=false;                 // Êðèòåðèé äëÿ Sleep Bar
   
   
   

  
// Comment        //  Áëîê êîììåíòàðèåâ â îêíå. Îòêëþ÷åíî (íî ìîæíî âêëþ÷èòü, ïðîñòî ñòåðåâ çäåñü //øå÷êè)
//  ( 
//  "TIME: ",TimeToStr(TimeCurrent()),
//  "\n",
//  "Order-s paramethers (##,TP,SL,LOT): |",OrderTicket(),"|",OrderStopLoss(),"|",OrderTakeProfit(),"|",OrderLots(),"|",
//  "\n", 
//  "ID_Number: ", ID_of_EA,
//  "\n",
//  "StakeType, #:",StakeMode,                                                   
//  "\n", 
//  "% for #3: ",Percents, 
//  "\n",
//  "StopOut: ", AccountStopoutLevel(), 
//  "\n",
//  "Spread: ", MarketInfo(Symbol(),MODE_SPREAD),
//  "\n",
//  "Leverage, 1 to: ",AccountLeverage(),
//  "\n",
//  "Broker", TerminalCompany( ) ,
//  "\n",
//  "\n",
//  "\n", // ìåæäó "\n", ïèõàþòñÿ íîâûå ÷èñëà äëÿ îòîáðàæåíèÿ.
//  "\n"
//  );      // Ðåñóðñû åñòü î÷åíü æàäíî, ïîòîìó è îòêëþ÷èë.

// It's probably, most resoure-eating thing for the backtest. I'll freeze it another time, but still... 
// Sorry, you can restore it quickly, but still...  





  
//-------------------- Pause after closed order. ------------------ 3 -


  
int time0 = 0;                                                  // Necessary booleans sorting...
for(int t0 = OrdersHistoryTotal();t0>=0;t0--)                   // Search among closed orders

//----------------------------------------------------------------------

//-------------------- Pre-Work Sorting-------------------------- 4 -    
     
     
   if(Work==false)                              // Critical error
     {
      Alert("Îòêëþ÷åíî, êðèòè÷åñêàÿ îøèáêà.");
      return;                                   // Exit from start()
     }
//------------------------------------------------------------------------------    
     
     
//------------------------------Ó÷¸ò îðäåðîâ--------------------------------- 4 --
Symb=Symbol();                               // Íàçâàíèå ôèí.èíñòð.
   Total=0;                                     // Êîëè÷åñòâî îðäåðîâ
   for(int i=1; i<=OrdersTotal(); i++)          // Öèêë ïåðåáîðà îðäåð
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Åñëè åñòü ñëåäóþùèé
        {                                       // Àíàëèç îðäåðîâ:
         if (OrderSymbol()!=Symb)continue;      // Íå íàø ôèí. èíñòðóì
         if (OrderType()>1)                     // Ïîïàëñÿ îòëîæåííûé
           {
            Alert("Îáíàðóæåí îòëîæåííûé îðäåð. Ýêñïåðò íå ðàáîòàåò.");
            return;                             // Âûõîä èç start()
           }
         Total++;                               // Ñ÷¸ò÷èê ðûíî÷í. îðä
         if (Total>1)                           // Íå áîëåå îäíîãî îðä --                                 ÎËÎËÎ, íå áîëüøå îäíîãî îðäåðà! Ýòî íàäî áû âûïèëèòü...
           {
            Alert("Íåñêîëüêî ðûíî÷íûõ îðäåðîâ. Ýêñïåðò íå ðàáîòàåò.");
            return;                             // Âûõîä èç start()
           }
         Ticket=OrderTicket();                  // Íîìåð âûáðàíí. îðä.
         Tip   =OrderType();                    // Òèï âûáðàííîãî îðä.
         Price =OrderOpenPrice();               // Öåíà âûáðàíí. îðä.
         SL    =OrderStopLoss();                // SL âûáðàííîãî îðä.
         TP    =OrderTakeProfit();              // TP âûáðàííîãî îðä.
         Lot   =OrderLots();                    // Êîëè÷åñòâî ëîòîâ
        }
     }  
  
 
//---------------------------Òîðãîâûå êðèòåðèè------------------------------------ 5 --


   
//ATR for TP and SL is here------------------------------     

if(ATR_SL==true && iATR(NULL,0,ATR_Period,1)>=ATR_Reach)
StopLoss=iATR(NULL,0,ATR_Period,0)*ATR_Multiply/0.0001;    //Yes, not the "price", but the "pips".          

if(ATR_TP==true && iATR(NULL,0,ATR_Period,1)>=ATR_Reach)
TakeProfit=iATR(NULL,0,ATR_Period,0)*ATR_Multiply/0.0001;


//MAs------------------------------------
 if(otkr_MA==true)
              {
               if( iMA(NULL,0,MA1,0,MA_sort_avoidit,PRICE_CLOSE,Shift_ma)>iMA(NULL,0,MA2,0,MODE_SMA,PRICE_CLOSE,Shift_ma))
                 {
                  MA_By =true;// Normally SMA, but here is my edit.
                 } 
               if(iMA(NULL,0,MA1,0,MA_sort_avoidit,PRICE_CLOSE,Shift_ma)<iMA(NULL,0,MA2,0,MODE_SMA,PRICE_CLOSE,Shift_ma))               
                 {
                  MA_Sell =true;
                 } 
               }
               
 if(zakr_MA==true)
              {
               if(iMA(NULL,0,MA1,0,MA_sort_avoidit,PRICE_CLOSE,Shift_ma)>iMA(NULL,0,MA2,0,MODE_SMA,PRICE_CLOSE,Shift_ma))
                 {
                  Cls_MA_Sell=true;
                 } 
               if(iMA(NULL,0,MA1,0,MA_sort_avoidit,PRICE_CLOSE,Shift_ma)<iMA(NULL,0,MA2,0,MODE_SMA,PRICE_CLOSE,Shift_ma))
                 {
                  Cls_MA_By=true;
                 } 
               }             
//Ñòîõàñòèê-------------------------------
 if(otkr_Stoh==true)
          {
               if(iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,0,1)>iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,1,1)
                  && iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,1,1)<zoneBUY)
                   {
                   Stoh_By =true;
                   }
              if(iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,0,1)<iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,1,1)
                 && iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,1,1)>zoneSELL)
                  {
                  Stoh_Sell =true;
                  } 
               }      
               
 if(zakr_Stoh==true)
          {
              if(iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,0,1)>iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,1,1)
                 && iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,1,1)<zoneBUY)
                   {
                   Cls_Stoh_Sell=true;
                   }
             if(iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,0,1)<iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,1,1)
                 && iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,1,1)>zoneSELL)
                  {
                  Cls_Stoh_By=true;
                  } 
               }                
//Awesome--------------------------------
  if(otkr_AO==true)
        {
              if(iAO(NULL,0,1)<iAO(NULL,0,2)) 
                  {
                   AO_By =true;
                  }    
              if(iAO(NULL,0,1)>iAO(NULL,0,2))
                  {
                   AO_Sell =true;
                  } 
               } 
               
if(zakr_AO==true)
        {
           if(iAO(NULL,0,1)>iAO(NULL,0,2))     
                  {                          
                   Cls_AO_Sell=true;         
                  }                          
           if(iAO(NULL,0,1)<iAO(NULL,0,2))     
                  {
                   Cls_AO_By=true;
                  } 
               }
//Fractals--------------------------------
               
  if(otkr_Fractals==true)
        {
              if(iFractals(NULL,0,1,0)<PRICE_CLOSE)
                  {                    
                   Fractals_By =true;
                  }    
              if(iFractals(NULL,0,2,0)>PRICE_CLOSE)
                  {
                   Fractals_Sell = true;
                  } 
               } 
               
if(zakr_Fractals==true)
        {
           if (iFractals(NULL,0,1,0)<PRICE_CLOSE)
                  {             
                   Cls_Fractals_Sell=true;
                  }    
            if(iFractals(NULL,0,2,0)>PRICE_CLOSE) 
                  {
                   Cls_Fractals_By = true;
                  } 
               }                
//Accelerator---------------------------
   if(otkr_AC==true)
               {          
               if (iAC(NULL,0,0)>=0 && iAC(NULL,0,0)>iAC(NULL,0,1) && iAC(NULL,0,1)>iAC(NULL,0,2) || iAC(NULL,0,0)<=0 && iAC(NULL,0,0)>iAC(NULL,0,1) && iAC(NULL,0,1)>iAC(NULL,0,2) && iAC(NULL,0,2)>iAC(NULL,0,3)) 
                  {
                   AC_By =true;
                  }    
               if (iAC(NULL,0,0)<=0 && iAC(NULL,0,0)<iAC(NULL,0,1) && iAC(NULL,0,1)<iAC(NULL,0,2) || iAC(NULL,0,0)>=0 && iAC(NULL,0,0)<iAC(NULL,0,1) && iAC(NULL,0,1)<iAC(NULL,0,2) && iAC(NULL,0,2)<iAC(NULL,0,3)) 
                  {
                   AC_Sell =true;
                  }  
                }   
            // Seletsky's AC. I don't know, why he detailed it...
  if(zakr_AC==true)
              {          
              if (iAC(NULL,0,0)>=0 && iAC(NULL,0,0)>iAC(NULL,0,1) && iAC(NULL,0,1)>iAC(NULL,0,2) || iAC(NULL,0,0)<=0 && iAC(NULL,0,0)>iAC(NULL,0,1) && iAC(NULL,0,1)>iAC(NULL,0,2) && iAC(NULL,0,2)>iAC(NULL,0,3)) 
                  {
                    Cls_AC_Sell=true;
                  }    
             if (iAC(NULL,0,0)<=0 && iAC(NULL,0,0)<iAC(NULL,0,1) && iAC(NULL,0,1)<iAC(NULL,0,2) || iAC(NULL,0,0)>=0 && iAC(NULL,0,0)<iAC(NULL,0,1) && iAC(NULL,0,1)<iAC(NULL,0,2) && iAC(NULL,0,2)<iAC(NULL,0,3)) 
                  {
                   Cls_AC_By=true;
                  }  
               }   
 //Demarker---------------------------- 
 if(otkr_Dema==true) 
             {      
              if (iDeMarker(NULL, 0, DeMa_period, 1)<niz_ur) 
                  {
                   Dema_By =true;
                  }    
             if (iDeMarker(NULL, 0, DeMa_period, 1)>verx_ur) 
                  {
                   Dema_Sell =true;
                  }  
               }
          
 if(zakr_Dema==true) 
              {      
            if (iDeMarker(NULL, 0, DeMa_period, 1)<niz_ur) 
                  {
                   Cls_Dema_Sell=true;
                  }    
            if (iDeMarker(NULL, 0, DeMa_period, 1)>verx_ur) 
                  {
                   Cls_Dema_By=true;
                  }  
               }     
  //CCI:------------------
 if(otkr_CCI==true)
             {      
            if (iCCI(NULL, 0,CCI_period,PRICE_MEDIAN,0)>CCI_Level)
                  {
                   CCI_By =true;
                  }    
            if (iCCI(NULL, 0,CCI_period,PRICE_MEDIAN,0)<-CCI_Level)
                  {
                   CCI_Sell =true; 
                  } 
               }                   
                   
   if(zakr_CCI==true)
               {      
           if (iCCI(NULL, 0,CCI_period,PRICE_MEDIAN, 1)<-CCI_Level) // Not hook.
                  {
                   Cls_CCI_Sell=true;
                  }    
           if (iCCI(NULL, 0,CCI_period,PRICE_MEDIAN, 1)>CCI_Level) 
                  {
                   Cls_CCI_By=true;
                  } 
               } 


//RSI---------------------------------------------------------------------
  
    if(otkr_RSI==true)
              {
            if (iRSI(NULL,0,RSI_Period,1,0)>RSI_High)
                  {
                   RSI_By=true;
                  }    
            if (iRSI(NULL,0,RSI_Period,1,0)<RSI_Low)
                  {
                   RSI_Sell=true;
                  } 
               }                   
      
   if(zakr_RSI==true)
              {
           if (iRSI(NULL,0,RSI_Period,1,0)>RSI_High)
                  {
                   Cls_RSI_Sell=true;
                  }    
           if (iRSI(NULL,0,RSI_Period,1,0)<RSI_Low)
                  {
                   Cls_RSI_By=true;
                  } 
               }            
  
//MFI-------------------------------             
  
    
    if(otkr_MFI==true)
              {
            if (iMFI(NULL,0,MFI_Period,0)>MFI_High)
                  {
                   MFI_By=true;
                  }    
            if (iMFI(NULL,0,MFI_Period,0)<MFI_Low)
                  {
                   MFI_Sell=true;
                  } 
               }                   
      
   if(zakr_MFI==true)
                 {      
           if (iMFI(NULL,0,MFI_Period,0)>MFI_High/2+MFI_Low/2) // òóò çàêðûòèå ïî ñåðåäèíå
                  {
                   Cls_MFI_Sell=true;
                  }    
           if (iMFI(NULL,0,MFI_Period,0)<MFI_High/2+MFI_Low/2)
                  {
                   Cls_MFI_By=true;
                  } 
               }   
               
//WPR--------------------------------         
  
   if(otkr_WPR==true)
              {
            if (iWPR(NULL,0,WPR_Period,WPR_Shift)>-20)
                  {
                   WPR_By=true;
                  }    
            if (iWPR(NULL,0,WPR_Period,0)<-80)
                  {
                   WPR_Sell=true;
                  } 
               }                   
      
   if(zakr_WPR==true)
                 {      
           if (iWPR(NULL,0,WPR_Period,0)>-20) // I hope you get it.
                  {
                   Cls_WPR_Sell=true;
                  }    
           if (iWPR(NULL,0,WPR_Period,0)<-80)
                  {
                   Cls_WPR_By=true;
                  } 
               }   
  
  
  
  
//MACD-------------------------------      
  
    
   if(otkr_MACD==true)
              {
            if (iMACD(NULL,0,MACD_Fast,MACD_Slow,MACD_Signal,1,0,0)>0)
                  {
                   MACD_By=true;
                  }    
            if (iMACD(NULL,0,MACD_Fast,MACD_Slow,MACD_Signal,1,0,0)<0)
                  {
                   MACD_Sell=true;
                  } 
               }                   
      
   if(zakr_MACD==true)
                 {      
           if (iMACD(NULL,0,MACD_Fast,MACD_Slow,MACD_Signal,1,0,0)>0)
                  {
                   Cls_MACD_Sell=true;
                  }    
           if (iMACD(NULL,0,MACD_Fast,MACD_Slow,MACD_Signal,1,0,0)<0)
                  {
                   Cls_MACD_By=true;
                  } 
               }           
//OsMA-------------------------------      
  
    
   if(otkr_OsMA==true)
              {
            if (iOsMA(NULL,0,MACD_Fast,MACD_Slow,MACD_Signal,1,0)>0)
                  {
                   MACD_By=true;
                  }    
            if (iOsMA(NULL,0,MACD_Fast,MACD_Slow,MACD_Signal,1,0)<0)
                  {
                   MACD_Sell=true;
                  } 
               }                   
      
   if(zakr_OsMA==true)
                 {      
           if (iOsMA(NULL,0,MACD_Fast,MACD_Slow,MACD_Signal,1,0)>0)
                  {
                   Cls_MACD_Sell=true;
                  }    
           if (iOsMA(NULL,0,MACD_Fast,MACD_Slow,MACD_Signal,1,0)<0)
                  {
                   Cls_MACD_By=true;
                  } 
               }            
  

  
//ADX-------------------------------             
    
   if(otkr_ADX==true)
              {
            if (iADX(NULL,0,ADX_Period,1,0,0)>70)
                  {
                   ADX_By=true;
                  }    
            if (iADX(NULL,0,ADX_Period,1,0,0)<30)
                  {
                   ADX_Sell=true;
                  } 
               }                   
      
   if(zakr_ADX==true)
                 {      
           if (iADX(NULL,0,ADX_Period,1,0,0)>70)
                  {
                   Cls_ADX_Sell=true;
                  }    
           if (iADX(NULL,0,ADX_Period,1,0,0)<30)
                  {
                   Cls_ADX_By=true;
                  } 
               }    
               
//SAR------------------------------- 
      
   
    
   if(otkr_SAR==true)
              {
            if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,0)>Close[0])
                  {
                   SAR_By=true;
                  }    
            if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,0)<Close[0])
                  {
                   SAR_Sell=true;
                  } 
               }                   
      
   if(zakr_SAR==true)
                 {      
           if (iSAR(NULL,0,SAR_Step,SAR_MaxStep,0)>Close[0])
                  {
                   Cls_SAR_Sell=true;
                  }    
           if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,0)<Close[0])
                  {
                   Cls_SAR_By=true;
                  } 
               }              



// A-a-a-nd the custom indicators. I bet you were searching for some newbie-for possibility to use custom indicators.
//--------Custom_1__------------------
if(otkr_Custom_1==true)  
     {
       if(iCustom(NULL,0,"ZigZag",0,0)>PRICE_CLOSE)     // You know, you're supposed to tune the custom indicator by yourself.    
       {                                                // I mean, all the tunes are saved in code (as basiccal\standard)
       Custom_1__By=true;                               // As a rule, the custom inds don't need any tunes... mostly...
       }                                                // Well, if any problems, you just need to edit an indicator simply by changing the digits "in case".
                       //"Theese \/  ones"   // Snippet:   between name ("ZZ") and last two (,0,0)) digits you can put variables 
       if(iCustom(NULL,0,"ZigZag",0,0)<PRICE_CLOSE)
       {
       Custom_1__Sell=true;
       }
       
     }
     
if(zakr_Custom_1==true)
     {
       if(iCustom(NULL,0,"ZigZag",0,0)>PRICE_CLOSE)  
       {
       Cls_Custom_1__By=true;// _1__ , because there were up to 16 custom inds aviliable - you could find _10_, _16_, _9__...
       }
       
       if(iCustom(NULL,0,"ZigZag",0,0)<PRICE_CLOSE)
       {
       Cls_Custom_1__Sell=true;
       }
       
     }
     
//--------Custom_2__------------------
if(otkr_Custom_2==true)  
     {
       if(iCustom(NULL,0,"ZigZag",0,0)>PRICE_CLOSE)        
       {
       Custom_2__By=true;
       }
       
       if(iCustom(NULL,0,"ZigZag",0,0)<PRICE_CLOSE)
       {
       Custom_2__Sell=true;
       }
       
     }
     
if(zakr_Custom_2==true)
     {
       if(iCustom(NULL,0,"ZigZag",0,0)>PRICE_CLOSE) // Lamest ever :)
       {
       Cls_Custom_2__By=true;
       }
       
       
       
       if(iCustom(NULL,0,"ZigZag",0,0)<PRICE_CLOSE)
       {
       Cls_Custom_2__Sell=true;
       }
       
     }
     
//--------Custom_3__------------------
if(otkr_Custom_3==true)  
     {
       if(iCustom(NULL,0,"ZigZag",0,0)>PRICE_CLOSE)         
       {                                            
       Custom_3__By=true;
       }
       
       if(iCustom(NULL,0,"ZigZag",0,0)<PRICE_CLOSE)
       {
       Custom_3__Sell=true;
       }
       
     }
     
if(zakr_Custom_3==true)
     {
       if(iCustom(NULL,0,"ZigZag",0,0)>PRICE_CLOSE)
       {
       Cls_Custom_3__By=true;
       }
       
       if(iCustom(NULL,0,"ZigZag",0,0)<PRICE_CLOSE)
       {
       Cls_Custom_3__Sell=true;
       }
       
     }
     
     
//--------Custom_4__------------------
if(otkr_Custom_4==true)  
     {
       if(iCustom(NULL,0,"MestoDlyaIndicatora",0,0)>PRICE_CLOSE) // Çàìåíà: Íàçâàíèå çàãðóæåííîãî èíäèêàòîðà íà ìåñòî áèðþçîâîé íàäïèñè. 
         {                                                    
       Custom_4__By=true;
       }
       
       if(iCustom(NULL,0,"MestoDlyaIndicatora",0,0)<PRICE_CLOSE)
       {
       Custom_4__Sell=true;
       }
       
     }
     
if(zakr_Custom_4==true)
     {
       if(iCustom(NULL,0,"MestoDlyaIndicatora",0,0)>PRICE_CLOSE)
       {
       Cls_Custom_4__By=true;
       }
       
       if(iCustom(NULL,0,"MestoDlyaIndicatora",0,0)<PRICE_CLOSE)
       {
       Cls_Custom_4__Sell=true;
       }
       
     }
     
     

//--------Custom_5__-Custom_16_ are earsed. They all are supposed to be restored here maunally. I. E. "copy, paste, change some digits"

// Here are only 5th and 16th. Other ones may be simply copied and pasted.

//--------Custom__5------------------
//if(otkr_Custom__5==true)  
//     {
//       if(iCustom(NULL,0,"ZigZag",0,0)>PRICE_CLOSE)         
//         {                                                    
//       Custom__5_By=true;
//       }
//       
//       if(iCustom(NULL,0,"ZigZag",0,0)<PRICE_CLOSE)
//       {
//       Custom__5_Sell=true;
//       }
//       
//     }
//     
//if(zakr_Custom__5==true)
//     {
//       if(iCustom(NULL,0,"ZigZag",0,0)>PRICE_CLOSE) - 16th is here as an example. Try to barely de"//" it, then solve the "errors" occured.
//       {
//       Cls_Custom__5_By=true;
//       }
//       
//       if(iCustom(NULL,0,"ZigZag",0,0)<PRICE_CLOSE)
//       {
//       Cls_Custom__5_Sell=true;
//       }
//       
//     }





//--------Custom_16_------------------
//if(otkr_Custom_16==true)  
//     {
//       if(iCustom(NULL,0,"ZigZag",0,0)>PRICE_CLOSE)         
//         {                                                    
//       Custom_16_By=true;
//       }
//       
//       if(iCustom(NULL,0,"ZigZag",0,0)<PRICE_CLOSE)
//       {
//       Custom_16_Sell=true;
//       }
//       
//     }
//     
//if(zakr_Custom_16==true)
//     {
//       if(iCustom(NULL,0,"ZigZag",0,0)>PRICE_CLOSE) - 16th is here as an example. Try to barely de"//" it, then solve the "errors" occured.
//       {
//       Cls_Custom_16_By=true;
//       }
//       
//       if(iCustom(NULL,0,"ZigZag",0,0)<PRICE_CLOSE)
//       {
//       Cls_Custom_16_Sell=true;
//       }
//       
//     }


          
//--------------------------------Open Buy and Sell------------------------------------------  7  ----//

  if (MA_By ==true||otkr_MA==false  &&
    Stoh_By ==true||otkr_Stoh==false&&
      AO_By ==true||otkr_AO==false  &&
Fractals_By ==true||otkr_Fractals==false&&
      AC_By ==true||otkr_AC==false  &&
    Dema_By ==true||otkr_Dema==false&&
     CCI_By ==true||otkr_CCI==false &&
     RSI_By ==true||otkr_RSI==false &&
     MFI_By ==true||otkr_MFI==false &&
     WPR_By ==true||otkr_WPR==false && 
     MACD_By==true||otkr_MACD==false && 
     OsMA_By==true||otkr_OsMA==false && 
     ADX_By ==true||otkr_ADX==false &&
     SAR_By ==true||otkr_SAR==false &&
     Custom_1__By==true||otkr_Custom_1==false&&  
     Custom_2__By==true||otkr_Custom_2==false&&
     Custom_3__By==true||otkr_Custom_3==false&&
     Custom_4__By==true||otkr_Custom_4==false
//&& 										// Ëèøíåå îòêëþ÷åíî.
//     Custom_5__By==true||otkr_Custom_5==false&&        // Íà ñëó÷àé. åñëè 4 èíäèêàòîðîâ ìàëî...
//     Custom_6__By==true||otkr_Custom_6==false&&
//     Custom_7__By==true||otkr_Custom_7==false&&
//     Custom_8__By==true||otkr_Custom_8==false&&
//     Custom_9__By==true||otkr_Custom_9==false&&
//     Custom_10_By==true||otkr_Custom_10==false&&
//     Custom_11_By==true||otkr_Custom_11==false&&
//     Custom_12_By==true||otkr_Custom_12==false&&
//     Custom_13_By==true||otkr_Custom_13==false&&
//     Custom_14_By==true||otkr_Custom_14==false&&
//     Custom_15_By==true||otkr_Custom_15==false&&
//     Custom_16_By==true||otkr_Custom_16==false    
                                                  
     
     )
     {                                          
      Opn_B=true;
     }
//---------    
  if (  MA_Sell==true||otkr_MA==false   &&
     Stoh_Sell ==true||otkr_Stoh==false &&
      AO_Sell  ==true||otkr_AO==false   &&
      Fractals_Sell==true||otkr_Fractals==false &&
      AC_Sell  ==true||otkr_AC==false   &&
     Dema_Sell ==true||otkr_Dema==false &&
      CCI_Sell ==true||otkr_CCI==false  &&          
      RSI_Sell ==true||otkr_RSI==false  &&
      MFI_Sell ==true||otkr_MFI==false  &&
      WPR_Sell ==true||otkr_WPR==false  &&
      MACD_Sell==true||otkr_MACD==false &&
      OsMA_Sell==true||otkr_OsMA==false && 
      ADX_Sell ==true||otkr_ADX==false &&
      SAR_Sell ==true||otkr_SAR==false &&
     Custom_1__Sell==true||otkr_Custom_1==false&&  
     Custom_2__Sell==true||otkr_Custom_2==false&&
     Custom_3__Sell==true||otkr_Custom_3==false&&
     Custom_4__Sell==true||otkr_Custom_4==false
//&&
//     Custom_5__Sell==true||otkr_Custom_5==false&&        // Íà ñëó÷àé. åñëè 4 èíäèêàòîðîâ ìàëî...
//     Custom_6__Sell==true||otkr_Custom_6==false&&
//     Custom_7__Sell==true||otkr_Custom_7==false&&
//     Custom_8__Sell==true||otkr_Custom_8==false&&
//     Custom_9__Sell==true||otkr_Custom_9==false&&
//     Custom_10_Sell==true||otkr_Custom_10==false&&
//     Custom_11_Sell==true||otkr_Custom_11==false&&
//     Custom_12_Sell==true||otkr_Custom_12==false&&
//     Custom_13_Sell==true||otkr_Custom_13==false&&
//     Custom_14_Sell==true||otkr_Custom_14==false&&
//     Custom_15_Sell==true||otkr_Custom_15==false&&
//     Custom_16_Sell==true||otkr_Custom_16==false       
) 
     {                                          
      Opn_S=true;
     } 
//--------------------------------Closing-----------------------------------------------//
if  (Cls_MA_By  ==true||zakr_MA==false  &&
     Cls_Stoh_By==true||zakr_Stoh==false&&
     Cls_AO_By  ==true||zakr_AO==false  &&
     Cls_Fractals_By==true||zakr_Fractals==false &&
     Cls_AC_By  ==true||zakr_AC==false  &&
     Cls_Dema_By==true||zakr_Dema==false&&    
     Cls_CCI_By ==true||zakr_CCI==false &&  
     Cls_RSI_By ==true||zakr_RSI==false &&    
     Cls_MFI_By ==true||zakr_MFI==false &&    
     Cls_WPR_By ==true||zakr_WPR==false &&    
     Cls_MACD_By==true||zakr_MACD==false&&  
     Cls_OsMA_By==true||zakr_OsMA==false &&         
     Cls_ADX_By ==true||zakr_ADX==false &&        
     Cls_SAR_By ==true||zakr_SAR==false &&
     Cls_Custom_1__By==true||zakr_Custom_1==false&&
     Cls_Custom_2__By==true||zakr_Custom_2==false&&
     Cls_Custom_3__By==true||zakr_Custom_3==false&&
     Cls_Custom_4__By==true||zakr_Custom_4==false
//&&
//     Cls_Custom_5__By==true||zakr_Custom_5==false&&
//     Cls_Custom_6__By==true||zakr_Custom_6==false&&
//     Cls_Custom_7__By==true||zakr_Custom_7==false&&
//     Cls_Custom_8__By==true||zakr_Custom_8==false&&
//     Cls_Custom_9__By==true||zakr_Custom_9==false&&
//     Cls_Custom_10_By==true||zakr_Custom_10==false&&
//     Cls_Custom_11_By==true||zakr_Custom_11==false&&
//     Cls_Custom_12_By==true||zakr_Custom_12==false&&
//     Cls_Custom_13_By==true||zakr_Custom_13==false&&
//     Cls_Custom_14_By==true||zakr_Custom_14==false&&
//     Cls_Custom_15_By==true||zakr_Custom_15==false&&
//     Cls_Custom_16_By==true||zakr_Custom_16==false
      ) 
     {                                          
      Cls_B=true;
     }   
 if (Cls_MA_Sell ==true||zakr_MA==false  &&
   Cls_Stoh_Sell ==true||zakr_Stoh==false&&
     Cls_AO_Sell ==true||zakr_AO==false  &&
     Cls_Fractals_Sell==true||zakr_Fractals==false &&
     Cls_AC_Sell ==true||zakr_AC==false  &&
    Cls_Dema_Sell==true||zakr_Dema==false&&    
     Cls_CCI_Sell==true||zakr_CCI==false &&        
     Cls_RSI_Sell==true||zakr_RSI==false &&    
     Cls_MFI_Sell==true||zakr_MFI==false &&    
     Cls_WPR_Sell==true||zakr_WPR==false &&    
    Cls_MACD_Sell==true||zakr_MACD==false&&  
    Cls_OsMA_Sell==true||zakr_OsMA==false&& 
     Cls_ADX_Sell==true||zakr_ADX==false && 
     Cls_SAR_Sell==true||zakr_SAR==false &&
     Cls_Custom_1__Sell==true||zakr_Custom_1==false&&
     Cls_Custom_2__Sell==true||zakr_Custom_2==false&&
     Cls_Custom_3__Sell==true||zakr_Custom_3==false&&
     Cls_Custom_4__Sell==true||zakr_Custom_4==false
// &&
//     Cls_Custom_5__Sell==true||zakr_Custom_5==false&&
//     Cls_Custom_6__Sell==true||zakr_Custom_6==false&& 
//     Cls_Custom_7__Sell==true||zakr_Custom_7==false&& 
//     Cls_Custom_8__Sell==true||zakr_Custom_8==false&&
//     Cls_Custom_9__Sell==true||zakr_Custom_9==false&&
//     Cls_Custom_10_Sell==true||zakr_Custom_10==false&&
//     Cls_Custom_11_Sell==true||zakr_Custom_11==false&&
//     Cls_Custom_12_Sell==true||zakr_Custom_12==false&&
//     Cls_Custom_13_Sell==true||zakr_Custom_13==false&&
//     Cls_Custom_14_Sell==true||zakr_Custom_14==false&&
//     Cls_Custom_15_Sell==true||zakr_Custom_15==false&&
//     Cls_Custom_16_Sell==true||zakr_Custom_16==false
         )    // - there must be the parenthis
     
                 
     {                        
      Cls_S=true;
     } 




//-----------------------------Closing the orders (by signals from previous part :)   )---------------------------------- 8 --
//-----------------------------Çàêðûòèå îðäåðîâ---------------------------------- 6 --
  
   while(true)                                  // Öèêë çàêðûòèÿ îðä.
     {
      if (Tip==0 && Cls_B==true)                // Îòêðûò îðäåð Buy..Óñëîâèÿ çàêðûòèÿ Buy
        {                                       //è åñòü êðèòåðèé çàêð
         Alert("Ïîïûòêà çàêðûòü Buy ",Ticket,". Îæèäàíèå îòâåòà..");
         RefreshRates();                        // Îáíîâëåíèå äàííûõ
         Ans=OrderClose(Ticket,Lot,Bid,2);      // Çàêðûòèå Buy
         if (Ans==true)                         // Ïîëó÷èëîñü :)
           {
            Alert ("Çàêðûò îðäåð Buy ",Ticket);
            
            break;                              // Âûõîä èç öèêëà çàêð
           }
         if (Fun_Error(GetLastError())==1)      // Îáðàáîòêà îøèáîê
            continue;                           // Ïîâòîðíàÿ ïîïûòêà
         return;                                // Âûõîä èç start()
        }

      if (Tip==1 && Cls_S==true)                // Îòêðûò îðäåð Sell..Óñëîâèÿ çàêðûòèÿ Sell
        {                                       // è åñòü êðèòåðèé çàêð
         Alert("Ïîïûòêà çàêðûòü Sell ",Ticket,". Îæèäàíèå îòâåòà..");
         RefreshRates();                        // Îáíîâëåíèå äàííûõ
         Ans=OrderClose(Ticket,Lot,Ask,2);      // Çàêðûòèå Sell
         if (Ans==true)                         // Ïîëó÷èëîñü :)
           {
            Alert ("Çàêðûò îðäåð Sell ",Ticket);
            
            break;                              // Âûõîä èç öèêëà çàêð
           }
         if (Fun_Error(GetLastError())==1)      // Îáðàáîòêà îøèáîê
            continue;                           // Ïîâòîðíàÿ ïîïûòêà
         return;                                // Âûõîä èç start()
        }
      break;                                    // Âûõîä èç while
     }
    
 
//-----------------------------Ñòîèìîñòü îðäåðîâ---------------------------------- 7 --
   
RefreshRates();                              // Îáíîâëåíèå äàííûõ   
 
    int time = 0;double profit = 0;           //îáüÿâëÿåì íåîáõîäèìûå íàì ïåðåìåííûå êóäà ìû ïîëîæèì èíòåðåñóþùèå íàñ õàðàêòåðèñòèêè îðäåðà

for(int t = OrdersHistoryTotal();t>=0;t--)   // Ïåðåáèðàåì âñå çàêðûòûå îðäåðà
{
  if(OrderSelect(t,SELECT_BY_POS,MODE_HISTORY))//åñëè îðäåð ñ òàêèì íîìåðîì (i) â ñïèñêå çàêðûòûõ îðäåðîâ åñòü ( íå ïóòàòü ñ òèêåòîì)
  {
    if(OrderSymbol() == Symbol())       //åñëè âûáðàííûé îðäåð áûë îòêðûò ïî íàøåé âàëþòíîé ïàðå
    {
      if(time<OrderCloseTime())        //(ñðàâíèâàåì åãî ñ õðàíÿùèìñÿ â ïåðîåìåííîé time)
       
      {
        time=OrderCloseTime();          //åñëè âðåìÿ çàêðûòèÿ îðäåðà áîëüøå - ëîæèì åãî â ïåðåìåííóþ
        profit=OrderProfit();          //è çàîäíî çàïîìèíàåì ïðèáûëü îðäåðà
        lot   =OrderLots();                    // Êîëè÷åñòâî ëîòîâ
      }
    }
  }
}











//-------------------------Money Management Block -------------------- 10 ---




//-----------------

if (Opn_B==true||Opn_S==true)
{
if (StakeMode==1&&OrdersTotal()<1)Lts=Lts1;
if (StakeMode==3&&OrdersTotal()<1)Lts=NormalizeDouble(AccountEquity()*Percents/100/1000, 2); // èç "hardprofit" EA (by chris10).
   {
if(profit == 0 && StakeMode==2 && OrdersTotal()<1)  {Lts=Lts1;}     //   
if(profit >= 0 && StakeMode==2 && OrdersTotal()<1)  {Lts=Lts1;}     //
if(profit <  0 && StakeMode==2 && OrdersTotal()<1)  {Lts=lot*IK;}   //Òàêîé âîò Ìàðòèíãåéë.
   }
}




        if (Lts*One_Lot > Free)                      // Ëîò äîðîæå ñâîáîäí.     
         {     
          Alert(" Íå õâàòàåò äåíåã íà ", Lts," ëîòîâ");      
          return;                                   // Âûõîä èç start()     
          }
   
//------------------------------------------------------------------------------ 


//------------------------------Îòêðûòèå îðäåðîâ--------------------------------- 8 --

   while(true)                                  // Öèêë îòêðûòèÿ îðä.
   
     {
      if (Total==0 && Opn_B==true && Cls_B==false)              // Îòêðûòûõ îðä. íåò +
        {                                       // êðèòåðèé îòêð. Buy
         RefreshRates();                        // Îáíîâëåíèå äàííûõ
         SL=Bid - New_Stop(StopLoss)*Point;     // Âû÷èñëåíèå SL îòêð.
         TP=Bid + New_Stop(TakeProfit)*Point;   // Âû÷èñëåíèå TP îòêð.
         Alert("Ïîïûòêà îòêðûòü Buy. Îæèäàíèå îòâåòà..");
         Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,3,SL,TP);//Îòêðûòèå Buy
         if (Ticket > 0)                        // Ïîëó÷èëîñü :)
           {
            Alert ("Îòêðûò îðäåð Buy ",Ticket);
            return;                             // Âûõîä èç start()
           }
         if (Fun_Error(GetLastError())==1)      // Îáðàáîòêà îøèáîê
            continue;                           // Ïîâòîðíàÿ ïîïûòêà
         return;                                // Âûõîä èç start()
        }
      if (Total==0 && Opn_S==true && Cls_S==false)              // Îòêðûòûõ îðä. íåò +
        {                                       // êðèòåðèé îòêð. Sell
         RefreshRates();                        // Îáíîâëåíèå äàííûõ
         SL=Ask + New_Stop(StopLoss)*Point;     // Âû÷èñëåíèå SL îòêð.
         TP=Ask - New_Stop(TakeProfit)*Point;   // Âû÷èñëåíèå TP îòêð.
         Alert("Ïîïûòêà îòêðûòü Sell. Îæèäàíèå îòâåòà..");
         Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,3,SL,TP);//Îòêðûòèå Sel
         if (Ticket > 0)                        // Ïîëó÷èëîñü :)
           {
            Alert ("Îòêðûò îðäåð Sell ",Ticket);
            return;                             // Âûõîä èç start()
           }
         if (Fun_Error(GetLastError())==1)      // Îáðàáîòêà îøèáîê
            continue;                           // Ïîâòîðíàÿ ïîïûòêà
         return;                                // Âûõîä èç start()
        }
      break;                                    // Âûõîä èç while
     }
   return;                                      // Âûõîä èç start()
  }
  
//------------------------------------------------------------------------------   

//--------------------------Ô-èÿ îáðàáîò îøèáîê------------------------------------ 10 --
int Fun_Error(int Error)                      
  {
   switch(Error)
     {                                          // Ïðåîäîëèìûå îøèáêè            
      case  4: Alert("Òîðãîâûé ñåðâåð çàíÿò. Ïðîáóåì åù¸ ðàç..");
         Sleep(3000);                           // Ïðîñòîå ðåøåíèå
         return(1);                             // Âûõîä èç ôóíêöèè
      case 130:Alert("Íåïðàâèëüíûå ñòîïû");
         while(RefreshRates()==false)           // Äî íîâîãî òèêà
            Sleep(1);                            // Çàäåðæêà â öèêëå
         return(1);                             // Âûõîä èç ôóíêöèè   
      case 135:Alert("Öåíà èçìåíèëàñü. Ïðîáóåì åù¸ ðàç..");
         RefreshRates();                        // Îáíîâèì äàííûå
         return(1);                             // Âûõîä èç ôóíêöèè
      case 136:Alert("Íåò öåí. Æä¸ì íîâûé òèê..");
         while(RefreshRates()==false)           // Äî íîâîãî òèêà
            Sleep(1);                           // Çàäåðæêà â öèêëå
         return(1);                             // Âûõîä èç ôóíêöèè
      case 137:Alert("Áðîêåð çàíÿò. Ïðîáóåì åù¸ ðàç..");
         Sleep(3000);                           // Ïðîñòîå ðåøåíèå
         return(1);                             // Âûõîä èç ôóíêöèè
      case 146:Alert("Ïîäñèñòåìà òîðãîâëè çàíÿòà. Ïðîáóåì åù¸..");
         Sleep(500);                            // Ïðîñòîå ðåøåíèå
         return(1);                             // Âûõîä èç ôóíêöèè
         // Êðèòè÷åñêèå îøèáêè
      case  2: Alert("Îáùàÿ îøèáêà.");
         return(0);                             // Âûõîä èç ôóíêöèè
      case  5: Alert("Ñòàðàÿ âåðñèÿ òåðìèíàëà.");
         Work=false;                            // Áîëüøå íå ðàáîòàòü
         return(0);                             // Âûõîä èç ôóíêöèè
      case 64: Alert("Ñ÷åò çàáëîêèðîâàí.");
         Work=false;                            // Áîëüøå íå ðàáîòàòü
         return(0);                             // Âûõîä èç ôóíêöèè
      case 133:Alert("Òîðãîâëÿ çàïðåùåíà.");
         return(0);                             // Âûõîä èç ôóíêöèè
      case 134:Alert("Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè.");
         return(0);                             // Âûõîä èç ôóíêöèè
      default: Alert("Âîçíèêëà îøèáêà ",Error); // Äðóãèå âàðèàíòû   
         return(0);                             // Âûõîä èç ôóíêöèè
     }
  }
//-------------------------------------------------------------- 11 --

int New_Stop(int Parametr)                      // Ïðîâåðêà ñòîï-ïðèê.
  {
   int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Ìèíèì. äèñòàíöèÿ
   if (Parametr<Min_Dist)                       // Åñëè ìåíüøå äîïóñò.
     {
      Parametr=Min_Dist;                        // Óñòàíîâèì äîïóñò.
      Alert("Óâåëè÷åíà äèñòàíöèÿ ñòîï-ïðèêàçà.");
     }
   return(Parametr);                            // Âîçâðàò çíà÷åíèÿ
  }
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
void TrailingPositions(){double pBid, pAsk, pp;
  pp = MarketInfo(OrderSymbol(), MODE_POINT);if (OrderType()==OP_BUY){
  pBid = MarketInfo(OrderSymbol(),MODE_BID );
  if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp){
  if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp){
  ModifyStopLoss(pBid-TrailingStop*pp);return;}}}if (OrderType()==OP_SELL){
  pAsk = MarketInfo(OrderSymbol(),MODE_ASK );
  if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp){
  if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0){
  ModifyStopLoss(pAsk+TrailingStop*pp);return;}}}}
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
void ModifyStopLoss(double ldStopLoss){bool modify;
  modify=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,Red);}
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 

//---------------------------

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---