Author: Dmitriy Epshteyn
Orders Execution
Checks for the total of open ordersChecks for the total of closed ordersIt automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategyIt Closes Orders by itself
Indicators Used
Moving average indicatorRelative strength index
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
MqrtLock1
//+------------------------------------------------------------------+
//|                                                 MartLock1 |
//+------------------------------------------------------------------+
#property copyright "Dmitriy Epshteyn"
#property link      "setkafx@mail.ru"
#property version   "1.00"
#property strict

extern string A1 = "Íàñòðîéêè èíäèêàòîðîâ MA è RSI";
extern int    PeriodMA_slow = 30; 
// Ïåðèîä ìåäëåííîé MA
extern int    PeriodMA_fast = 20;
 // Ïåðèîä áûñòðîé  ÌÀ
extern int ma_shift_slow =0; 
// Ñäâèã ìåäëåííîé ñðåäíåé ñêîëüçÿùåé
extern int ma_shift_fast =0;
 // Ñäâèã áûñòðîé ñðåäíåé ñêîëüçÿùåé
extern int ma_method_slow = 1; 
// Ìåòîä óñðåäíåíèÿ ìåäëåííîé ñðåäíåé ñêîëüçÿùåé
extern int ma_method_fast = 1;
 // Ìåòîä óñðåäíåíèÿ áûñòðîé ñðåäíåé ñêîëüçÿùåé
extern int ma_index = 0;
// Íîìåð áàðà (ÌÀ), ñ êîòîðîãî áåðóòñÿ ïîêàçàòåëè ñðåäíèõ ñêîëüçÿùèõ 
// ìåòîä óñðåäíåíèÿ
// 0 - Ïðîñòîå óñðåäíåíèå
// 1 - Ýêñïîíåíöèàëüíîå óñðåäíåíèå
// 2 - Ñãëàæåííîå óñðåäíåíèå
// 3 - Ëèíåéíî-âçâåøåííîå óñðåäíåíèå
extern int applied_price_slow = 0; 
// Èñïîëüçóåìàÿ öåíà (0-çàêðûòèÿ, 1-îòêðûòèÿ...) ìåäëåííîé ñðåäíåé ñêîëüçÿùåé
extern int applied_price_fast = 0; 
// Èñïîëüçóåìàÿ öåíà (0-çàêðûòèÿ, 1-îòêðûòèÿ...) áûñòðîé ñðåäíåé ñêîëüçÿùåé
// èñïîëüçóåìàÿ öåíà
//0-Öåíà çàêðûòèÿ
//1-Öåíà îòêðûòèÿ
//2-Ìàêñèìàëüíàÿ çà ïåðèîä öåíà
//3-Ìèíèìàëüíàÿ çà ïåðèîä öåíà
//4-Ìåäèàííàÿ öåíà, (high+low)/2
//5-Òèïè÷íàÿ öåíà, (high+low+close)/3
//6-Ñðåäíåâçâåøåííàÿ öåíà, (high+low+close+close)/4  
extern int RSI_Period = 14; 
// Ïåðèîä èíäèêàòîðà RSI
extern int RSI_applied_price = 0; 
// Èñïîëüçóåìàÿ öåíà (0-çàêðûòèÿ, 1-îòêðûòèÿ...) èíäèêàòîðà RSI
extern int RSI_up = 70; 
// Âåðõíèé óðîâåíü RSI
extern int RSI_down = 30;
 // Íèæíèé óðîâåíü RSI
extern string A2 = "Íàñòðîéêè ñåòêè îðäåðîâ";
extern int Timer_Minutes = 10;
// Ìèíèìàëüíîå êîë-âî ìèíóò, êîòîðîå äîëæíî ïðîéòè ïîñëå çàêðûòèÿ ïîñëåäíåãî îðäåðà, ÷òîáû ìîã îòêðûòüñÿ íîâûé 
extern double Lots = 0.01;
 // Ëîò îðäåðîâ
extern double Koef = 2;
 // Ìíîæèòåëü ëîòà îðäåðîâ
extern int    Step = 10;
 // "Ìèíèìàëüíàÿ îõðàííàÿ çîíà" ìåæäó îðäåðàìè â ïóíêòàõ
extern int    Max_Orders = 5; 
// Ìàêñèìàëüíîå êîë-âî îäíîòèïíûõ îðäåðîâ
extern int    TP = 10; 
// Òåéê ïðîôèò óñðåäíÿþùåé ñåòêè îðäåðîâ
extern int    Shag = 4;
// Øàã ìîäèôèêàöèè òåéê ïðîôèòà ïà÷êè îðäåðîâ
extern string A3 = "Íàñòðîéêè ëîêêèðóþùèõ îðäåðîâ";
extern int    Step_Lock = 10;
 // Ðàññòîÿíèå â ïóíêòàõ, íà êîòîðîì îò ñåòêè îòêðûâàåòñÿ ëîêêèðóþùèé îðäåð 
extern double Koef_Lock = 2;
 // Ìíîæèòåëü ëîòà ëîê. îðäåðà, íà êîòîðûé óìíîæàåòñÿ ñóììà ëîòîâ ïðîòèâîïîëîæíûõ îðäåðîâ
extern int    Max_Lock_Orders = 1;
 // Êîë-âî ïîïûòîê îòêðûòü ëîê. îðäåð
extern int    SL_Lock = 10; 
// Ñòîï ëîññ ëîêêèðóþùåãî îðäåðà
extern string A4 = "Íàñòðîéêè çàêðûòèÿ ñåòêè îðäåðîâ ïî óáûòêó è ïî ñóììàðíîìó òðàëó ïðîôèòà";
extern double Loss_Close = 50; 
// Óáûòîê â âàëþòå äåïîçèòà, ïðè êîòîðîì ïðîèñõîäèò çàêðûòèå îðäåðîâ â òåêóùåì òîðãîâîì öèêëå
extern double Max_Profit_Tral = 30; 
// Ìàêñèìàëüíàÿ ñóììà ïðîôèòà òîðãîâîãî öèêëà, ïðè äîñòèæåíèè êîòîðîé íà÷èíàåò ðàáîòàòü òðàë ñóììàðíîãî ïðîôèòà
extern double Trailing_Value = 10; 
// Åñëè ìàêñèìàëüíî çàôèêñèðîâàííàÿ ñóììà ïðîôèòà óìåíüøèòñÿ íà ýòó ñóììó, âñå îðäåðà - çàêðûâàåì.
extern string A5 = "Ïðî÷åå";
extern int    Slip   = 30;
// Ïðîñêàëüçûâàíèå
extern int    Magic  = 1;
// Íîìåð îðäåðîâ
extern int    Magic2  = 2;
// Íîìåð ëîêêèðóþùèõ îðäåðîâ
extern bool   Info_Panel = true;
// Âêë/âûêë èíôîðìàöèîííóþ ïàíåëü
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
datetime  first_time = TimeCurrent(); // âðåìÿ ïåðâîãî îòêðûòîãî ðûíî÷íîãî îðäåðà
double opB=2000000; double opS=0;
double KrainiyB  =0; // ðûíî÷íûé áàé ñ íàèáîëüøåé öåíîé îòêðûòèÿ
double KrainiyS  =2000000; // ðûíî÷íûé ñåë ñ íàèìåíüøåé öåíîé îòêðûòèÿ 
double LotBsum=0; // ñóììà ëîòîâ áàé îðäåðîâ
double LotSsum=0; // ñóììà ëîòîâ ñåëë îðäåðîâ
double LotBmax=0; // ìàêñ ëîò áàé îðäåðîâ
double LotSmax=0; // ìàêñ ëîò ñåëë îðäåðîâ
double ProfitB=0, ProfitS=0;
double bMod = Ask;
double sMod = Bid;
static double zoneb = NormalizeDouble(Step*Point,Digits);
static double zones = NormalizeDouble(Step*Point,Digits);
int bZone=0, sZone=0;
double stops = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
    int b=0,s=0,n=0,bs=0,ss=0,b1=0,s1=0, total=OrdersTotal();
  for(int i1=total-1; i1>=0; i1--)
     if(OrderSelect(i1, SELECT_BY_POS))
         if(OrderSymbol()==Symbol()      )
         if (OrderMagicNumber()==Magic)
       {
        if(OrderType()==OP_BUY)
         {b++;n++;
          ProfitB+=OrderProfit()+OrderSwap()+OrderCommission();
          LotBsum+=OrderLots();              
          double openB  =OrderOpenPrice ();
          double LotB=OrderLots();
          if(openB<opB) {opB=openB;} // âíóòðåííèé áàé îðäåð
          if(openB>KrainiyB) {KrainiyB=openB;} // êðàéíèé áàé îðäåð
          if(LotB>LotBmax) {LotBmax=LotB;} // ìàêñèìàëüíûé ëîò ñåòêè áàé îðäåðîâ
          if ((bMod-OrderOpenPrice()<=zoneb && bMod-OrderOpenPrice()>=0) || (OrderOpenPrice()-bMod<=zoneb && OrderOpenPrice()-bMod>=0)) {bZone++;}
          if (OrderOpenTime()>Time[0]) {b1++;}
          if (OrderOpenTime()<first_time) {first_time=OrderOpenTime();}
          }
        if(OrderType()==OP_SELL)
         {s++;n++;
           ProfitS+=OrderProfit()+OrderSwap()+OrderCommission();
           LotSsum+=OrderLots();
           double openS  =OrderOpenPrice ();
           double LotS=OrderLots();
           if(openS>opS) {opS=openS;} // âíóòðåííèé ñåëë îðäåð
           if(openS<KrainiyS) {KrainiyS=openS;}// êðàéíèé ñåëë îðäåð
           if(LotS>LotSmax) {LotSmax=LotS;} // ìàêñèìàëüíûé ëîò ñåòêè ñåëë îðäåðîâ
           if ((OrderOpenPrice()-sMod<=zones && OrderOpenPrice()-sMod>=0) || (sMod-OrderOpenPrice()<=zones && sMod-OrderOpenPrice()>=0)) {sZone++;}
           if (OrderOpenTime()>Time[0]) {s1++;}
           if (OrderOpenTime()<first_time) {first_time=OrderOpenTime();}
         }
       }
//---------------ëîòû----------------------
double lots_step=MarketInfo(Symbol(),MODE_LOTSTEP);
int lots_digits = 0;
//----
   if(lots_step==0.01)
      {lots_digits=2;}
//----
   if(lots_step==0.1)
      {lots_digits=1;}
//----
   if(lots_step==1.0)
      {lots_digits=0;}
//-
double Lot_b=0, Lot_s=0;
if (b==0)    {Lot_b=Lots;} 
if (s==0)    {Lot_s=Lots;}
if (b>0)     {Lot_b=NormalizeDouble(MathCeil((LotBmax*Koef)/lots_step)*lots_step,lots_digits);}
if (Lot_b<MarketInfo(Symbol(),MODE_MINLOT)) {Lot_b=MarketInfo(Symbol(),MODE_MINLOT);}

if (s>0)     {Lot_s=NormalizeDouble(MathCeil((LotSmax*Koef)/lots_step)*lots_step,lots_digits);}
if (Lot_s<MarketInfo(Symbol(),MODE_MINLOT)) {Lot_s=MarketInfo(Symbol(),MODE_MINLOT);}

if (Lot_b>MarketInfo(Symbol(),MODE_MAXLOT)) {Lot_b=MarketInfo(Symbol(),MODE_MAXLOT);}
if (Lot_s>MarketInfo(Symbol(),MODE_MAXLOT)) {Lot_s=MarketInfo(Symbol(),MODE_MAXLOT);}


double One_Lot=MarketInfo(Symbol(),MODE_MARGINREQUIRED);
bool open_buy = true, open_sell = true;
if (AccountFreeMargin()<One_Lot*Lot_b) {open_buy=false;} // íå õâàòàåò äåíåã îòêðûòü ëîò
if (AccountFreeMargin()<One_Lot*Lot_s) {open_sell=false;} // íå õâàòàåò äåíåã îòêðûòü ëîò
if (open_buy==false||open_sell==false) {Comment("Not enough money to open a Lot_b=",DoubleToStr(Lot_b,2), "   Lot_s=",DoubleToStr(Lot_s,2));}

int accTotal1=OrdersHistoryTotal();
int orders=0;
for(int h_1=accTotal1-1;h_1>=0;h_1--)
     if(OrderSelect(h_1,SELECT_BY_POS,MODE_HISTORY))
     if(OrderSymbol()==Symbol()      )
     if (OrderMagicNumber()==Magic) 
      {
      if (OrderCloseTime()>=Time[0]) {orders++;}
      if (OrderCloseTime()<Time[0]) {break;}
      }
datetime last_time_closed = 0;
for(int h_2=accTotal1-1;h_2>=0;h_2--)
     if(OrderSelect(h_2,SELECT_BY_POS,MODE_HISTORY))
     if(OrderSymbol()==Symbol()      )
     if (OrderMagicNumber()==Magic) 
      {
      if (OrderCloseTime()>0) {last_time_closed=OrderCloseTime(); break;}
      }

bool open_time = false;
if (Timer_Minutes==0) {open_time=true;}
if (Timer_Minutes>0&&TimeCurrent()-last_time_closed>=Timer_Minutes*60) {open_time=true;}
//___________èíäèêàòîðû è ñèãíàë_______________ 
double MA_slow=NormalizeDouble(iMA(NULL,0,PeriodMA_slow,ma_shift_slow,ma_method_slow,applied_price_slow,ma_index),Digits);
double MA_fast=NormalizeDouble(iMA(NULL,0,PeriodMA_fast,ma_shift_fast,ma_method_fast,applied_price_fast,ma_index),Digits);
double RSI1 = iRSI(Symbol(),0,RSI_Period,RSI_applied_price,1);   
double RSI2 = iRSI(Symbol(),0,RSI_Period,RSI_applied_price,2);
int sig = 0;
if (MA_fast>MA_slow&&RSI2<RSI_down&&RSI1>RSI_down) {sig=1;} // ïîêóïàåì
if (MA_fast<MA_slow&&RSI2>RSI_up&&RSI1<RSI_up)     {sig=2;} // ïðîäàåì
//-----Îòêðûâàåì ñòàðòîâûé îðäåð--------
if (n==0&&sig==1&&open_buy==true&&orders==0&&open_time==true)  {int open = OrderSend(Symbol(),OP_BUY,Lot_b,Ask,Slip,0,0,NULL,Magic,0,0);} 
if (n==0&&sig==2&&open_sell==true&&orders==0&&open_time==true)  {int open = OrderSend(Symbol(),OP_SELL,Lot_s,Bid,Slip,0,0,NULL,Magic,0,0);} 
//____óñðåäíÿåì____
if (b>0&&b<Max_Orders&&bZone==0&&Ask<opB&&open_buy==true&&b1==0&&Volume[0]<5)  {int open = OrderSend(Symbol(),OP_BUY,Lot_b,Ask,Slip,0,0,NULL,Magic,0,0);} 
if (s>0&&s<Max_Orders&&sZone==0&&Bid>opS&&open_sell==true&&s1==0&&Volume[0]<5)  {int open = OrderSend(Symbol(),OP_SELL,Lot_s,Bid,Slip,0,0,NULL,Magic,0,0);} 


//-------ðàñ÷åò òåéê ïðîôèò ïà÷êè îðäåðîâ, ëîê (öèêë ïåðåñ÷åòà îðäåðîâ ëîêîâ)--------- 

double TickValue=MarketInfo(Symbol(),MODE_TICKVALUE);
double BuyLevel=0,SellLevel=0;
 if (LotBsum>0) {BuyLevel=NormalizeDouble(Bid-(ProfitB/(TickValue*LotBsum)*Point),Digits);}     
 if (LotSsum>0) {SellLevel=NormalizeDouble(Ask+(ProfitS/(TickValue*LotSsum)*Point),Digits);} 
double tp = NormalizeDouble(TP*Point,Digits);
double b_tp = NormalizeDouble(BuyLevel+tp,Digits);
double s_tp = NormalizeDouble(SellLevel-tp,Digits);

double shag = NormalizeDouble(Shag*Point,Digits);
double ProfitB_Lock=0, ProfitS_Lock=0;
int b_lock=0,s_lock=0;
double sl_lock = NormalizeDouble(SL_Lock*Point,Digits);

static int stat_orders;

   for(int i2=total-1; i2>=0; i2--)
     if(OrderSelect(i2, SELECT_BY_POS))
         if(OrderSymbol()==Symbol()) // âûñòàâèì òåéêè ïà÷êå îðäåðîâ, íàéäåì ëîêêèðóþùèé îðäåð
     {
       if (OrderType()==OP_BUY)
       {
       if (n!=stat_orders&&OrderTakeProfit()==0&&OrderMagicNumber()==Magic&&BuyLevel>0&&Ask<b_tp-stops&&OrderTakeProfit()!=b_tp) 
       {bool mod = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),b_tp,0,0);}   
       if (n!=stat_orders&&OrderMagicNumber()==Magic&&BuyLevel>0&&Ask<b_tp-stops&&OrderTakeProfit()!=b_tp&&MathAbs(OrderTakeProfit()-b_tp)>=shag) 
       {bool mod = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),b_tp,0,0);}   
       
     
       if (OrderMagicNumber()==Magic2) {b_lock++;ProfitB_Lock+=OrderProfit()+OrderSwap()+OrderCommission();}
      if (OrderMagicNumber()==Magic2&&OrderStopLoss()==0&&Bid>NormalizeDouble(OrderOpenPrice()-sl_lock+stops,Digits)&&OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()-sl_lock,Digits)) 
      {bool mod = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-sl_lock,Digits),OrderTakeProfit(),0,0);}   
       }
       if (OrderType()==OP_SELL)
       {
       if (n!=stat_orders&&OrderTakeProfit()==0&&OrderMagicNumber()==Magic&&SellLevel>0&&Bid>s_tp+stops&&OrderTakeProfit()!=s_tp) 
       {bool mod = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),s_tp,0,0);}   
       if (n!=stat_orders&&OrderMagicNumber()==Magic&&SellLevel>0&&Bid>s_tp+stops&&OrderTakeProfit()!=s_tp&&MathAbs(OrderTakeProfit()-s_tp)>=shag) 
       {bool mod = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),s_tp,0,0);}   
       
     
       if (OrderMagicNumber()==Magic2) {s_lock++;ProfitB_Lock+=OrderProfit()+OrderSwap()+OrderCommission();}
      if (OrderMagicNumber()==Magic2&&OrderStopLoss()==0&&Ask<NormalizeDouble(OrderOpenPrice()+sl_lock-stops,Digits)&&OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()+sl_lock,Digits)) 
      {bool mod = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+sl_lock,Digits),OrderTakeProfit(),0,0);}   
       
       }
     }   
     
        
stat_orders=n;
//---ëîò ëîêêèðóþùåãî îðäåðà----
//----- ñ÷èòàåì êîë-âî çàêðûòûõ ëîê. îðäåðîâ, èõ ïðîôèò----
int lock_orders=0;
double Profit_Lock_Closed=0;
for(int l_1=accTotal1-1;l_1>=0;l_1--)
     if(OrderSelect(l_1,SELECT_BY_POS,MODE_HISTORY))
     if(OrderSymbol()==Symbol()      )
     if (OrderMagicNumber()==Magic2) 
      {
      if (OrderCloseTime()>=first_time) {lock_orders++;Profit_Lock_Closed+=OrderProfit()+OrderSwap()+OrderCommission();}
      if (OrderCloseTime()<=first_time) {break;}
      }

double Lot_b_Lock = NormalizeDouble(MathCeil((LotSsum*Koef_Lock)/lots_step)*lots_step,lots_digits); 
double Lot_s_Lock = NormalizeDouble(MathCeil((LotBsum*Koef_Lock)/lots_step)*lots_step,lots_digits); 

if (Lot_b_Lock>MarketInfo(Symbol(),MODE_MAXLOT)) {Lot_b_Lock=MarketInfo(Symbol(),MODE_MAXLOT);}
if (Lot_s_Lock>MarketInfo(Symbol(),MODE_MAXLOT)) {Lot_s_Lock=MarketInfo(Symbol(),MODE_MAXLOT);}
 
double step_lock = NormalizeDouble(Step_Lock*Point,Digits);

if (s>=Max_Orders&&b_lock==0&&Bid>opS+step_lock&&lock_orders<Max_Lock_Orders) {int open = OrderSend(Symbol(),OP_BUY,Lot_b_Lock,Ask,Slip,0,0,NULL,Magic2,0,0);}
if (b>=Max_Orders&&s_lock==0&&Ask<opB-step_lock&&lock_orders<Max_Lock_Orders) {int open = OrderSend(Symbol(),OP_SELL,Lot_s_Lock,Bid,Slip,0,0,NULL,Magic2,0,0);}

double Circle_Profit = ProfitB+ProfitS+ProfitB_Lock+ProfitS_Lock+Profit_Lock_Closed;
static double max_profit;
static int tral_start; // 0 - íå âêëþ÷èëñÿ, 1 - âêëþ÷èëñÿ ïðè ñîâïàäåíèè óñëîâèé
if (n==0) {max_profit=0;tral_start=0;}
if (n>0&&Circle_Profit>Max_Profit_Tral&&Circle_Profit>max_profit) {max_profit=Circle_Profit; tral_start=1;}
if (tral_start==1&&Circle_Profit<=max_profit-Trailing_Value) {CloseAll();Print("_______________________________ÇÀÊÐÛÒÈÅ ÏÐÎÔÈÒÀ_______________________");}

if (Circle_Profit<-1*Loss_Close) {CloseAll();Print("______________________________________ÇÀÊÐÛÒÈÅ ÓÁÛÒÊÀ___________________________________");}

//if (Info_Panel==true)  {Comment("Ïðîôèò îòêðûòûõ îðäåðîâ=",DoubleToStr(ProfitB+ProfitS,2),"\r\n","Ïðîôèò ëîêêèðóþùåãî îðäåðà=",DoubleToStr(ProfitB_Lock+ProfitS_Lock,2),"\r\n","Ïðîôèò çàêðûòûõ ëîêêèðóþùèõ îðäåðîâ=",DoubleToStr(Profit_Lock_Closed,2),"\r\n","Ïðîôèò òåêóùåãî öèêëà=",DoubleToStr(Circle_Profit,2),"\r\n","Ìàêñèìàëüíûé ïðîôèò òðàëà=",DoubleToStr(max_profit,2));}
Comment("TickValue=",TickValue, "     spred=",Ask-Bid);
  }
//+------------------------------------------------------------------+
bool CloseAll() // çàêðûòü âñå îðäåðà
{
   bool error=true;
   int err,nn1,OT;
   string Symb;
   while(true)
   {
      for (int jj = OrdersTotal()-1; jj >= 0; jj--)
      {
         if (OrderSelect(jj, SELECT_BY_POS))
         {
            Symb = OrderSymbol();
            if ((Symb==Symbol()&&OrderMagicNumber()==Magic)||(Symb==Symbol()&&OrderMagicNumber()==Magic2))
            {
               OT = OrderType();
               if (OT>1) 
               {
                  bool del = OrderDelete(OrderTicket());
               }
               if (OT==OP_BUY) 
               {
                  error=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Blue);
                  if (error) Alert(Symb,"  Çàêðûò îðäåð N ",OrderTicket(),"  ïðèáûëü ",OrderProfit(),
                                     "     ",TimeToStr(TimeCurrent(),TIME_SECONDS));
               }
               if (OT==OP_SELL) 
               {
                  error=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Red);
                  if (error) Alert(Symb,"  Çàêðûò îðäåð N ",OrderTicket(),"  ïðèáûëü ",OrderProfit(),
                                     "     ",TimeToStr(TimeCurrent(),TIME_SECONDS));
               }
               if (!error) 
               {
                  err = GetLastError();
                  if (err<2) continue;
                  if (err==129) 
                  {  Comment("Íåïðàâèëüíàÿ öåíà ",TimeToStr(TimeCurrent(),TIME_MINUTES));
                     Sleep(5000);
                     RefreshRates();
                     continue;
                  }
                  if (err==146) 
                  {
                     if (IsTradeContextBusy()) Sleep(2000);
                     continue;
                  }
                  Comment("Îøèáêà ",err," çàêðûòèÿ îðäåðà N ",OrderTicket(),
                          "     ",TimeToStr(TimeCurrent(),TIME_MINUTES));
               }
            }
         }
      }
      int n1=0;
      for (int jj = 0; jj < OrdersTotal(); jj++)
      {
         if (OrderSelect(jj, SELECT_BY_POS))
         {
            if ((Symb==Symbol()&&OrderMagicNumber()==Magic)||(Symb==Symbol()&&OrderMagicNumber()==Magic2))// || AllSymbol) && (Magic==0 || Magic==OrderMagicNumber()))
            {
               OT = OrderType();
               if (OT==OP_BUY || OT==OP_SELL) n1++;
            }
         }  
      }
      if (n1==0) break;
      nn1++;
      if (nn1>10) {Alert(Symb,"  Íå óäàëîñü çàêðûòü âñå ñäåëêè, îñòàëîñü åùå ",n1);return(0);}
      Sleep(1000);
      RefreshRates();
   }
   return(1);
//______________________________________________________________________________________________________________________

     
   
  }

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 ---