Author: Sergey Gulyaev. Maykop
Orders Execution
It automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategy
Miscellaneous
It plays sound alerts
0 Views
0 Downloads
0 Favorites
Tokarev
//+------------------------------------------------------------------+
//|                                                      Tokarev.mq4 |
//|                                              valenok2003@mail.ru |
//|                                                    ICQ 365919666 |
//|         MQL4 Ïèøó íà çàêàç. Èíäèêàòîð îò 100ð, ñîâåòíèê îò 1000ð |
//+------------------------------------------------------------------+
#property copyright "Sergey Gulyaev. Maykop"
#property link      "ICQ 365919666"

extern string Rem_0 = "-âåðõíèé óðîâåíü âõîäà-";
extern double Price_Top = 0;
extern string Rem_1 = "-íèæíèé óðîâåíü âõîäà-";
extern double Price_Boot = 0;
extern string Rem_2 = "-äèñòàíöèÿ õåäæ-îðäåðîâ (ïï)-";
extern int    _Distans_1 = 25;
extern int    _Distans_2 = 50;

extern string Rem_3 = "-îñíîâíîé îðäåðà (ïï)-";
extern double Lot_Main = 0.2;
extern int    _Profit_Main = 250;
extern int    _Loss_Main = 50;
extern int    _Tral_Main = 100;

extern string Rem_4 = "-õåäæ îðäåð 1 (ïï)-";
extern double Lot_Hedg_1 = 0.1;
extern int    _Profit_Hedg_1 = 250;
extern int    _Loss_Hedg_1 = 50;
extern int    _Tral_Hedg_1 = 100;

extern string Rem_5 = "-õåäæ îðäåð 2 (ïï)-";
extern double Lot_Hedg_2 = 0.1;
extern int    _Profit_Hedg_2 = 250;
extern int    _Loss_Hedg_2 = 50;
extern int    _Tral_Hedg_2 = 100;

extern bool   Show_Info = true;
extern double Log = 0;

double k;

double Profit_Main, Tral_Main, Loss_Main,   
       Distans_1, Profit_Hedg_1, Tral_Hedg_1, Loss_Hedg_1,
       Distans_2, Profit_Hedg_2, Tral_Hedg_2, Loss_Hedg_2;

double Price_Hedg_Buy_1, Price_Hedg_Buy_2,
       Price_Hedg_Sell_1, Price_Hedg_Sell_2;
 
int TICKET_SELL_MAIN = 0, TICKET_BUY_HEDG_1 = 0, TICKET_BUY_HEDG_2 = 0,
    TICKET_BUY_MAIN = 0, TICKET_SELL_HEDG_1 = 0, TICKET_SELL_HEDG_2 = 0,
    ERROR;

double Last_Tral_SELL_MAIN = 1000, Last_Tral_BUY_HEDG_1 = 0, Last_Tral_BUY_HEDG_2 = 0,
       Last_Tral_BUY_MAIN = 0, Last_Tral_SELL_HEDG_1 = 1000, Last_Tral_SELL_HEDG_2 = 1000;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
//îïðåäåëÿåì êîëè÷åñòâî çàïÿòûõ ïîñëå çíàêà è â ñîîòâåòñòâèè ñ ýòèì âûñòàâëÿåì êîýôôèöèåíò
  switch(Digits)
  {
    case 2: k = 0.01; break;
    case 4: k = 0.0001; break;
    case 5: k = 0.00001; break;
    default: break;
  }
//--------------------- 
//+------------------------------------------------------------------+
//|                   ÏÐÎÂÅÐÊÀ ÓÑÒÀÍÎÂÎÊ ÏÎËÜÇÎÂÀÒÅËß                |
//+------------------------------------------------------------------+
//åñëè íåâåðíî çàäàíû ÖÅÍÛ îðäåðîâ
  int Spread = MarketInfo(Symbol(),MODE_SPREAD);
  double dist_max = 1000*k;
//  double dist_min = Spread*k;
  if(Price_Top < Bid || Price_Top - Bid > dist_max) Price_Top = Ask + 10*k;
  if(Price_Boot > Ask || Ask - Price_Boot > dist_max) Price_Boot = Bid - 10*k;
//åñëè çàäàí òðàë ìåíüøå min çíà÷åíèÿ, óòàíàâëèâàåì min äîïóñòèìûå
int StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL);
  if(_Tral_Main < StopLevel) _Tral_Main = StopLevel;
  if(_Tral_Hedg_1 < StopLevel) _Tral_Hedg_1 = StopLevel;
  if(_Tral_Hedg_2 < StopLevel) _Tral_Hedg_2 = StopLevel;
//+------------------------------------------------------------------+
//---------------------  
//Ïðåîáðàçóåì çàäàííûå ïîëüçîâàòåëåì ïóíêòû â ïèïñû èíñòðóìåíòà
  Profit_Main = _Profit_Main*k;
  Tral_Main = _Tral_Main*k;
  Loss_Main = _Loss_Main*k;
  
  Distans_1 = _Distans_1*k;
  Profit_Hedg_1 = _Profit_Hedg_1*k;
  Tral_Hedg_1 = _Tral_Hedg_1*k;
  Loss_Hedg_1 = _Loss_Hedg_1*k;

  Distans_2 = _Distans_2*k;
  Profit_Hedg_2 = _Profit_Hedg_2*k;
  Tral_Hedg_2 = _Tral_Hedg_2*k;
  Loss_Hedg_2 = _Loss_Hedg_2*k;
//---------------------  
// ôîðìèðóåì öåíû îòêðûòèÿ îðäåðîâ
  Price_Hedg_Buy_1 = Price_Top + Distans_1;
  Price_Hedg_Buy_2 = Price_Top + Distans_2;
  Price_Hedg_Sell_1 = Price_Boot - Distans_1; 
  Price_Hedg_Sell_2 = Price_Boot - Distans_2;
  
  if(Show_Info == true)
  {
    Comment
    ( 
      "\nmin StopLevel = ",StopLevel,
      "\nDistans_1 = ",DoubleToStr(Distans_1,Digits),
      "\nDistans_2 = ",DoubleToStr(Distans_2,Digits),
      "\n",
//      "\nçíàêîâ ïîñëå çàïÿòîé = ",Digits, 
      "\nêîýôôèöèåíò = ", DoubleToStr(k,Digits),
//      "\nAsk = ", DoubleToStr(Ask,Digits),
//      "\nBid = ", DoubleToStr(Bid,Digits),
      "\nÑïðýä = ", DoubleToStr(Spread*k,Digits),
      "\n",
      "\nÕåäæ_Top_2 = ",DoubleToStr(Price_Hedg_Buy_2,Digits),
      "\nÕåäæ_Top_1 = ",DoubleToStr(Price_Hedg_Buy_1,Digits),
      "\nPrice_Top = ", DoubleToStr(Price_Top,Digits),
      "\n",
      "\nPrice_Boot = ", DoubleToStr(Price_Boot,Digits),
      "\nÕåäæ_Boot_1 = ",DoubleToStr(Price_Hedg_Sell_1,Digits),
      "\nÕåäæ_Boot_2 = ",DoubleToStr(Price_Hedg_Sell_2,Digits)
    );
  }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
//+------------------------------------------------------------------+
//| ÓÑÒÀÍÎÂÊÀ ÂÅÐÕÍÅÉ ÃÐÓÏÏÛ ÎÐÄÅÐÎÂ                                 |
//|                                                                  |
//| åñëè òåêóùàÿÿ öåíà ÂÛØÅ çàäàííîé,                                |                    
//| è íå óñòàíîâëåíà íèæíÿÿ ãðóïïà îðäåðîâ BUY,                      |
//| óñòàíàâëèâàåì îðäåð SELL_MAIN è 2 õåäæ îðäåðà BUY                |
//+------------------------------------------------------------------+
  
  if(TICKET_BUY_MAIN == 0 && TICKET_SELL_HEDG_1 == 0 && TICKET_SELL_HEDG_2 == 0) // åñëè íèæíÿÿ ãðóïïà íå óñòàíîâëåíà
  {
    if(TICKET_SELL_MAIN == 0 && Bid >= Price_Top)  //åñëè îðäåð SELL_MAIN íå îòêðûò, à öåíà ïðåâûñèëà Price_Top
    { TICKET_SELL_MAIN = OrderSend(Symbol(),OP_SELL,Lot_Main,Bid,5,0,0,NULL,0,0,CLR_NONE); // îòêðûâàåì SELL_MAIN
      ERROR = GetLastError();
      Error("Îòêðûòèå SELL_MAIN: ",ERROR);
      if(ERROR != 0) TICKET_SELL_MAIN = 0; // Åñëè îøèáêà îòêðûòèÿ, âîçâðàùàåì òèêåò â 0
    }
    if(TICKET_BUY_HEDG_1 == 0 && Ask >= Price_Hedg_Buy_1) //åñëè îðäåð BUY_HEDG_1 íå îòêðûò, à öåíà ïðåâûñèëà Price_Hedg_Buy_1
    { TICKET_BUY_HEDG_1 = OrderSend(Symbol(),OP_BUY,Lot_Hedg_1,Ask,5,0,0,NULL,0,0,CLR_NONE);
      ERROR = GetLastError();
      Error("Îòêðûòèå BUY_HEDG_1: ",ERROR);
      if(ERROR != 0) TICKET_BUY_HEDG_1 = 0; // Åñëè îøèáêà îòêðûòèÿ, âîçâðàùàåì òèêåò â 0
    }  
    if(TICKET_BUY_HEDG_2 == 0 && Ask >= Price_Hedg_Buy_2) //åñëè îðäåð BUY_HEDG_2 íå îòêðûò, à öåíà ïðåâûñèëà Price_Hedg_Buy_2
    { TICKET_BUY_HEDG_2 = OrderSend(Symbol(),OP_BUY,Lot_Hedg_2,Ask,5,0,0,NULL,0,0,CLR_NONE);
      ERROR = GetLastError();
      Error("Îòêðûòèå BUY_HEDG_2: ",ERROR);
      if(ERROR != 0) TICKET_BUY_HEDG_2 = 0; // Åñëè îøèáêà îòêðûòèÿ, âîçâðàùàåì òèêåò â 0
    }  
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| ÓÑÒÀÍÎÂÊÀ ÍÈÆÍÅÉ ÃÐÓÏÏÛ ÎÐÄÅÐÎÂ                                  |
//|                                                                  |
//| åñëè òåêóùàÿÿ öåíà ÍÈÆÅ çàäàííîé,                                |                    
//| è íå óñòàíîâëåíà âåðõíÿÿ ãðóïïà îðäåðîâ SELL,                    |
//| óñòàíàâëèâàåì îðäåð BUY_MAIN è 2 õåäæ îðäåðà SELL                |
//+------------------------------------------------------------------+
  if(TICKET_SELL_MAIN == 0 && TICKET_BUY_HEDG_1 == 0 && TICKET_BUY_HEDG_2 == 0) //åñëè âåðõíÿÿ ãðóïïà íå óñòàíîâëåíà
  {
    if(TICKET_BUY_MAIN == 0 && Ask <= Price_Boot)  //åñëè îðäåð BUY_MAIN íå îòêðûò, à öåíà íèæå Price_Boot
    { TICKET_BUY_MAIN = OrderSend(Symbol(),OP_BUY,Lot_Main,Ask,5,0,0,NULL,0,0,CLR_NONE); // îòêðûâàåì BUY_MAIN
      ERROR = GetLastError();
      Error("Îòêðûòèå BUY_MAIN: ",ERROR);
      if(ERROR != 0) TICKET_BUY_MAIN = 0; // Åñëè îøèáêà îòêðûòèÿ, âîçâðàùàåì òèêåò â 0
    }
    if(TICKET_SELL_HEDG_1 == 0 && Bid <= Price_Hedg_Sell_1) //åñëè îðäåð SELL_HEDG_1 åù¸ íå îòêðûò, à öåíà íèæå Price_Hedg_Sell_1
    { TICKET_SELL_HEDG_1 = OrderSend(Symbol(),OP_SELL,Lot_Hedg_1,Bid,5,0,0,NULL,0,0,CLR_NONE);
      ERROR = GetLastError();
      Error("Îòêðûòèå SELL_HEDG_1: ",ERROR);
      if(ERROR != 0) TICKET_SELL_HEDG_1 = 0; // Åñëè îøèáêà îòêðûòèÿ, âîçâðàùàåì òèêåò â 0
    }  
    if(TICKET_SELL_HEDG_2 == 0 && Bid <= Price_Hedg_Sell_2) //åñëè îðäåð SELL_HEDG_2 åù¸ íå îòêðûò, à öåíà íèæå Price_Hedg_Sell_2
    { TICKET_SELL_HEDG_2 = OrderSend(Symbol(),OP_SELL,Lot_Hedg_2,Bid,5,0,0,NULL,0,0,CLR_NONE);
      ERROR = GetLastError();
      Error("Îòêðûòèå SELL_HEDG_2: ",ERROR);
      if(ERROR != 0) TICKET_SELL_HEDG_2 = 0; // Åñëè îøèáêà îòêðûòèÿ, âîçâðàùàåì òèêåò â 0
    }  
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                  ÌÎÄÈÔÈÊÀÖÈß ÎÐÄÅÐÎÂ                             |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|            ìîäèôèêàöèÿ âåðõíåé ãðóïïû îðäåðîâ                    |
//+------------------------------------------------------------------+
if(TICKET_SELL_MAIN != 0) // ïðîâåðêà îñíîâíîãî îðäåðà åñëè ïðèáûëü, óñòàíàâëèâàåì òðàë
{ 
  OrderSelect(TICKET_SELL_MAIN, SELECT_BY_TICKET);
  if(OrderCloseTime() == 0)
  {
    if(OrderOpenPrice() - Ask >= Tral_Main && Ask < Last_Tral_SELL_MAIN) 
    { 
      Last_Tral_SELL_MAIN = Ask;
      OrderModify(TICKET_SELL_MAIN,OrderOpenPrice(),Ask + Tral_Main,OrderTakeProfit(),0,CLR_NONE);
      Error("Òðàë SELL_MAIN: ",GetLastError());
    }
  }
}
if(TICKET_BUY_HEDG_1 != 0) // ïðîâåðêà  õåäæ îðäåðà 1 åñëè ïðèáûëü, óñòàíàâëèâàåì òðàë
{ 
  OrderSelect(TICKET_BUY_HEDG_1, SELECT_BY_TICKET);
  if(OrderCloseTime() == 0)
  {
    if(Bid - OrderOpenPrice() >= Tral_Hedg_1 && Bid > Last_Tral_BUY_HEDG_1) 
    { 
      Last_Tral_BUY_HEDG_1 = Bid;
      OrderModify(TICKET_BUY_HEDG_1,OrderOpenPrice(),Bid - Tral_Hedg_1,OrderTakeProfit(),0,CLR_NONE);
      Error("Òðàë BUY_HEDG_1: ",GetLastError());
    }
  }
}
if(TICKET_BUY_HEDG_2 != 0) // ïðîâåðêà  õåäæ îðäåðà 2 åñëè ïðèáûëü, óñòàíàâëèâàåì òðàë
{ 
  OrderSelect(TICKET_BUY_HEDG_2, SELECT_BY_TICKET);
  if(OrderCloseTime() == 0)
  {
    if(Bid - OrderOpenPrice() >= Tral_Hedg_2 && Bid > Last_Tral_BUY_HEDG_2) 
    { 
      Last_Tral_BUY_HEDG_2 = Bid;
      OrderModify(TICKET_BUY_HEDG_2,OrderOpenPrice(),Bid - Tral_Hedg_2,OrderTakeProfit(),0,CLR_NONE);
      Error("Òðàë BUY_HEDG_2: ",GetLastError());
    }
  }
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|             ìîäèôèêàöèÿ íèæíåé ãðóïïû îðäåðîâ                    |
//+------------------------------------------------------------------+
if(TICKET_BUY_MAIN != 0) // ïðîâåðêà îñíîâíîãî îðäåðà åñëè ïðèáûëü, óñòàíàâëèâàåì òðàë
{ 
  OrderSelect(TICKET_BUY_MAIN, SELECT_BY_TICKET);
  if(OrderCloseTime() == 0)
  {
    if(Bid - OrderOpenPrice() >= Tral_Main && Bid > Last_Tral_BUY_MAIN) 
    { 
      Last_Tral_BUY_MAIN = Bid;
      OrderModify(TICKET_BUY_MAIN,OrderOpenPrice(),Bid - Tral_Main,OrderTakeProfit(),0,CLR_NONE);
      Error("Òðàë BUY_MAIN: ",GetLastError());
    }
  }
}
if(TICKET_SELL_HEDG_1 != 0) // ïðîâåðêà  õåäæ îðäåðà 1 åñëè ïðèáûëü, óñòàíàâëèâàåì òðàë
{ 
  OrderSelect(TICKET_SELL_HEDG_1, SELECT_BY_TICKET);
  if(OrderCloseTime() == 0)
  {
    if(OrderOpenPrice() - Ask >= Tral_Hedg_1 && Ask < Last_Tral_SELL_HEDG_1) 
    { 
      Last_Tral_SELL_HEDG_1 = Ask;
      OrderModify(TICKET_SELL_HEDG_1,OrderOpenPrice(),Ask + Tral_Hedg_1,OrderTakeProfit(),0,CLR_NONE);
      Error("Òðàë SELL_HEDG_1: ",GetLastError());
    }
  }
}
if(TICKET_SELL_HEDG_2 != 0) // ïðîâåðêà  õåäæ îðäåðà 2 åñëè ïðèáûëü, óñòàíàâëèâàåì òðàë
{ 
  OrderSelect(TICKET_SELL_HEDG_2, SELECT_BY_TICKET);
  if(OrderCloseTime() == 0)
  {
    if(OrderOpenPrice() - Ask >= Tral_Hedg_2 && Ask < Last_Tral_SELL_HEDG_2) 
    { 
      Last_Tral_SELL_HEDG_2 = Ask;  
      OrderModify(TICKET_SELL_HEDG_2,OrderOpenPrice(),Ask + Tral_Hedg_2,OrderTakeProfit(),0,CLR_NONE);
      Error("Òðàë SELL_HEDG_2: ",GetLastError());
    }
  }
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                        ÇÀÊÐÛÒÈÅ ÎÐÄÅÐÎÂ                          |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|               çàêðûòèå âåðõíåé ãðóïïû îðäåðîâ                    |
//+------------------------------------------------------------------+
double Profit,
       Loss;
// çàêðûòèå ïî ïðèáûëè èëè óáûòêó
if(TICKET_SELL_MAIN != 0)
{ 
  OrderSelect(TICKET_SELL_MAIN, SELECT_BY_TICKET);
  Profit = OrderOpenPrice() - Ask;
  Loss   = Ask - OrderOpenPrice();
  if(OrderCloseTime() == 0)
  {
    if(Profit >= Profit_Main) // Çàêðûâàåì SELL_MAIN ïî ïðèáûëè
    {
      OrderClose (TICKET_SELL_MAIN, Lot_Main, Ask, 5, CLR_NONE);   
      Error("Çàêðûòèå SELL_MAIN ïî ïðèáûëè: ",GetLastError());
    } 
    if(Loss >= Loss_Main)  // Çàêðûâàåì SELL_MAIN ïî óáûòêó
    {
      OrderClose (TICKET_SELL_MAIN, Lot_Main, Ask, 5, CLR_NONE);   
      Error("Çàêðûòèå SELL_MAIN ïî óáûòêó: ",GetLastError());
    } 
  }
}
if(TICKET_BUY_HEDG_1 != 0) // ïðîâåðêà  õåäæ îðäåðà 1 
{ 
  OrderSelect(TICKET_BUY_HEDG_1, SELECT_BY_TICKET);
  Profit = Bid - OrderOpenPrice();
  Loss   = OrderOpenPrice() - Bid;
  if(OrderCloseTime() == 0)
  {
    if(Profit >= Profit_Hedg_1) // Çàêðûâàåì BUY_1 ïî ïðèáûëè
    {
      OrderClose (TICKET_BUY_HEDG_1, Lot_Hedg_1, Bid, 5, CLR_NONE);   
      ERROR = GetLastError();
      Error("Çàêðûòèå BUY_HEDG_1 ïî ïðèáûëè: ",ERROR);
      if(ERROR == 0) TICKET_BUY_HEDG_1 = 0; // Åñëè îðäåð çàêðûò, âîçâðàùàåì òèêåò â 0
    } 
    if(Loss >= Loss_Hedg_1)  // Çàêðûâàåì BUY_1 ïî óáûòêó
    {
      OrderClose (TICKET_BUY_HEDG_1, Lot_Hedg_1, Bid, 5, CLR_NONE);   
      ERROR = GetLastError();
      Error("Çàêðûòèå BUY_HEDG_1 ïî óáûòêó: ",ERROR);
      if(ERROR == 0) TICKET_BUY_HEDG_1 = 0; // Åñëè îðäåð çàêðûò, âîçâðàùàåì òèêåò â 0
    } 
  }
}
if(TICKET_BUY_HEDG_2 != 0) // ïðîâåðêà  õåäæ îðäåðà 1 
{ 
  OrderSelect(TICKET_BUY_HEDG_2, SELECT_BY_TICKET);
  Profit = Bid - OrderOpenPrice();
  Loss   = OrderOpenPrice() - Bid;
  if(OrderCloseTime() == 0)
  {
    if(Profit >= Profit_Hedg_2) // Çàêðûâàåì BUY_2 ïî ïðèáûëè
    {
      OrderClose (TICKET_BUY_HEDG_2, Lot_Hedg_2, Bid, 5, CLR_NONE);   
      ERROR = GetLastError();
      Error("Çàêðûòèå BUY_HEDG_2 ïî ïðèáûëè: ",ERROR);
      if(ERROR == 0) TICKET_BUY_HEDG_2 = 0; // Åñëè îðäåð çàêðûò, âîçâðàùàåì òèêåò â 0
    } 
    if(Loss >= Loss_Hedg_2)  // Çàêðûâàåì BUY_2 ïî óáûòêó
    {
      OrderClose (TICKET_BUY_HEDG_2, Lot_Hedg_2, Bid, 5, CLR_NONE);   
      ERROR = GetLastError();
      Error("Çàêðûòèå BUY_HEDG_2 ïî óáûòêó: ",ERROR);
      if(ERROR == 0) TICKET_BUY_HEDG_2 = 0; // Åñëè îðäåð çàêðûò, âîçâðàùàåì òèêåò â 0
    } 
  }
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| çàêðûòèå íèæíåé ãðóïïû îðäåðîâ                                   |
//+------------------------------------------------------------------+
// çàêðûòèå ïî ïðèáûëè èëè óáûòêó
if(TICKET_BUY_MAIN != 0) // ïðîâåðêà îñíîâíîãî îðäåðà 
{ 
  OrderSelect(TICKET_BUY_MAIN, SELECT_BY_TICKET);
  Profit = Bid - OrderOpenPrice();
  Loss   = OrderOpenPrice() - Bid;
  if(OrderCloseTime() == 0)
  { 
    if( Profit >= Profit_Main) // Çàêðûâàåì BUY_MAIN ïî ïðèáûëè
    {
      OrderClose (TICKET_BUY_MAIN, Lot_Main, Bid, 5, CLR_NONE);   
      Error("Çàêðûòèå BUY_MAIN ïî ïðèáûëè: ",GetLastError());
    } 
    if(Loss >= Loss_Main)  // Çàêðûâàåì BUY_MAIN ïî óáûòêó
    {
      OrderClose (TICKET_BUY_MAIN, Lot_Main, Bid, 5, CLR_NONE);
      Error("Çàêðûòèå BUY_MAIN ïî óáûòêó: ",GetLastError());
    } 
  }
}
if(TICKET_SELL_HEDG_1 != 0) // ïðîâåðêà  õåäæ îðäåðà 1 
{ 
  OrderSelect(TICKET_SELL_HEDG_1, SELECT_BY_TICKET);
  Profit = OrderOpenPrice() - Ask;
  Loss   = Ask - OrderOpenPrice();
  if(OrderCloseTime() == 0)
  {
    if(Profit >= Profit_Hedg_1) // Çàêðûâàåì SELL_HEDG_1 ïî ïðèáûëè
    {
      OrderClose (TICKET_SELL_HEDG_1, Lot_Hedg_1, Ask, 5, CLR_NONE);   
      ERROR = GetLastError();
      Error("Çàêðûòèå SELL_HEDG_1 ïî ïðèáûëè: ",ERROR);
      if(ERROR == 0) TICKET_SELL_HEDG_1 = 0; // Åñëè îðäåð çàêðûò, âîçâðàùàåì òèêåò â 0
    } 
    if(Loss >= Loss_Hedg_1)  // Çàêðûâàåì SELL_HEDG_1 ïî óáûòêó
    {
      OrderClose (TICKET_SELL_HEDG_1, Lot_Hedg_1, Ask, 5, CLR_NONE);
      ERROR = GetLastError();
      Error("Çàêðûòèå SELL_HEDG_1 ïî óáûòêó: ",ERROR);
      if(ERROR == 0) TICKET_SELL_HEDG_1 = 0; // Åñëè îðäåð çàêðûò, âîçâðàùàåì òèêåò â 0
    } 
  }
}
if(TICKET_SELL_HEDG_2 != 0) // ïðîâåðêà  õåäæ îðäåðà 1 
{ 
  OrderSelect(TICKET_SELL_HEDG_2, SELECT_BY_TICKET);
  Profit = OrderOpenPrice() - Ask;
  Loss   = Ask - OrderOpenPrice();
  if(OrderCloseTime() == 0)
  {
    if(Profit >= Profit_Hedg_2) // Çàêðûâàåì SELL_HEDG_1 ïî ïðèáûëè
    {
      OrderClose (TICKET_SELL_HEDG_2, Lot_Hedg_2, Ask, 5, CLR_NONE);
      ERROR = GetLastError();
      Error("Çàêðûòèå SELL_HEDG_2 ïî ïðèáûëè: ",ERROR);
      if(ERROR == 0) TICKET_SELL_HEDG_2 = 0; // Åñëè îðäåð çàêðûò, âîçâðàùàåì òèêåò â 0
    } 
    if(Loss >= Loss_Hedg_2)  // Çàêðûâàåì SELL_HEDG_1 ïî óáûòêó
    {
      OrderClose (TICKET_SELL_HEDG_2, Lot_Hedg_2, Ask, 5, CLR_NONE);   
      ERROR = GetLastError();
      Error("Çàêðûòèå SELL_HEDG_2 ïî óáûòêó: ",ERROR);
      if(ERROR == 0) TICKET_SELL_HEDG_2 = 0; // Åñëè îðäåð çàêðûò, âîçâðàùàåì òèêåò â 0
    } 
  }
}
//+------------------------------------------------------------------+
//----
  return(0);
}
bool Error(string txt, int num_error)
{
  bool ret = false;
  switch(num_error)
  { //---- Êîäû îøèáîê, âîçâðàùàåìûå òîðãîâûì ñåðâåðîì:
    case 0:   Print(txt , "Íåò îøèáîê");                                               break;
    case 1:   Print(txt , "Íåò îøèáêè, íî ðåçóëüòàò íåèçâåñòåí");                      break;
    case 2:   Print(txt , "Îáùàÿ îøèáêà");                                 ret = true; break;
    case 3:   Print(txt , "Íåïðàâèëüíûå ïàðàìåòðû");                                   break;
    case 4:   Print(txt , "Òîðãîâûé ñåðâåð çàíÿò");                        ret = true; break;
    case 5:   Print(txt , "Ñòàðàÿ âåðñèÿ êëèåíòñêîãî òåðìèíàëà");                      break;
    case 6:   Print(txt , "Íåò ñâÿçè ñ òîðãîâûì ñåðâåðîì");                ret = true; break;
    case 7:   Print(txt , "Íåäîñòàòî÷íî ïðàâ");                                        break;
    case 8:   Print(txt , "Ñëèøêîì ÷àñòûå çàïðîñû");                                   break;
    case 9:   Print(txt , "Îïåðàöèÿ íàðóøàþùàÿ ôóíêöèîíèðîâàíèå ñåðâåðà");             break;
    case 64:  Print(txt , "Ñ÷åò çàáëîêèðîâàí");                                        break;
    case 65:  Print(txt , "Íåïðàâèëüíûé íîìåð ñ÷åòà");                                 break;
    case 128: Print(txt , "Èñòåê ñðîê îæèäàíèÿ ñîâåðøåíèÿ ñäåëêè");        ret = true; break;
    case 129: Print(txt , "Íåïðàâèëüíàÿ öåíà");                            ret = true; break;
    case 130: Print(txt , "Íåïðàâèëüíûå ñòîïû");                                       break;
    case 131: Print(txt , "Íåïðàâèëüíûé îáúåì");                                       break;
    case 132: Print(txt , "Ðûíîê çàêðûò");                                             break;
    case 133: Print(txt , "Òîðãîâëÿ çàïðåùåíà");                                       break;  
    case 134: Print(txt , "Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè");               break;
    case 135: Print(txt , "Öåíà èçìåíèëàñü");                              ret = true; break;
    case 136: Print(txt , "Íåò öåíû");                                                 break;
    case 137: Print(txt , "Áðîêåð çàíÿò");                                 ret = true; break;
    case 138: Print(txt , "Íîâûå öåíû");                                   ret = true; break;
    case 139: Print(txt , "Îðäåð çàáëîêèðîâàí è óæå îáðàáàòûâàåòñÿ");                  break;
    case 140: Print(txt , "Ðàçðåøåíà òîëüêî ïîêóïêà");                                 break;
    case 141: Print(txt , "Ñëèøêîì ìíîãî çàïðîñîâ");                       ret = true; break;
    case 145: Print(txt , "Ìîäèôèêàöèÿ çàïðåùåíà, îðäåð ñëèøêîì áëèçîê ê ðûíêó");      break;
    case 146: Print(txt , "Ïîäñèñòåìà òîðãîâëè çàíÿòà");                   ret = true; break;
    case 147: Print(txt , "Èñïîëüçîâàíèå äàòû èñòå÷åíèÿ îðäåðà çàïðåùåíî áðîêåðîì");   break;
    case 148: Print(txt , "Êîëè÷åñòâî îðäåðîâ äîñòèãëî ïðåäåëà.");                     break;
    //---- Êîäû îøèáîê âûïîëíåíèÿ MQL4-ïðîãðàììû:
    case 4000: Print(txt , "Íåò îøèáêè");                                              break;
    case 4001: Print(txt , "Íåïðàâèëüíûé óêàçàòåëü ôóíêöèè");                          break;
    case 4002: Print(txt , "Èíäåêñ ìàññèâà - âíå äèàïàçîíà");                          break;
    case 4003: Print(txt , "Íåò ïàìÿòè äëÿ ñòåêà ôóíêöèé");                            break;
    case 4004: Print(txt , "Ïåðåïîëíåíèå ñòåêà ïîñëå ðåêóðñèâíîãî âûçîâà");            break;
    case 4005: Print(txt , "Íà ñòåêå íåò ïàìÿòè äëÿ ïåðåäà÷è ïàðàìåòðîâ");             break;
    case 4006: Print(txt , "Íåò ïàìÿòè äëÿ ñòðîêîâîãî ïàðàìåòðà");                     break;
    case 4007: Print(txt , "Íåò ïàìÿòè äëÿ âðåìåííîé ñòðîêè");                         break;
    case 4008: Print(txt , "Íåèíèöèàëèçèðîâàííàÿ ñòðîêà");                             break;
    case 4009: Print(txt , "Íåèíèöèàëèçèðîâàííàÿ ñòðîêà â ìàññèâå");                   break;
    case 4010: Print(txt , "Íåò ïàìÿòè äëÿ ñòðîêîâîãî ìàññèâà");                       break;
    case 4011: Print(txt , "Ñëèøêîì äëèííàÿ ñòðîêà");                                  break;
    case 4012: Print(txt , "Îñòàòîê îò äåëåíèÿ íà íîëü");                              break;
    case 4013: Print(txt , "Äåëåíèå íà íîëü");                                         break;
    case 4014: Print(txt , "Íåèçâåñòíàÿ êîìàíäà");                                     break;
    case 4015: Print(txt , "Íåïðàâèëüíûé ïåðåõîä");                                    break;
    case 4016: Print(txt , "Íåèíèöèàëèçèðîâàííûé ìàññèâ");                             break;
    case 4017: Print(txt , "Âûçîâû DLL íå ðàçðåøåíû");                                 break;
    case 4018: Print(txt , "Íåâîçìîæíî çàãðóçèòü áèáëèîòåêó");                         break;
    case 4019: Print(txt , "Íåâîçìîæíî âûçâàòü ôóíêöèþ");                              break;
    case 4020: Print(txt , "Âûçîâû âíåøíèõ áèáëèîòå÷íûõ ôóíêöèé íå ðàçðåøåíû");        break; 
    case 4021: Print(txt , "Íåäîñòàòî÷íî ïàìÿòè äëÿ ñòðîêè, âîçâðàùàåìîé èç ôóíêöèè"); break;
    case 4022: Print(txt , "Ñèñòåìà çàíÿòà");                                          break;
    case 4050: Print(txt , "Íåïðàâèëüíîå êîëè÷åñòâî ïàðàìåòðîâ ôóíêöèè");              break;
    case 4051: Print(txt , "Íåäîïóñòèìîå çíà÷åíèå ïàðàìåòðà ôóíêöèè");                 break;
    case 4052: Print(txt , "Âíóòðåííÿÿ îøèáêà ñòðîêîâîé ôóíêöèè");                     break;
    case 4053: Print(txt , "Îøèáêà ìàññèâà");                                          break;
    case 4054: Print(txt , "Íåïðàâèëüíîå èñïîëüçîâàíèå ìàññèâà-òàéìñåðèè");            break;
    case 4055: Print(txt , "Îøèáêà ïîëüçîâàòåëüñêîãî èíäèêàòîðà");                     break;
    case 4056: Print(txt , "Ìàññèâû íåñîâìåñòèìû");                                    break;
    case 4057: Print(txt , "Îøèáêà îáðàáîòêè ãëîáàëüíûåõ ïåðåìåííûõ");                 break;
    case 4058: Print(txt , "Ãëîáàëüíàÿ ïåðåìåííàÿ íå îáíàðóæåíà");                     break;
    case 4059: Print(txt , "Ôóíêöèÿ íå ðàçðåøåíà â òåñòîâîì ðåæèìå");                  break;
    case 4060: Print(txt , "Ôóíêöèÿ íå ðàçðåøåíà");                                    break;
    case 4061: Print(txt , "Îøèáêà îòïðàâêè ïî÷òû");                                   break;
    case 4062: Print(txt , "Îæèäàåòñÿ ïàðàìåòð òèïà string");                          break;
    case 4063: Print(txt , "Îæèäàåòñÿ ïàðàìåòð òèïà integer");                         break;
    case 4064: Print(txt , "Îæèäàåòñÿ ïàðàìåòð òèïà double");                          break;
    case 4065: Print(txt , " êà÷åñòâå ïàðàìåòðà îæèäàåòñÿ ìàññèâ");                   break;
    case 4066: Print(txt , "Çàïðîøåííûå èñòîðè÷åñêèå äàííûå â ñîñòîÿíèè îáíîâëåíèÿ");  break;
    case 4067: Print(txt , "Îøèáêà ïðè âûïîëíåíèè òîðãîâîé îïåðàöèè");                 break;
    case 4099: Print(txt , "Êîíåö ôàéëà");                                             break;
    case 4100: Print(txt , "Îøèáêà ïðè ðàáîòå ñ ôàéëîì");                              break;
    case 4101: Print(txt , "Íåïðàâèëüíîå èìÿ ôàéëà");                                  break;
    case 4102: Print(txt , "Ñëèøêîì ìíîãî îòêðûòûõ ôàéëîâ");                           break;
    case 4103: Print(txt , "Íåâîçìîæíî îòêðûòü ôàéë");                                 break;
    case 4104: Print(txt , "Íåñîâìåñòèìûé ðåæèì äîñòóïà ê ôàéëó");                     break;
    case 4105: Print(txt , "Íè îäèí îðäåð íå âûáðàí");                                 break;
    case 4106: Print(txt , "Íåèçâåñòíûé ñèìâîë");                                      break;
    case 4107: Print(txt , "Íåïðàâèëüíûé ïàðàìåòð öåíû äëÿ òîðãîâîé ôóíêöèè");         break;
    case 4108: Print(txt , "Íåâåðíûé íîìåð òèêåòà");                                   break;
    case 4109: Print(txt , "Òîðãîâëÿ íå ðàçðåøåíà. Èçìåíèòå ñâîéñòâàõ ýêñïåðòà.");     break;
    case 4110: Print(txt , "Äëèííûå ïîçèöèè íå ðàçðåøåíû. Íåîáõîäèìî ïðîâåðèòü ñâîéñòâà ýêñïåðòà.");  break;
    case 4111: Print(txt , "Êîðîòêèå ïîçèöèè íå ðàçðåøåíû. Íåîáõîäèìî ïðîâåðèòü ñâîéñòâà ýêñïåðòà."); break;
    case 4200: Print(txt , "Îáúåêò óæå ñóùåñòâóåò");                                   break;
    case 4201: Print(txt , "Çàïðîøåíî íåèçâåñòíîå ñâîéñòâî îáúåêòà");                  break;
    case 4202: Print(txt , "Îáúåêò íå ñóùåñòâóåò");                                    break;
    case 4203: Print(txt , "Íåèçâåñòíûé òèï îáúåêòà");                                 break;
    case 4204: Print(txt , "Íåò èìåíè îáúåêòà");                                       break;
    case 4205: Print(txt , "Îøèáêà êîîðäèíàò îáúåêòà");                                break;
    case 4206: Print(txt , "Íå íàéäåíî óêàçàííîå ïîäîêíî");                            break;
    case 4207: Print(txt , "Îøèáêà ïðè ðàáîòå ñ îáúåêòîì");                            break;
    default:   Print(txt , "Íåèçâåñòíàÿ îøèáêà");
  }
  if(num_error != 0) PlaySound("Error.wav");
//----
  return(ret);
}


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