MultiHedg_1

Author: Yuriy Tokman
Price Data Components
Series array that contains open time of each bar
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt Closes Orders by itself
Miscellaneous
It plays sound alerts
0 Views
0 Downloads
0 Favorites

Profitability Reports

AUD/USD Oct 2024 - Jan 2025
0.00 %
Total Trades 0
Won Trades 0
Lost trades 0
Win Rate 0.0 %
Expected payoff 0.00
Gross Profit 0.00
Gross Loss 0.00
Total Net Profit 0.00
-100%
-50%
0%
50%
100%
MultiHedg_1
//+------------------------------------------------------------------+
//|                                                  MultiHedg_1.mq4 |
//|                                                     Yuriy Tokman |
//|                                            yuriytokman@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Yuriy Tokman"
#property link      "yuriytokman@gmail.com"
//--1
extern bool      Use_Symbol1=true;
extern string    Symbol1 = "EURUSD";
extern double    Symbol1_Lot = 0.1;
//--2
extern bool      Use_Symbol2=true;
extern string    Symbol2 = "GBPUSD" ;
extern double    Symbol2_Lot = 0.2;
//--3
extern bool      Use_Symbol3=true;
extern string    Symbol3= "GBPJPY";
extern double    Symbol3_Lot = 0.3;
//--4
extern bool      Use_Symbol4=true;
extern string    Symbol4= "EURCAD";
extern double    Symbol4_Lot = 0.4;
//--5
extern bool      Use_Symbol5=true;
extern string    Symbol5= "USDCHF";
extern double    Symbol5_Lot = 0.5;
//--6
extern bool      Use_Symbol6=true;
extern string    Symbol6= "USDJPY";
extern double    Symbol6_Lot = 0.6;
//--7
extern bool      Use_Symbol7=false;
extern string    Symbol7= "USDCHF";
extern double    Symbol7_Lot = 0.7;
//--8
extern bool      Use_Symbol8=false;
extern string    Symbol8= "GBPUSD";
extern double    Symbol8_Lot = 0.8;
//--9
extern bool      Use_Symbol9=false;
extern string    Symbol9= "EURUSD";
extern double    Symbol9_Lot = 0.9;
//--10
extern bool      Use_Symbol10=false;
extern string    Symbol10= "USDJPY";
extern double    Symbol10_Lot = 1;
//----
extern string _____1_____      = "Íàñòðîéêè çàêðûòèÿ ïîçèöèè";
extern bool   TimeClose        = True;     // Âðåìÿ çàêðûòèÿ ïîçèöèè ïîçèöèè
extern string CloseTime        = "20:50";  // Âðåìÿ çàêðûòèÿ ïîçèöèè
extern bool   ClosePercent     = True;     //çàêðûòèÿ ïîçèöèè ïî ïðîöåíòàì
extern double PercentProfit    = 1.00;     // Ïðîöåíò ïðîôèòà
extern double PercentLoss      = 55.00;     // Ïðîöåíò óáûòêà

extern string _____2_____      = "Íàñòðîéêè îòêðûòèÿ ïîçèöèè";
extern bool   Sell       = False;      // True-Sell, False-Buy
extern string TimeTrade  = "19:51";    // Âðåìÿ îòêðûòèÿ ïîçèöèè
extern int    Duration   = 300;        // Ïðîäîëæèòåëüíîñòü â ñåêóíäàõ

extern string _____3_____      = " Ïàðàìåòðû ñîâåòíèêà";
 int    MagicNumber   = 28081975;
 int    NumberAccount = 0;            // Íîìåð òîðãîâîãî ñ÷¸òà
 bool   UseSound      = True;         // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
 string NameFileSound = "expert.wav"; // Íàèìåíîâàíèå çâóêîâîãî ôàéëà
 bool   ShowComment   = True;         // Ïîêàçûâàòü êîììåíòàðèé
 int    Slippage      = 30;            // Ïðîñêàëüçûâàíèå öåíû
 int    NumberOfTry   = 5;            // Êîëè÷åñòâî òîðãîâûõ ïîïûòîê

//------- Ãëîáàëüíûå ïåðåìåííûå ñîâåòíèêà -------------------------------------+
bool  gbDisabled = False;         // Ôëàã áëîêèðîâêè ñîâåòíèêà
bool  gbNoInit   = False;         // Ôëàã íåóäà÷íîé èíèöèàëèçàöèè
color clOpenBuy  = LightBlue;     // Öâåò çíà÷êà îòêðûòèÿ ïîêóïêè
color clOpenSell = LightCoral;    // Öâåò çíà÷êà îòêðûòèÿ ïðîäàæè

//------- Ïîäêëþ÷åíèå âíåøíèõ ìîäóëåé -----------------------------------------+
#include <stdlib.mqh>        // Ñòàíäàðòíàÿ áèáëèîòåêà ÌÒ4

int name_op;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
void init() {
  gbNoInit=False;
  if (!IsTradeAllowed()) {
    Message("Äëÿ íîðìàëüíîé ðàáîòû ñîâåòíèêà íåîáõîäèìî\n"+
            "Ðàçðåøèòü ñîâåòíèêó òîðãîâàòü");
    gbNoInit=True; return;
  }
  if (!IsLibrariesAllowed()) {
    Message("Äëÿ íîðìàëüíîé ðàáîòû ñîâåòíèêà íåîáõîäèìî\n"+
            "Ðàçðåøèòü èìïîðò èç âíåøíèõ ýêñïåðòîâ");
    gbNoInit=True; return;
  }
  if (!IsTesting()) {
    if (IsExpertEnabled()) Message("Ñîâåòíèê áóäåò çàïóùåí ñëåäóþùèì òèêîì");
    else Message("Îòæàòà êíîïêà \"Ðàçðåøèòü çàïóñê ñîâåòíèêîâ\"");
  }
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
void deinit() { if (!IsTesting()) Comment("");}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  if (gbDisabled) {
    Message("Êðèòè÷åñêàÿ îøèáêà! Ñîâåòíèê ÎÑÒÀÍÎÂËÅÍ!"); return;
  }
  if (gbNoInit) {
    Message("Íå óäàëîñü èíèöèàëèçèðîâàòü ñîâåòíèê!"); return;
  }
  if(TimeCurrent()>D'2009.04.05 00:00')
   {
    Comment("Ñîâåòíèê ÎÑÒÀÍÎÂËÅÍ! Îáðàòèòåñü ê ðàçðàáîò÷èêó yuriytokman@gmail.com");
    return;
   }
  else Comment("");  
  if (!IsTesting()) {
    if (NumberAccount>0 && NumberAccount!=AccountNumber()) {
      Comment("Òîðãîâëÿ íà ñ÷¸òå: "+AccountNumber()+" ÇÀÏÐÅÙÅÍÀ!");
      return;
    } else Comment("");

    if (ShowComment) {
      string st="\nCurTime="+TimeToStr(TimeCurrent(), TIME_MINUTES)
               +"  TimeTrade="+TimeTrade
               +IIFs(TimeClose,"  CloseTime="+CloseTime, "")
               +IIFs(ClosePercent,"  PercentProfit="+DoubleToStr(PercentProfit, 2)
               +"  PercentLoss="+DoubleToStr(PercentLoss, 2), "")
               +"  Ïîçèöèÿ="+GetNameOP(Sell)
               +IIFs(Use_Symbol1,"\n\nSymbol 1 = "+Symbol1, "")               //1
               +IIFs(Use_Symbol1,"  Lot= "+DoubleToStr(Symbol1_Lot,2), "")
               +IIFs(Use_Symbol2,"\nSymbol 2 = "+Symbol2, "")               //2
               +IIFs(Use_Symbol2,"  Lot= "+DoubleToStr(Symbol2_Lot,2), "")               
               +IIFs(Use_Symbol3,"\nSymbol 3 = "+Symbol3, "")               //3
               +IIFs(Use_Symbol3,"  Lot= "+DoubleToStr(Symbol3_Lot,2), "")               
               +IIFs(Use_Symbol4,"\nSymbol 4 = "+Symbol4, "")               //4
               +IIFs(Use_Symbol4,"  Lot="+DoubleToStr(Symbol4_Lot,2), "")               
               +IIFs(Use_Symbol5,"\nSymbol 5 = "+Symbol5, "")               //5
               +IIFs(Use_Symbol5,"  Lot= "+DoubleToStr(Symbol5_Lot,2), "")
               +IIFs(Use_Symbol6,"\nSymbol 6 = "+Symbol6, "")               //6
               +IIFs(Use_Symbol6,"  Lot= "+DoubleToStr(Symbol6_Lot,2), "")               
               +IIFs(Use_Symbol7,"\nSymbol 7 = "+Symbol7, "")               //7
               +IIFs(Use_Symbol7,"  Lot = "+DoubleToStr(Symbol7_Lot,2), "")               
               +IIFs(Use_Symbol8,"\nSymbol 8 = "+Symbol8, "")               //8
               +IIFs(Use_Symbol8,"  Lot = "+DoubleToStr(Symbol8_Lot,2), "")                              
               +IIFs(Use_Symbol9,"\nSymbol 9 = "+Symbol9, "")               //9
               +IIFs(Use_Symbol9,"  Lot= "+DoubleToStr(Symbol9_Lot,2), "")
               +IIFs(Use_Symbol10,"\nSymbol 10 = "+Symbol10, "")               //10
               +IIFs(Use_Symbol10,"  Lot= "+DoubleToStr(Symbol10_Lot,2), "")                                             
               //+"PercentProfit="+DoubleToStr(PercentProfit, 2)
               //+"  PercentLoss="+DoubleToStr(PercentLoss, 2)+"\n"
               +"\n\nÒåêóùèå: Áàëàíñ="+DoubleToStr(AccountBalance(), 2)
               +"\n              Ýêâèòè="+DoubleToStr(AccountEquity(), 2)
               +"\n              Ïðèáûëü="+DoubleToStr((AccountEquity()/AccountBalance()-1)*100,3)+" %"
               ;
      Comment(st);
    } else Comment("");
  }
//----
  if(Sell)name_op = OP_SELL;
  else    name_op = OP_BUY;
//----
 if(ClosePercent)
  {
   if (AccountEquity()>=AccountBalance()*(1+PercentProfit/100)
   ||  AccountEquity()<=AccountBalance()*(1-PercentLoss  /100))
   ClosePositions("",-1,MagicNumber);   
  }
//----
 if(TimeClose) 
  {
   if (TimeCurrent()>=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+CloseTime)
   && TimeCurrent()<StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+CloseTime)+Duration)
   ClosePositions("",-1,MagicNumber);
  }
//----
  if (TimeCurrent()>=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeTrade)
  && TimeCurrent()<StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeTrade)+Duration)
  {
//----------------------------1  
   if (Use_Symbol1 && !ExistPositions(Symbol1,name_op,MagicNumber)) 
    OpenPosition(Symbol1,name_op,Symbol1_Lot,0,0,MagicNumber);
//----------------------------2       
   if (Use_Symbol2 && !ExistPositions(Symbol2,name_op,MagicNumber))
    OpenPosition(Symbol2,name_op,Symbol2_Lot,0,0,MagicNumber);
//----------------------------3    
   if (Use_Symbol3 && !ExistPositions(Symbol3,name_op,MagicNumber))
    OpenPosition(Symbol3,name_op,Symbol3_Lot,0,0,MagicNumber);
//----------------------------4    
   if (Use_Symbol4 && !ExistPositions(Symbol4,name_op,MagicNumber))
    OpenPosition(Symbol4,name_op,Symbol4_Lot,0,0,MagicNumber);
//----------------------------5    
   if (Use_Symbol5 && !ExistPositions(Symbol5,name_op,MagicNumber))
    OpenPosition(Symbol5,name_op,Symbol5_Lot,0,0,MagicNumber);
//----------------------------6    
   if (Use_Symbol6 && !ExistPositions(Symbol6,name_op,MagicNumber)) 
   OpenPosition(Symbol6,name_op,Symbol6_Lot,0,0,MagicNumber);
//----------------------------7   
   if (Use_Symbol7 && !ExistPositions(Symbol7,name_op,MagicNumber))
    OpenPosition(Symbol7,name_op,Symbol7_Lot,0,0,MagicNumber);
//----------------------------8    
   if (Use_Symbol8 && !ExistPositions(Symbol8,name_op,MagicNumber))
    OpenPosition(Symbol8,name_op,Symbol8_Lot,0,0,MagicNumber);
//----------------------------9    
   if (Use_Symbol9 && !ExistPositions(Symbol9,name_op,MagicNumber))
    OpenPosition(Symbol9,name_op,Symbol9_Lot,0,0,MagicNumber);
//----------------------------10    
   if (Use_Symbol10 && !ExistPositions(Symbol10,name_op,MagicNumber))
    OpenPosition(Symbol10,name_op,Symbol10_Lot,0,0,MagicNumber);   
  }    
//----
   return(0);
  }
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 06.03.2008                                                     |
//|  Îïèñàíèå : Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ ïîçèöèé                          |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    sy - íàèìåíîâàíèå èíñòðóìåíòà   (""   - ëþáîé ñèìâîë,                   |
//|                                     NULL - òåêóùèé ñèìâîë)                 |
//|    op - îïåðàöèÿ                   (-1   - ëþáàÿ ïîçèöèÿ)                  |
//|    mn - MagicNumber                (-1   - ëþáîé ìàãèê)                    |
//|    ot - âðåìÿ îòêðûòèÿ             ( 0   - ëþáîå âðåìÿ îòêðûòèÿ)           |
//+----------------------------------------------------------------------------+
bool ExistPositions(string sy="", int op=-1, int mn=-1, datetime ot=0) {
  int i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (ot<=OrderOpenTime()) return(True);
            }
          }
        }
      }
    }
  }
  return(False);
}
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 10.04.2008                                                     |
//|  Îïèñàíèå : Îòêðûâàåò ïîçèöèþ ïî ðûíî÷íîé öåíå.                            |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    sy - íàèìåíîâàíèå èíñòðóìåíòà   (NULL èëè "" - òåêóùèé ñèìâîë)          |
//|    op - îïåðàöèÿ                                                           |
//|    ll - ëîò                                                                |
//|    sl - óðîâåíü ñòîï                                                       |
//|    tp - óðîâåíü òåéê                                                       |
//|    mn - MagicNumber                                                        |
//+----------------------------------------------------------------------------+
void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) {
  color    clOpen;
  datetime ot;
  double   pp, pa, pb;
  int      dg, err, it, ticket=0;
  string   lsComm=WindowExpertName()+" "+GetNameTF(Period());

  if (sy=="" || sy=="0") sy=Symbol();
  if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell;
  for (it=1; it<=NumberOfTry; it++) {
    if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) {
      Print("OpenPosition(): Îñòàíîâêà ðàáîòû ôóíêöèè");
      break;
    }
    while (!IsTradeAllowed()) Sleep(5000);
    RefreshRates();
    dg=MarketInfo(sy, MODE_DIGITS);
    pa=MarketInfo(sy, MODE_ASK);
    pb=MarketInfo(sy, MODE_BID);
    if (op==OP_BUY) pp=pa; else pp=pb;
    pp=NormalizeDouble(pp, dg);
    ot=TimeCurrent();
      ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, lsComm, mn, 0, clOpen);
    if (ticket>0) {
      if (UseSound) PlaySound(NameFileSound); break;
    } else {
      err=GetLastError();
      if (pa==0 && pb==0) Message("Ïðîâåðüòå â Îáçîðå ðûíêà íàëè÷èå ñèìâîëà "+sy);
      // Âûâîä ñîîáùåíèÿ îá îøèáêå
      Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
      Print("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",GetNameOP(op),
            " pp=",pp," sl=",sl," tp=",tp," mn=",mn);
      // Áëîêèðîâêà ðàáîòû ñîâåòíèêà
      if (err==2 || err==64 || err==65 || err==133) {
        gbDisabled=True; break;
      }
      // Äëèòåëüíàÿ ïàóçà
      if (err==4 || err==131 || err==132) {
        Sleep(1000*300); break;
      }
      if (err==128 || err==142 || err==143) {
        Sleep(1000*66.666);
        if (ExistPositions(sy, op, mn, ot)) {
          if (UseSound) PlaySound(NameFileSound); break;
        }
      }
      if (err==140 || err==148 || err==4110 || err==4111) break;
      if (err==141) Sleep(1000*100);
      if (err==145) Sleep(1000*17);
      if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
      if (err!=135) Sleep(1000*7.7);
    }
  }
}
//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 01.09.2005                                                     |
//|  Îïèñàíèå : Âîçâðàùàåò íàèìåíîâàíèå òîðãîâîé îïåðàöèè                      |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    op - èäåíòèôèêàòîð òîðãîâîé îïåðàöèè                                    |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
  switch (op) {
    case OP_BUY      : return("Buy");
    case OP_SELL     : return("Sell");
    case OP_BUYLIMIT : return("Buy Limit");
    case OP_SELLLIMIT: return("Sell Limit");
    case OP_BUYSTOP  : return("Buy Stop");
    case OP_SELLSTOP : return("Sell Stop");
    default          : return("Unknown Operation");
  }
}

//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 01.09.2005                                                     |
//|  Îïèñàíèå : Âîçâðàùàåò íàèìåíîâàíèå òàéìôðåéìà                             |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    TimeFrame - òàéìôðåéì (êîëè÷åñòâî ñåêóíä)      (0 - òåêóùèé ÒÔ)         |
//+----------------------------------------------------------------------------+
string GetNameTF(int TimeFrame=0) {
  if (TimeFrame==0) TimeFrame=Period();
  switch (TimeFrame) {
    case PERIOD_M1:  return("M1");
    case PERIOD_M5:  return("M5");
    case PERIOD_M15: return("M15");
    case PERIOD_M30: return("M30");
    case PERIOD_H1:  return("H1");
    case PERIOD_H4:  return("H4");
    case PERIOD_D1:  return("Daily");
    case PERIOD_W1:  return("Weekly");
    case PERIOD_MN1: return("Monthly");
    default:         return("UnknownPeriod");
  }
}

//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 01.02.2008                                                     |
//|  Îïèñàíèå : Âîçâðàùàåò îäíî èç äâóõ çíà÷åíèé âçàâèñèìîñòè îò óñëîâèÿ.      |
//+----------------------------------------------------------------------------+
string IIFs(bool condition, string ifTrue, string ifFalse) {
  if (condition) return(ifTrue); else return(ifFalse);
}

//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 01.09.2005                                                     |
//|  Îïèñàíèå : Âûâîä ñîîáùåíèÿ â êîììåíò è â æóðíàë                           |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    m - òåêñò ñîîáùåíèÿ                                                     |
//+----------------------------------------------------------------------------+
void Message(string m) {
  Comment(m);
  if (StringLen(m)>0) Print(m);
}
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 19.02.2008                                                     |
//|  Îïèñàíèå : Çàêðûòèå ïîçèöèé ïî ðûíî÷íîé öåíå                              |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    sy - íàèìåíîâàíèå èíñòðóìåíòà   (""   - ëþáîé ñèìâîë,                   |
//|                                     NULL - òåêóùèé ñèìâîë)                 |
//|    op - îïåðàöèÿ                   (-1   - ëþáàÿ ïîçèöèÿ)                  |
//|    mn - MagicNumber                (-1   - ëþáîé ìàãèê)                    |
//+----------------------------------------------------------------------------+
void ClosePositions(string sy="", int op=-1, int mn=-1) {//ClosePositions(NULL,-1,MagicNumber)
  int i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=k-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) ClosePosBySelect();
        }
      }
    }
  }
}
//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ  : 19.02.2008                                                      |
//|  Îïèñàíèå: Çàêðûòèå îäíîé ïðåäâàðèòåëüíî âûáðàííîé ïîçèöèè                 |
//+----------------------------------------------------------------------------+
void ClosePosBySelect() {
  bool   fc;
  color  clClose;
  double ll, pa, pb, pp;
  int    err, it;

  if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
    for (it=1; it<=NumberOfTry; it++) {
      if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
      while (!IsTradeAllowed()) Sleep(5000);
      RefreshRates();
      pa=MarketInfo(OrderSymbol(), MODE_ASK);
      pb=MarketInfo(OrderSymbol(), MODE_BID);
      if (OrderType()==OP_BUY) {
        pp=pb; clClose=Green;
      } else {
        pp=pa; clClose=Red;
      }
      ll=OrderLots();
      fc=OrderClose(OrderTicket(), ll, pp, Slippage, clClose);
      if (fc) {
        if (UseSound) PlaySound(NameFileSound); break;
      } else {
        err=GetLastError();
        if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
        Print("Error(",err,") Close ",GetNameOP(OrderType())," ",
              ErrorDescription(err),", try ",it);
        Print(OrderTicket(),"  Ask=",pa,"  Bid=",pb,"  pp=",pp);
        Print("sy=",OrderSymbol(),"  ll=",ll,"  sl=",OrderStopLoss(),
              "  tp=",OrderTakeProfit(),"  mn=",OrderMagicNumber());
        Sleep(1000*5);
      }
    }
  } else Print("Íåêîððåêòíàÿ òîðãîâàÿ îïåðàöèÿ. Close ",GetNameOP(OrderType()));
 } 

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