Orders Execution
Miscellaneous
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 Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---