Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
omzdwwi7739cyjayvs_1_65
//+------------------------------------------------------------------+
//| Óíèâåðñàë_1.64.mq4 |
//| Drknn |
//| 02.03.2007 drknn@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Drknn"
#property link "drknn@mail.ru"
//+-------------------------------------------------------------------------------------------------+
//| Ñîâåòíèê óìååò: |
//| - Òðàëèòü îðäåðà ëþáîãî òèïà (êàê ðûíî÷íûå, òàê è îòëîæåííûå) |
//| - Ïèïñîâàòü |
//| - Ëîâèòü óâåëè÷åíèå äåïîçèòà íà íóæíîå êîëè÷åñòâî ïðîöåíòîâ è, ïîéìàâ åãî |
//| ñîîáùèòü ïîëüçîâàòåëþ, ÷òî äåïîçèò íà çàäàííîå êîëè÷åñòâî ïðîöåíòîâ óâåëè÷åí. |
//| - Óñòàíàâëèâàòü òå îòëîæåííûå îðäåðà, êîòîðûå ðàçðåøèë ïîëüçîâàòåëü, åñëè ñîâåòíèê âäðóã |
//| îáíàðóæèò, ÷òî îðäåðà òàêîãî â ðûíêå íåò (íàïðèìåð, îðäåð ñðàáîòàë - ñòàë ðûíî÷íûì) |
//| - Ïîêàçûâàåò íà ýêðàíå ÷òî è êàê ó íåãî íàñòðåíî, ÷òîá êàæäûé ðàç íå ëàçèòü â íàñòðîéêè |
//| |
//| - Ñîâåòíèê çàäóìûâàëñÿ êàê óíèâåðñàëüíûé òðåéëèíã, à âñ¸ îñòàëüíîå äîáàâëåíî ëèøü äëÿ óäîáñòâà. |
//| - Íåíóæíûå ôóíêöèè ìîæíî ëåãêî îòêëþ÷èòü â îêíå ñâîéñòâ ñîâåòíèêà. |
//| - Åñëè ïîëüçîâàòåëü ðàçðåøèë ñîâåòíèêó óñòàíàâëèâàòü îòëîæåííûé îðäåð êàêîãî ëèáî òèïà, |
//| òî ýòîò îðäåð áóäåò óñòàíîâëåí îò òåêóùåé öåíû íà ðàññòîÿíèè _Step äëÿ îðäåðîâ äàííîãî òèïà. |
//+-------------------------------------------------------------------------------------------------+
// ================ Ïàðàìåòðû, íàñòðàèâàèìûå ïîëüçîâàòåëåì ===========================
// ----- Ïàðàìåòðû, îáùèå äëÿ âñåõ îðäåðîâ --------------------------------------------
extern string t1="------ Ó îòêðûòûõ âðó÷íóþ MAGIC = 0 ------";
extern int MAGIC=0; //Ó îðäåðîâ îòêðûòûõ âðó÷íóþ MAGIC=0
extern double Lot=0.2; //Ëîò äëÿ óñòàíîâêè îðäåðà
// ----- Ðàçðåøåíèå óñòàíîâèòü òîò èëè èíîé îðäåð -------------------------------------
extern string t2="--- Âûêëþ÷àòåëè îòëîæåííûõ ---";
extern bool WaitClose=true; //Åñëè true, òî îòëîæåííûé âñòàíåò òîëüêî òîãäà, êîãäà çàêðîåòñÿ ðûíî÷íûé
//èíà÷å íîâûé áóäåò âûñòàâëåí êàê òîëüêî îòëîæåííûé ñðàáîòàåò
extern bool Ustan_BuyStop=true; //ìîæíî ëè ñòàâèü Áàé-Còîï åñëè â ðûíêå òàêîãî ó íàñ íåò
extern bool Ustan_SellLimit=false;//ìîæíî ëè ñòàâèü Cåëë-Ëèìèò åñëè â ðûíêå òàêîãî ó íàñ íåò
extern bool Ustan_SellStop=true; //ìîæíî ëè ñòàâèü Cåëë-Cñòîï åñëè â ðûíêå òàêîãî ó íàñ íåò
extern bool Ustan_BuyLimit=false; //ìîæíî ëè ñòàâèü Áàé-Ëèìèò åñëè â ðûíêå òàêîãî ó íàñ íåò
// ----- Ïàðàìåòðû ðûíî÷íûõ îðäåðîâ ---------------------------------------------
extern string t3="--- Ïàðàìåòðû ðûíî÷íûõ ---";
extern int ryn_MaxOrderov=2; //îãðàíè÷åíèå ìàêñèìàëüíîãî ÷èñëà ðûíî÷íûõ îðäåðîâ îäíîãî òèïà
extern int ryn_TakeProfit=200; //Òåéê-Ïðîôèò ðûíî÷íîãî îðäåðà
extern int ryn_StopLoss=100; //Ñòîï-Ëîññ ðûíî÷íîãî îðäåðà
extern int ryn_TrStop=100; //Òðåéëèíã-Ñòîï ðûíî÷íîãî îðäåðà. Åñëè = 0 òî òàðëà íåò
extern int ryn_TrStep=10; //Øàã òðàëà ðûíî÷íîãî îðäåðà
extern bool WaitProfit=true; // Åñëè true, òî æäàòü ïðîôèò = çíà÷åíèþ TrailingStop è òîëüêî ïîòîì íà÷èíàòü òðàëèòü
//Èíà÷å, òðåéëèíãîâàòü íå äîæèäàÿñü ïîëîæèòåëüíîãî ïðîôèòà
// ----- Ïàðàìåòðû ñòîïîâûõ îðäåðîâ ---------------------------------------------
extern string t4="--- Ïàðàìåòðû ñòîïîâûõ ---";
extern int st_Step=50; //Ðàññòîÿíèå â ïóíêòàõ îò óðîâíÿ òåêóùåé öåíû äî óîðâíÿ óñòàíîâêè ñòîïîâîãî îðäåðà
extern int st_TakeProfit=200; //Òåéê-Ïðîôèò ñòîïîâûõ îðäåðîâ
extern int st_StopLoss=100; //Ñòîï-Ëîññ ñòîïîâûõ îðäåðîâ
extern int st_TrStop=0; //Òðåéëèíã-Ñòîï ñòîïîâûõ îðäåðîâ. Åñëè = 0 òî òàðëà íåò è st_TrStep íå âàæåí
extern int st_TrStep=3; //Øàã òðàëà ñòîïîâûõ îðäåðîâ
// ----- Ïàðàìåòðû ëèìèòíûõ îðäåðîâ ---------------------------------------------
extern string t5="--- Ïàðàìåòðû ëèìèòíûõ ---";
extern int lim_Step=50; //Ðàññòîÿíèå â ïóíêòàõ îò óðîâíÿ òåêóùåé öåíû äî óîðâíÿ óñòàíîâêè ëèìèòíîãî îðäåðà
extern int lim_TakeProfit=200; //Òåéê-Ïðîôèò ëèìèòíûõ îðäåðîâ
extern int lim_StopLoss=100; //Ñòîï-Ëîññ ëèìèòíûõ îðäåðîâ
extern int lim_TrStop=0; //Òðåéëèíã-Ñòîï ëèìèòíûõ îðäåðîâ. Åñëè = 0 òî òàðëà íåò è lim_TrStep íå âàæåí
extern int lim_TrStep=3; //Øàã òðåéëèíãà ëèìèòíûõ îðäåðîâ
//------ Îòêðûòü (óñòàîâèòü) îðäåðà â çàäàííîå âðåìÿ ----------------------------------------------------------
extern string t6="--- Òîëüêî äëÿ ðàáîòû ïî âðåìåíè ---";
extern bool UseTime=true; //âêë/âûêë ïðèâÿçêó ê óêàçàííîó âðåìåíè. Åñëè=false, òî âñå òàéìîâûå ïàðàìåòðû íå âàæíû,
//à èìåííî, ïàðàìåòðû: Hhour, Mminute, Popravka_Hhour, TIME_Buy, TIME_Sell, TIME_BuyStop,
//TIME_SellLimit, TIME_SellStop, TIME_BuyLimit.
extern int Hhour=23; //òåðìèíàëüíûå ÷àñû ñîâåðøåíèÿ ñäåëêè
extern int Mminute=59; //òåðìèíàëüíûå ìèíóòû ñîâåðøåíèÿ ñäåëêè
extern bool TIME_Buy=false; //âêë/âûêë îòêðûâàòüñÿ ëè íà ïîêóïêó â çàäàííîå âðåìÿ
extern bool TIME_Sell=false; //âêë/âûêë îòêðûâàòüñÿ ëè íà ïðîäàæó
extern bool TIME_BuyStop=true; //ìîæíî ëè óñòàíîâèòü ÁàéCòîï â çàäàííîå âðåìÿ
extern bool TIME_SellLimit=false; //ìîæíî ëè óñòàíîâèòü CåëëËèìèò â çàäàííîå âðåìÿ
extern bool TIME_SellStop=true; //ìîæíî ëè óñòàíîâèòü CåëëCñòîï â çàäàííîå âðåìÿ
extern bool TIME_BuyLimit=false; //ìîæíî ëè óñòàíîâèòü ÁàéËèìèò â çàäàííîå âðåìÿ
// ----- Ïàðàìåòðû ïèïñîâêè ----------------------------------------------------
extern string t7="--- Ïèïñîâêà ---";
extern int PipsProfit=0; //ïðîôèò ïðè ïèïñîâêå ìîæíî ñòàâèòü 1, 2, 3, ...
extern int Proskalz=3; //Ïðîñêàëüçûâàíèå â ïóíêòàõ (íóæíî òîëüêî êîãäà PipsProfit>0)
// ----------- Îòëàâëèâàåì óâåëè÷åíèå äåïîçèòà --------------------------
extern string t8="--- Ãëîáàëüíûå óðîâíè ---";
extern bool UseGlobalLevels=true; //îòëîâèòü óâåëè÷åíèå è óìåíüøåíèå äåïîçèòà çàäàííîå ÷èñëî ïðîöåíòîâ
//åñëè UseGlobalLevels=false, òî çíà÷åíèt Global_TakeProfit è Global_StopLoss íå âàæíî.
extern double Global_TakeProfit=2.0; //Ãëîáàëüíûé Òåéê-Ïðîôèò (çàäà¸òñÿ â ïðîöåíòàõ)
extern double Global_StopLoss=2.0; //Ãëîáàëüíûé Ñòîï-Ëîññ (çàäà¸òñÿ â ïðîöåíòàõ)
// ----- Ïðî÷èå óñòàíîâêè ------------------------------------------------------
extern string t9="--- Ïðî÷èå ïàðàìåòðû ---";
extern bool UseOrderSound=true; // Èñïîëüçîâàòü çâóêîâîé ñèãíàë äëÿ óñòàíîâêè îðäåðîâ
extern bool UseTrailingSound=true; // Èñïîëüçîâàòü çâóêîâîé ñèãíàë äëÿ òðåéëèíãà
extern string NameOrderSound ="alert.wav"; // Íàèìåíîâàíèå çâóêîâîãî ôàéëà äëÿ îðäåðîâ
extern string NameTrallingSound ="expert.wav";// Íàèìåíîâàíèå çâóêîâîãî ôàéëà äëÿ òðåéëèíãà
// ================== Ãëîáàëüíûå ïåðåìåííûå ===============================================================
string Comm1,Comm2,Comm3,Comm4,Comm5,Comm6,Comm7,ED,SMB;
double PNT,NewPrice,SL,TP,Balans,Free;
int MinLevel,i,SchBuyStop,SchSellStop,SchBuyLimit,SchSellLimit,SchSell,SchBuy,SBid,SAsk,BBid,BAsk,GTP,GSL,GLE,total;
bool fm,Rezult,TrailBuyStop,TrailSellStop,TrailBuyLimit,TrailSellLimit,SigBuy,SigSell,NewOrder;
bool SigTIME_Buy,SigTIME_Sell,SigTIME_BuyStop,SigTIME_SellLimit,SigTIME_SellStop,SigTIME_BuyLimit;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
if(!IsExpertEnabled())//åñëè ëîæü
{
Alert("Îøèáêà! Íå íàæàòà êíîïêà *Ñîâåòíèêè*"); Comment("Îøèáêà! Íå íàæàòà êíîïêà *Ñîâåòíèêè*"); return(0);
}
else
{
Comment("Êàê òîëüêî öåíà èçìåíèòñÿ, Ñîâåòíèê íà÷í¸ò ðàáîòó."); Print("Êàê òîëüêî öåíà èçìåíèòñÿ, Ñîâåòíèê íà÷í¸ò ðàáîòó.");
}
SMB=Symbol();//Ñèìâîë âàëþòíîé ïàðû
PNT=MarketInfo(SMB,MODE_POINT);//Ðàçìåð ïóíêòà â âàëþòå êîòèðîâêè. Äëÿ òåêóùåãî èíñòðóìåíòà õðàíèòñÿ â ïðåäîïðåäåëåííîé ïåðåìåííîé Point
MinLevel=MarketInfo(SMB,MODE_STOPLEVEL);//Ìèíèìàëüíî äîïóñòèìûé óðîâåíü ñòîï-ëîññà/òåéê-ïðîôèòà â ïóíêòàõ
Proverka();
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
RefreshRates();
//----Ïåðâè÷íûå ïðîâåðêè äàííûõ
if(!IsTradeAllowed())
{
Comment("Òîðãîâëÿ çàïðåùåíà â íàñòðîéêàõ òåðìèíàëà, ëèáî òîðãîâûé ïîòîê çàíÿò");
return(0);
}
Proverka();
//----Êîíåö ïåðâè÷íûõ ïðîâåðîê äàííûõ
if(ryn_TrStop>0 && ryn_TrStop>=MinLevel) Comm1="Òðàë ðûíî÷íûõ - Âêë."; else Comm1="Òðàë ðûíî÷íûõ - Îòêë.";
if (lim_TrStop>0 && lim_TrStop>=MinLevel) Comm2="Òðàë ëèìèòíûõ - Âêë."; else Comm2="Òðàë ëèìèòíûõ - Îòêë.";
if (st_TrStop>0 && st_TrStop>=MinLevel) Comm3="Òðàë ñòîïîâûõ - Âêë."; else Comm3="Òðàë ñòîïîâûõ - Îòêë.";
if (PipsProfit>0) Comm4="Ïèïñîâêà - Âêë"; else Comm4="Ïèïñîâêà - Îòêë";
double OtlTP=(Balans/100*Global_TakeProfit+Balans);
double OtlSL=(Balans-Balans/100*Global_StopLoss);
GTP=MathCeil(OtlTP);
GSL=MathCeil(OtlSL);
if (UseGlobalLevels)
{
Comm5="- - - - Ãëîáàëüíûå óðîâíè - - - -";
Comm6="Ãëîáàëüíûé Òåéê-Ïðîôèò = "+GTP+" $";
Comm7="Ãëîáàëüíûé Ñòîï-Ëîññ = "+GSL+" $";
}
else
{
Comm5="Ãëîáàëüíûå óðîâíè - Îòêë"; Comm6=""; Comm7="";
}
SchOrders();
SMB=Symbol();
Comment("Îðäåðîâ ñåé÷àñ äëÿ ",SMB," :","\n","Buy = ",SchBuy," Sell = ",SchSell,"\n","BuyStop = ",SchBuyStop,
" SellLimit = ",SchSellLimit,"\n","SellStop = ",SchSellStop," BuyLimit = ",SchBuyLimit,"\n",Comm1,
"\n",Comm2,"\n",Comm3,"\n",Comm4,"\n",Comm5,"\n",Comm6,"\n",Comm7);
// ========================== Óñòàíîâêà îòëîæåííûõ îðäåðîâ ====================================
if(Ustan_BuyStop || Ustan_SellLimit || Ustan_SellStop || Ustan_BuyLimit) {UstanOtlozh();}
//=============================================================================================
//========================== Ðàáîòà ïî çàäàííîìó âðåìåíè =======================
if(UseTime)
{
SigTIME_Buy=false; SigTIME_BuyStop=false; SigTIME_SellStop=false;
SigTIME_Sell=false; SigTIME_SellLimit=false; SigTIME_BuyLimit=false;
if(Hour()==Hhour && Minute()==Mminute)//åñëè òåêóùèå ÷àñ è ìèíóòà ñîâïàäàþò
{
if(TIME_Buy)
{SigTIME_Buy=true; UstanRyn();}
if(TIME_Sell)
{SigTIME_Sell=true; UstanRyn();}
if(TIME_BuyStop)
{SigTIME_BuyStop=true; UstanOtlozh();}
if(TIME_SellLimit)
{SigTIME_SellLimit=true; UstanOtlozh();}
if(TIME_SellStop)
{SigTIME_SellStop=true; UstanOtlozh();}
if(TIME_BuyLimit)
{SigTIME_BuyLimit=true; UstanOtlozh();}
}
}
//============== Îòëàâëèâàåì óâåëè÷åíèå äåïîçèòà íà Pojmat ïðîöåíòîâ =========================
if(UseGlobalLevels)//Åñëè ðàçðåøåíî îòëîâèòü ïðîöåíò óâåëè÷åíèÿ/óìåíüøåíèÿ äåïîçèòà
{
Balans=AccountBalance();//Áàëàíñ ñ÷¸òà
Free=AccountEquity();//Òåêóùåå êîëè÷åñòâî äåíåã â ñòàòüå "Ñðåäñòâà"
if ((Free-Balans)>=(Balans/100*Global_TakeProfit))
{
Print("Äåïîçèò óâåëè÷åí íà ",Global_TakeProfit," ïðîöåíòîâ. Ñóììàðíûé ïðîôèò = ",Free);
Alert("Äåïîçèò óâåëè÷åí íà ",Global_TakeProfit," ïðîöåíòîâ. Ñóììàðíûé ïðîôèò = ",Free);
}
if ((Balans-Free)>=(Balans/100*Global_StopLoss))
{
Print("Äåïîçèò óìåíüøåí íà ",Global_StopLoss," ïðîöåíòîâ. Ñóììàðíûé Ñòîï-Ëîññ = ",Free);
Alert("Äåïîçèò óìåíüøåí íà ",Global_StopLoss," ïðîöåíòîâ. Ñóììàðíûé Ñòîï-Ëîññ = ",Free);
}
}
//=================Íà÷àëî ïèïñîâêè==========================
if (PipsProfit>0)
{
SMB=Symbol();
for(int i=OrdersTotal()-1; i>=0; i-- )
{//Íà÷àëî öèêëà
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {WriteError();}
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true)
{//íà÷àëî ðàáîòû ñ âûáðàííûì îðäåðîì
if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC) continue;
if(OrderType()==OP_BUY)
{
if(Bid>=(OrderOpenPrice()+PipsProfit*Point))
{OrderClose(OrderTicket(),OrderLots(),Bid,Proskalz);}
}
if(OrderType()==OP_SELL)
{
if(Ask<=(OrderOpenPrice() - PipsProfit*Point))
OrderClose(OrderTicket(),OrderLots(),Ask,Proskalz);
}
} // êîíåö ðàáîòû ñ âûáðàííûì îðäåðîì
}// Êîíåö öèêëà
}
//================Êîíåö ïèïñîâêè ======================================
// ================= Òðåéëèíã Ðûíî÷íûõ îðäåðîâ ==================================================================================
RefreshRates(); SchOrders(); SMB=Symbol();
if(ryn_TrStop>=MinLevel && ryn_TrStep>0 && (SchBuy>0 || SchSell>0))
{
for(i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {WriteError();}
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol()==SMB && OrderMagicNumber()==MAGIC)
{
TrailingPositions();
}
}
}
}
if(ryn_TrStop>=MinLevel && ryn_TrStep==0)
Alert("Òðåéëèíã íåâîçìîæåí - ryn_TrStep==0");
// ===============================================================================================================================
//============ Òðåéëèíã îòëîæåííûõ îðäåðîâ =============================================================
RefreshRates(); SchOrders();//Îáíîâëÿåì ñ÷¸ò÷èêè êîëè÷åñòâà îðäåðîâ
SMB=Symbol();
if((st_TrStop>0 && SchBuyStop+SchSellStop>0) || (SchBuyLimit+SchSellLimit>0 && lim_TrStop>0))
{
TrailBuyStop=false; TrailSellStop=false; TrailBuyLimit=false; TrailSellLimit=false;
//----
for(i=OrdersTotal()-1;i>=0;i--)
{//Íà÷àëî öèêëà
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {WriteError();}
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true)
{//íà÷àëî ðàáîòû ñ âûáðàííûì îðäåðîì
if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC || OrderType()==OP_BUY || OrderType()==OP_SELL) continue;
if(OrderType()==OP_BUYSTOP) // Îí íàâåðõó è åäåò âíèç
{
if(Ask<OrderOpenPrice()-(st_TrStop+st_TrStep)*Point)
TrailBuyStop=true;
}
if(OrderType()==OP_SELLLIMIT) // Îí íàâåðõó è åäåò âíèç
{
if(Bid<OrderOpenPrice()-(st_TrStop+st_TrStep)*Point)
TrailSellLimit=true;
}
if(OrderType()==OP_SELLSTOP) // Îí âíèçó è åäåò ââåðõ
{
if(Bid>OrderOpenPrice()+(st_TrStop+st_TrStep)*Point)
TrailSellStop=true;
}
if(OrderType()==OP_BUYLIMIT) // Îí âíèçó è åäåò ââåðõ
{
if(Ask>OrderOpenPrice()+(st_TrStop+st_TrStep)*Point)
TrailBuyLimit=true;
}
}//êîíåö ðàáîòû ñ âûáðàííûì îðäåðîì
}//Êîíåö öèêëà
if (TrailSellLimit || TrailBuyLimit || TrailSellStop || TrailBuyStop) TrailingOtlozh();
}
//----
return(0);
}
//+ ========================== Êîíåö ðàáîòû ñîâåòíèêà ========================================================================== +
// ___________________________________________________________________________________________
//| |
//| |
//| Äàëåå èäóò ïîäïðîãðàììû (ôóíêöèè), |
//| êîòîðûå â ñëó÷àå íàäîáíîñòè âûçûâàþòñÿ èç òåëà ñîâåòíèêà |
//| |
//|___________________________________________________________________________________________|
//===================== Óñòàíîâêà îòëîæåííûõ îðäåðîâ ===========================================================================
// Ôóíêöèÿ UstanOtlozh() óñòàíàâëèâàåò íóæíûé îòëîæåííûé îðäåð
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void UstanOtlozh()
{
RefreshRates(); SchOrders(); SMB=Symbol();
if(
(SchSellStop==0 && (SchSell<ryn_MaxOrderov || !WaitClose))
&& ((Ustan_SellStop && st_Step>=MinLevel) || (SigTIME_SellStop && st_Step>=MinLevel))
)
{
NewPrice=Bid-st_Step*Point;
if(st_StopLoss==0) SL=0.0000;
else SL=NewPrice+st_StopLoss*Point;
if(st_TakeProfit==0) TP=0.0000;
else TP=NewPrice-st_TakeProfit*Point;
fm=OrderSend(SMB,OP_SELLSTOP,Lot,NewPrice,3,SL,TP,NULL,MAGIC,0,CLR_NONE);
/*Ñèãíàëèì*/ if(fm!=0 && fm!=-1 && UseOrderSound) PlaySound(NameOrderSound);
/*Êîììåíòèðóåì*/ if(fm!=0 && fm!=-1)
{
SigTIME_SellStop=false;
Print("Îðäåð SellStop óñòàíîâëåí");
Comment("Îðäåð SellStop óñòàíîâëåí");
Sleep(5000); RefreshRates();
}
if(fm==0 || fm==-1)//Åñëè óñòàíîâèòü íå óäàëîñü
{
GLE=GetLastError();
ED=ErrorDescription(GLE);
Print("Îøèáêà ¹ ",GLE," óñòàíîâêè SellStop-îðäåðà");
Print ("Îïèñàíèå îøèáêè - ",ED);
}
}
if(
(SchBuyStop==0 && (SchBuy<ryn_MaxOrderov || !WaitClose))
&& ((Ustan_BuyStop && st_Step>=MinLevel) || (SigTIME_BuyStop && st_Step>=MinLevel))
)
{
NewPrice=Ask+st_Step*Point;
if(st_StopLoss==0) SL=0.0000;
else SL=NewPrice-st_StopLoss*Point;
if(st_TakeProfit==0) TP=0.0000;
else TP=NewPrice+st_TakeProfit*Point;
fm=OrderSend(SMB,OP_BUYSTOP,Lot,NewPrice,3,SL,TP,NULL,MAGIC,0,CLR_NONE);
/*Ñèãíàëèì*/ if(fm!=0 && fm!=-1 && UseOrderSound) PlaySound(NameOrderSound);
/*Êîììåíòèðóåì*/ if(fm!=0 && fm!=-1)
{
SigTIME_BuyStop=false;
Print("Îðäåð BuyStop óñòàíîâëåí");
Comment("Îðäåð BuyStop óñòàíîâëåí");
Sleep(5000); RefreshRates();
}
if(fm==0 || fm==-1)//Åñëè óñòàíîâèòü íå óäàëîñü
{
GLE=GetLastError();
ED=ErrorDescription(GLE);
Print("Îøèáêà ¹ ",GLE," óñòàíîâêè BuyStop-îðäåðà");
Print ("Îïèñàíèå îøèáêè - ",ED);
}
}
if(
(SchBuyLimit==0 && (SchBuy<ryn_MaxOrderov || !WaitClose))
&& ((Ustan_BuyLimit && lim_Step>=MinLevel) || (SigTIME_BuyLimit && lim_Step>=MinLevel))
)
{
NewPrice=Ask-lim_Step*Point;
if(lim_StopLoss==0) SL=0.0000;
else SL=NewPrice-lim_StopLoss*Point;
if(lim_TakeProfit==0) TP=0.0000;
else TP=NewPrice+st_TakeProfit*Point;
fm=OrderSend(SMB,OP_BUYLIMIT,Lot,NewPrice,3,SL,TP,NULL,MAGIC,0,CLR_NONE);
/*Ñèãíàëèì*/ if(fm!=0 && fm!=-1 && UseOrderSound) PlaySound(NameOrderSound);
/*Êîììåíòèðóåì*/ if(fm!=0 && fm!=-1)
{
SigTIME_BuyLimit=false;
Print("Îðäåð BuyLimit óñòàíîâëåí");
Comment("Îðäåð BuyLimit óñòàíîâëåí");
Sleep(5000); RefreshRates();
}
if(fm==0 || fm==-1)//Åñëè óñòàíîâèòü íå óäàëîñü
{
GLE=GetLastError();
ED=ErrorDescription(GLE);
Print("Îøèáêà ¹ ",GLE," óñòàíîâêè BuyLimit-îðäåðà");
Print ("Îïèñàíèå îøèáêè - ",ED);
}
}
if(
(SchSellLimit==0 && (SchSell<ryn_MaxOrderov || !WaitClose))
&& ((Ustan_SellLimit && lim_Step>=MinLevel) || (SigTIME_SellLimit && lim_Step>=MinLevel))
)
{
NewPrice=Bid+lim_Step*Point;
if(lim_StopLoss==0) SL=0.0000;
else SL=NewPrice+lim_StopLoss*Point;
if(lim_TakeProfit==0) TP=0.0000;
else TP=NewPrice-lim_TakeProfit*Point;
fm=OrderSend(SMB,OP_SELLLIMIT,Lot,NewPrice,3,SL,TP,NULL,MAGIC,0,CLR_NONE);
/*Ñèãíàëèì*/ if(fm!=0 && fm!=-1 && UseOrderSound) PlaySound(NameOrderSound);
/*Êîììåíòèðóåì*/ if(fm!=0 && fm!=-1)
{
SigTIME_SellLimit=false;
Print("Îðäåð SellLimit óñòàíîâëåí");
Comment("Îðäåð SellLimit óñòàíîâëåí");
Sleep(5000); RefreshRates();
}
if(fm==0 || fm==-1)//Åñëè óñòàíîâèòü íå óäàëîñü
{
GLE=GetLastError();
ED=ErrorDescription(GLE);
Print("Îøèáêà ¹ ",GLE," óñòàíîâêè SellLimit-îðäåðà");
Print ("Îïèñàíèå îøèáêè - ",ED);
}
}
}
// =============== Îòêðûòèå ðûíî÷íûõ îðäåðîâ ===============================================================
// Ôóíêöèÿ UstanRyn() îòêðûâàåò ðûíî÷íûå îðäåðà
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void UstanRyn()
{
bool NewOrderSell,NewOrderBuy; SMB=Symbol();
int OldTimeBuy,OldTimeSell;
RefreshRates(); SchOrders();
//==== Êîíòðîëü âðåìåíè ïîñëåäíåãî îòêðûòîãî îðäåðà ============
// Ýòîò áëîê êîíòðîëÿ íóæåí äëÿ òîãî, ÷òîáû íà îäíîé ñâå÷å îòêðûâàëàñü òîëüêî îäíà ñäåëêà
// Åñëè â ðàáîòå ïî çàäàííîìó âðåìåíè áóäåò ñòîÿòü ðàçðåøåíèå îòêðûòü è Buy è Sell îðäåð,
// òî åñëè ñîâåòíèê óñïååò çà òèêàìè, îí îòêðîåò îáå ñäåëêè íà îäíîé ñå÷å
for( i=OrdersTotal()-1; i>0; i-- )
{//Íà÷àëî öèêëà
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {WriteError();}
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true)
{//íà÷àëî ðàáîòû ñ âûáðàííûì îðäåðîì
if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC) {continue;}
if(OrderType()==OP_BUY)
{
if(OrderOpenTime()>=OldTimeBuy)//åñëè âðåìÿ îòêðûòèÿ ó ýòîãî îðäåðà áîëüøå ÷åì ó ïîñëåäíåãî îòêðûòîãî, òî...
{OldTimeBuy=OrderOpenTime();}//çàïîìèíàåì âðåìÿ ïîñëåäíåãî îòêðûòîãî Buy-îðäåðà
}
if(OrderType()==OP_SELL)
{
if(OrderOpenTime()>=OldTimeSell)//åñëè âðåìÿ îòêðûòèÿ ó ýòîãî îðäåðà áîëüøå ÷åì ó ïîñëåäíåãî îòêðûòîãî, òî...
{OldTimeSell=OrderOpenTime();}//çàïîìèíàåì âðåìÿ ïîñëåäíåãî îòêðûòîãî Sell-îðäåðà
}
}//Êîíåö ðàáîòû ñ âûáðàííûì îðäåðîì
}//Êîíåö öèêëà OldTimeBuy,OldTimeSell
if(OldTimeBuy>=Time[0]) {NewOrderBuy=false;}
if(OldTimeBuy<Time[0]) {NewOrderBuy=true;}
if(OldTimeSell>=Time[0]) {NewOrderSell=false;}
if(OldTimeSell<Time[0]) {NewOrderSell=true;}
//==== Êîíåö "Êîíòðîëü âðåìåíè ïîñëåäíåãî îòêðûòîãî îðäåðà" ====
if (NewOrderBuy && SigTIME_Buy && SchBuy==0)
{//Åñëè ìîæíî îòêðûòü Buy-îðäåð
if(ryn_StopLoss==0) {SL=0.0000;}
else {SL=Ask-ryn_StopLoss*Point;}
if(ryn_TakeProfit==0) {TP=0.0000;}
else {TP=Ask+ryn_TakeProfit*Point;}
fm=OrderSend(SMB,OP_BUY,Lot,Ask,3,SL,TP,NULL,MAGIC,0,Blue);
if(fm!=0 && fm!=-1 && UseOrderSound) {PlaySound(NameOrderSound);}
if(fm!=0 && fm!=-1)
{
SigTIME_Buy=false;
Comment("Ñäåëêà íà ïîêóïêó îòêðûòà");
Print("Ñäåëêà íà ïîêóïêó îòêðûòà");
}
if (fm==-1 || fm==0)
{
GLE=GetLastError();
ED=ErrorDescription(GLE);
Print("Îøèáêà ¹ ",GLE," óñòàíîâêè Buy-îðäåðà");
Print ("Îïèñàíèå îøèáêè - ",ED);
}
}//Êîíåö "Åñëè ìîæíî îòêðûòü Buy-îðäåð"
if(NewOrderSell && SigTIME_Sell && SchSell==0)
{ //Åñëè ìîæíî îòêðûòü Sell-îðäåð
if(ryn_StopLoss==0) {SL=0.0000;}
else {SL=Bid+ryn_StopLoss*Point;}
if(ryn_TakeProfit==0) {TP=0.0000;}
else {TP=Bid-ryn_TakeProfit*Point;}
fm=OrderSend(SMB,OP_SELL,Lot,Bid,3,SL,TP,NULL,MAGIC,0,Red);
if(fm!=0 && fm!=-1 && UseOrderSound) {PlaySound(NameOrderSound);}
if(fm!=0 && fm!=-1)
{
SigTIME_Sell=false;
Comment("Ñäåëêà íà ïðîäàæó îòêðûòà ");
Print("Ñäåëêà íà ïðîäàæó îòêðûòà ");
}
if (fm==-1 || fm==0)
{
GLE=GetLastError();
ED=ErrorDescription(GLE);
Print("Îøèáêà ¹ ",GLE," óñòàíîâêè SellL-îðäåðà");
Print ("Îïèñàíèå îøèáêè - ",ED);
}
}//Êîíåö "Åñëè ìîæíî îòêðûòü Sell-îðäåð"
}
//=========== Ñ÷¸ò÷èêè êîëè÷åñòâà îðäåðîâ =================================================================
// Ôóíêöèÿ SchOrders() ïðîõîäèò ïî âñåì îðäåðàì è ïîäñ÷èòûâàåò, ñêîëüêî ñåé÷àñ èìååòñÿ îðäåðîâ êàæäîãî òèïà.
// Êàê òîëüêî ïîíàäîáÿòñÿ çíà÷åíèå òîãî èëè èíîãî ñ÷¸ò÷èêà, íóæíî ñíà÷àëà âûçâàòü ôóíêöèþ SchOrders()
// Îíà îáíîâèò äàííûå è ïîòîì ìîæíî ñìåëî âûçûâàòü òîò èëè èíîé ñ÷¸ò÷èê.
// SchBuyStop - ñ÷¸ò÷èê îðäåðîâ BuyStop
// SchSellStop - ñ÷¸ò÷èê îðäåðîâ SellStop
// SchBuyLimit - ñ÷¸ò÷èê îðäåðîâ BuyLimit
// SchSellLimit ñ÷¸ò÷èê îðäåðîâ SellLimit
// SchBuy - ñ÷¸ò÷èê Buy îðäåðîâ
// SchSell - ñ÷¸ò÷èê Sell îðäåðîâ
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void SchOrders()
{
// äëÿ íà÷àëà ðàáîòû ñ÷¸ò÷èêîâ ìû èõ îáíóëÿåì
SchBuyStop=0; SchSellStop=0; SchBuyLimit=0; SMB=Symbol();
SchBuy=0; SchSell=0; SchSellLimit=0;
for(i=OrdersTotal()-1;i>=0;i--)
{//Íà÷àëî öèêëà
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {WriteError();}
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{//íà÷àëî ðàáîòû ñ âûáðàííûì îðäåðîì
if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC) continue;
if(OrderType()==OP_BUYSTOP)
SchBuyStop++;
if(OrderType()==OP_SELLSTOP)
SchSellStop++;
if(OrderType()==OP_SELLLIMIT)
SchSellLimit++;
if(OrderType()==OP_BUYLIMIT)
SchBuyLimit++;
if(OrderType()==OP_BUY)
SchBuy++;
if(OrderType()==OP_SELL)
SchSell++;
}//êîíåö ðàáîòû ñ âûáðàííûì îðäåðîì
}//Êîíåö öèêëà
}
//+------------------------------------------------------------------+
//| Ñîïðîâîæäåíèå ïîçèöèè ïðîñòûì òðàëîì |
//+------------------------------------------------------------------+
void TrailingPositions()
{
if(OrderType()==OP_BUY)
{
if(!WaitProfit || (Bid-OrderOpenPrice())>ryn_TrStop*Point)
{
if (OrderStopLoss()<Bid-(ryn_TrStop+ryn_TrStep-1)*Point)
{ModifyStopLoss(Bid-ryn_TrStop*Point);}
}
}
if(OrderType()==OP_SELL)
{
if(!WaitProfit || OrderOpenPrice()-Ask>ryn_TrStop*Point) {
if(OrderStopLoss()>Ask+(ryn_TrStop+ryn_TrStep-1)*Point || OrderStopLoss()==0)
{ModifyStopLoss(Ask+ryn_TrStop*Point);}
}
}
}
//+------------------------------------------------------------------+
//| Ïåðåíîñ óðîâíÿ StopLoss |
//| Ïàðàìåòðû: |
//| ldStopLoss - óðîâåíü StopLoss |
//+------------------------------------------------------------------+
void ModifyStopLoss(double ldStopLoss)
{
fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
if(fm!=0 && fm!=-1 && UseTrailingSound) PlaySound(NameTrallingSound);
if(fm==0 || fm==-1) {ModifError();}
}
//======== Ïîäòÿãèâàíèå îòëîæåííîãî îðäåðà âñëåä öåíîé ============================================
// Ôóíêöèÿ TrailingOtlozh() ïîäòÿãèâàåò îòëîæåííûé îðäåð âñëåä çà öåíîé
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void TrailingOtlozh()
{
RefreshRates(); SMB=Symbol();
for(i=OrdersTotal()-1;i>=0;i--)//Öèêë. Ïðîõîäèì ïî âñåì îðäåðàì
{//Íà÷àëî öèêëà
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {WriteError();}
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{//íà÷àëî ðàáîòû ñ âûáðàííûì îðäåðîì
if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC) {continue;}
if(OrderType()==OP_BUYSTOP)//íàõîäèòñÿ ââåðõó, åäåò âíèç
{
if(TrailBuyStop)
{
NewPrice=Ask+st_TrStop*Point;
if(st_StopLoss==0) {SL=0.0000;}
else {SL=NewPrice-st_StopLoss*Point;}
if(st_TakeProfit==0) {TP=0.0000;}
else {TP=NewPrice+st_TakeProfit*Point;}
fm=OrderModify(OrderTicket(),NewPrice,SL,TP,0,CLR_NONE);
if(fm!=0 && fm!=-1 && UseTrailingSound) {PlaySound(NameTrallingSound);}
if(fm!=0 && fm!=-1) {Sleep(5000); RefreshRates();}
if(fm==0 || fm==-1) {ModifError();}
}
}
if(OrderType()==OP_SELLSTOP) // Íàõîäèòñÿ âíèçó, åäåò ââåðõ
{
if(TrailSellStop)
{
NewPrice=Bid-st_TrStop*Point;
if(st_StopLoss==0) {SL=0.0000;}
else {SL=NewPrice+st_StopLoss*Point;}
if(st_TakeProfit==0) {TP=0.0000;}
else {TP=NewPrice-st_TakeProfit*Point;}
fm=OrderModify(OrderTicket(),NewPrice,SL,TP,0,CLR_NONE);
if(fm!=0 && fm!=-1 && UseTrailingSound) {PlaySound(NameTrallingSound);}
if(fm!=0 && fm!=-1) {Sleep(5000); RefreshRates();}
if(fm==0 || fm==-1) {ModifError();}
}
}
if(OrderType()==OP_BUYLIMIT) // Íàõîäèòñÿ âíèçó, åäåò ââåðõ
{
if(TrailBuyLimit)
{
NewPrice=Ask-st_TrStop*Point;
if(lim_StopLoss==0) {SL=0.0000;}
else {SL=NewPrice-lim_StopLoss*Point;}
if(lim_TakeProfit==0) {TP=0.0000;}
else {TP=NewPrice+lim_TakeProfit*Point;}
fm=OrderModify(OrderTicket(),NewPrice,SL,TP,0,CLR_NONE);
if(fm!=0 && fm!=-1 && UseTrailingSound) {PlaySound(NameTrallingSound);}
if(fm!=0 && fm!=-1) {Sleep(5000); RefreshRates();}
if(fm==0 || fm==-1) {ModifError();}
}
}
if(OrderType()==OP_SELLLIMIT)//íàõîäèòñÿ ââåðõó, åäåò âíèç
{
if(TrailSellLimit)
{
NewPrice=Bid+st_TrStop*Point;
if(lim_StopLoss==0) {SL=0.0000;}
else {SL=NewPrice+lim_StopLoss*Point;}
if(lim_TakeProfit==0) {TP=0.0000;}
else {TP=NewPrice-lim_TakeProfit*Point;}
fm=OrderModify(OrderTicket(),NewPrice,SL,TP,0,CLR_NONE);
if(fm!=0 && fm!=-1 && UseTrailingSound) {PlaySound(NameTrallingSound);}
if(fm!=0 && fm!=-1) {Sleep(5000); RefreshRates();}
if(fm==0 || fm==-1) {ModifError();}
}
}
}//êîíåö ðàáîòû ñ âûáðàííûì îðäåðîì
}//Êîíåö öèêëà
}//êîíåö ôóíêöèè
//========= Ñëîâåñòíîå îïèñàíèå îøèáîê =========================================================================================
// Ôóíêöèÿ âîçâðàùàåò íå êîä îøèáêè à å¸ ñëîâåñòíîå îïèñàíèå
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
string ErrorDescription(int error_code)
{
string error_string;
//----
switch(error_code)
{
//---- codes returned from trade server
case 0: error_string=" Íåò îøèáêè"; break;
case 1: error_string=" Íåò îøèáêè, íî ðåçóëüòàò íåèçâåñòåí"; break;
case 2: error_string=" Îáùàÿ îøèáêà"; break;
case 3: error_string=" Íåïðàâèëüíûå ïàðàìåòðû"; break;
case 4: error_string=" Òîðãîâûé ñåðâåð çàíÿò"; break;
case 5: error_string=" Ñòàðàÿ âåðñèÿ êëèåíòñêîãî òåðìèíàëà"; break;
case 6: error_string=" Íåò ñâÿçè ñ òîðãîâûì ñåðâåðîì"; break;
case 7: error_string=" Íåäîñòàòî÷íî ïðàâ"; break;
case 8: error_string=" Ñëèøêîì ÷àñòûå çàïðîñû"; break;
case 9: error_string=" Íåäîïóñòèìàÿ îïåðàöèÿ íàðóøàþùàÿ ôóíêöèîíèðîâàíèå ñåðâåðà"; break;
case 64: error_string=" Ñ÷åò çàáëîêèðîâàí"; break;
case 65: error_string=" Íåïðàâèëüíûé íîìåð ñ÷åòà"; break;
case 128: error_string=" Èñòåê ñðîê îæèäàíèÿ ñîâåðøåíèÿ ñäåëêè"; break;
case 129: error_string=" Íåïðàâèëüíàÿ öåíà"; break;
case 130: error_string=" Íåïðàâèëüíûå ñòîïû"; break;
case 131: error_string=" Íåïðàâèëüíûé îáúåì"; break;
case 132: error_string=" Ðûíîê çàêðûò"; break;
case 133: error_string=" Òîðãîâëÿ çàïðåùåíà"; break;
case 134: error_string=" Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè"; break;
case 135: error_string=" Öåíà èçìåíèëàñü"; break;
case 136: error_string=" Íåò öåí"; break;
case 137: error_string=" Áðîêåð çàíÿò"; break;
case 138: error_string=" Íîâûå öåíû"; break;
case 139: error_string=" Îðäåð çàáëîêèðîâàí è óæå îáðàáàòûâàåòñÿ"; break;
case 140: error_string=" Ðàçðåøåíà òîëüêî ïîêóïêà"; break;
case 141: error_string=" Ñëèøêîì ìíîãî çàïðîñîâ"; break;
case 145: error_string=" Ìîäèôèêàöèÿ çàïðåùåíà, òàê êàê îðäåð ñëèøêîì áëèçîê ê ðûíêó"; break;
case 146: error_string=" Ïîäñèñòåìà òîðãîâëè çàíÿòà"; break;
case 147: error_string=" Èñïîëüçîâàíèå äàòû èñòå÷åíèÿ îðäåðà çàïðåùåíî áðîêåðîì"; break;
case 148: error_string=" Êîëè÷åñòâî îòêðûòûõ è îòëîæåííûõ îðäåðîâ äîñòèãëî ïðåäåëà, óñòàíîâëåííîãî áðîêåðîì"; break;
case 4000: error_string=" Íåò îøèáêè"; break;
case 4001: error_string=" Íåïðàâèëüíûé óêàçàòåëü ôóíêöèè"; break;
case 4002: error_string=" Èíäåêñ ìàññèâà - âíå äèàïàçîíà"; break;
case 4003: error_string=" Íåò ïàìÿòè äëÿ ñòåêà ôóíêöèé"; break;
case 4004: error_string=" Ïåðåïîëíåíèå ñòåêà ïîñëå ðåêóðñèâíîãî âûçîâà"; break;
case 4005: error_string=" Íà ñòåêå íåò ïàìÿòè äëÿ ïåðåäà÷è ïàðàìåòðîâ"; break;
case 4006: error_string=" Íåò ïàìÿòè äëÿ ñòðîêîâîãî ïàðàìåòðà"; break;
case 4007: error_string=" Íåò ïàìÿòè äëÿ âðåìåííîé ñòðîêè"; break;
case 4008: error_string=" Íåèíèöèàëèçèðîâàííàÿ ñòðîêà"; break;
case 4009: error_string=" Íåèíèöèàëèçèðîâàííàÿ ñòðîêà â ìàññèâå"; break;
case 4010: error_string=" Íåò ïàìÿòè äëÿ ñòðîêîâîãî ìàññèâà"; break;
case 4011: error_string=" Ñëèøêîì äëèííàÿ ñòðîêà"; break;
case 4012: error_string=" Îñòàòîê îò äåëåíèÿ íà íîëü"; break;
case 4013: error_string=" Äåëåíèå íà íîëü"; break;
case 4014: error_string=" Íåèçâåñòíàÿ êîìàíäà"; break;
case 4015: error_string=" Íåïðàâèëüíûé ïåðåõîä"; break;
case 4016: error_string=" Íåèíèöèàëèçèðîâàííûé ìàññèâ"; break;
case 4017: error_string=" Âûçîâû DLL íå ðàçðåøåíû"; break;
case 4018: error_string=" Íåâîçìîæíî çàãðóçèòü áèáëèîòåêó"; break;
case 4019: error_string=" Íåâîçìîæíî âûçâàòü ôóíêöèþ"; break;
case 4020: error_string=" Âûçîâû âíåøíèõ áèáëèîòå÷íûõ ôóíêöèé íå ðàçðåøåíû"; break;
case 4021: error_string=" Íåäîñòàòî÷íî ïàìÿòè äëÿ ñòðîêè, âîçâðàùàåìîé èç ôóíêöèè"; break;
case 4022: error_string=" Ñèñòåìà çàíÿòà"; break;
case 4050: error_string=" Íåïðàâèëüíîå êîëè÷åñòâî ïàðàìåòðîâ ôóíêöèè"; break;
case 4051: error_string=" Íåäîïóñòèìîå çíà÷åíèå ïàðàìåòðà ôóíêöèè"; break;
case 4052: error_string=" Âíóòðåííÿÿ îøèáêà ñòðîêîâîé ôóíêöèè"; break;
case 4053: error_string=" Îøèáêà ìàññèâà"; break;
case 4054: error_string=" Íåïðàâèëüíîå èñïîëüçîâàíèå ìàññèâà-òàéìñåðèè"; break;
case 4055: error_string=" Îøèáêà ïîëüçîâàòåëüñêîãî èíäèêàòîðà"; break;
case 4056: error_string=" Ìàññèâû íåñîâìåñòèìû"; break;
case 4057: error_string=" Îøèáêà îáðàáîòêè ãëîáàëüíûåõ ïåðåìåííûõ"; break;
case 4058: error_string=" Ãëîáàëüíàÿ ïåðåìåííàÿ íå îáíàðóæåíà"; break;
case 4059: error_string=" Ôóíêöèÿ íå ðàçðåøåíà â òåñòîâîì ðåæèìå"; break;
case 4060: error_string=" Ôóíêöèÿ íå ïîäòâåðæäåíà"; break;
case 4061: error_string=" Îøèáêà îòïðàâêè ïî÷òû"; break;
case 4062: error_string=" Îæèäàåòñÿ ïàðàìåòð òèïà string"; break;
case 4063: error_string=" Îæèäàåòñÿ ïàðàìåòð òèïà integer"; break;
case 4064: error_string=" Îæèäàåòñÿ ïàðàìåòð òèïà double"; break;
case 4065: error_string="  êà÷åñòâå ïàðàìåòðà îæèäàåòñÿ ìàññèâ"; break;
case 4066: error_string=" Çàïðîøåííûå èñòîðè÷åñêèå äàííûå â ñîñòîÿíèè îáíîâëåíèÿ"; break;
case 4067: error_string=" Îøèáêà ïðè âûïîëíåíèè òîðãîâîé îïåðàöèè"; break;
case 4099: error_string=" Êîíåö ôàéëà"; break;
case 4100: error_string=" Îøèáêà ïðè ðàáîòå ñ ôàéëîì"; break;
case 4101: error_string=" Íåïðàâèëüíîå èìÿ ôàéëà"; break;
case 4102: error_string=" Ñëèøêîì ìíîãî îòêðûòûõ ôàéëîâ"; break;
case 4103: error_string=" Íåâîçìîæíî îòêðûòü ôàéë"; break;
case 4104: error_string=" Íåñîâìåñòèìûé ðåæèì äîñòóïà ê ôàéëó"; break;
case 4105: error_string=" Íè îäèí îðäåð íå âûáðàí"; break;
case 4106: error_string=" Íåèçâåñòíûé ñèìâîë"; break;
case 4107: error_string=" Íåïðàâèëüíûé ïàðàìåòð öåíû äëÿ òîðãîâîé ôóíêöèè"; break;
case 4108: error_string=" Íåâåðíûé íîìåð òèêåòà"; break;
case 4109: error_string=" Òîðãîâëÿ íå ðàçðåøåíà"; break;
case 4110: error_string=" Äëèííûå ïîçèöèè íå ðàçðåøåíû"; break;
case 4111: error_string=" Êîðîòêèå ïîçèöèè íå ðàçðåøåíû"; break;
case 4200: error_string=" Îáúåêò óæå ñóùåñòâóåò"; break;
case 4201: error_string=" Çàïðîøåíî íåèçâåñòíîå ñâîéñòâî îáúåêòà"; break;
case 4202: error_string=" Îáúåêò íå ñóùåñòâóåò"; break;
case 4203: error_string=" Íåèçâåñòíûé òèï îáúåêòà"; break;
case 4204: error_string=" Íåò èìåíè îáúåêòà"; break;
case 4205: error_string=" Îøèáêà êîîðäèíàò îáúåêòà"; break;
case 4206: error_string=" Íå íàéäåíî óêàçàííîå ïîäîêíî"; break;
case 4207: error_string=" Îøèáêà ïðè ðàáîòå ñ îáúåêòîì"; break;
}
//----
return(error_string);
}
// ======================= Âûçîâ íîìåðà è îïèñàíèÿ îøèáêè âûáîðà ==========================================
// Ôóíêöèÿ WriteError() ïèøåò íîìåð âîçíèêøåé îøèáêè âûáîðà è å¸ ðóññêîå îïèñàíèå
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void WriteError()
{
GLE=GetLastError();
ED=ErrorDescription(GLE);
Print("Îøèáêà ", GLE, " ïðè âûáîðå îðäåðà íîìåð ",i);
Print ("Îïèñàíèå îøèáêè - ",ED);
}
// ======================= Îøèáêà ìîäèôèêàöèè =====================================================
// Ôóíêöèÿ ModifError() ïèøåò íîìåð âîçíèêøåé îøèáêè ìîäèôèêàöèè è å¸ ðóññêîå îïèñàíèå
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void ModifError()
{
GLE=GetLastError();
ED=ErrorDescription(GLE);
Print("Ìîäèôèêàöèÿ îðäåðà ¹ ",OrderTicket(), " âåðíóëà îøèáêó ¹ ",GLE);
Print ("Îïèñàíèå îøèáêè: ",ED);
}
// ======================= Ïðîâåðêà êîððåêòíîñòè ïîëüçîâàòåëüñêèõ óñòàíîâîê =============================================
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void Proverka()
{
if(ryn_TrStop<MinLevel && ryn_TrStop!=0)
{
Comment("Îøèáêà! ÒðåéëèíãÑòîï ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
Print("Îøèáêà! ÒðåéëèíãÑòîï ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
Alert("Îøèáêà! ÒðåéëèíãÑòîï ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
return(0);
}
if(ryn_TrStop>=MinLevel && ryn_TrStep==0)
{
Comment("Îøèáêà! Øàã òàðàëà ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
Print("Îøèáêà! Øàã òàðàëà ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
Alert("Îøèáêà! Øàã òàðàëà ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
return(0);
}
if(ryn_TakeProfit<MinLevel && ryn_TakeProfit!=0)
{
Comment("Îøèáêà! ryn_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
Print("Îøèáêà! ryn_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
Alert("Îøèáêà! ryn_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
return(0);
}
if(ryn_StopLoss<MinLevel && ryn_StopLoss!=0)
{
Comment("Îøèáêà! ryn_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
Print("Îøèáêà! ryn_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
Alert("Îøèáêà! ryn_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
return(0);
}
if(st_TakeProfit<MinLevel && st_TakeProfit!=0)
{
Comment("Îøèáêà! st_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
Print("Îøèáêà! st_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
Alert("Îøèáêà! st_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
return(0);
}
if(st_StopLoss<MinLevel && st_StopLoss!=0)
{
Comment("Îøèáêà! st_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
Print("Îøèáêà! st_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
Alert("Îøèáêà! st_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
return(0);
}
if(st_TrStop<MinLevel && st_TrStop!=0)
{
Comment("Îøèáêà! ÒðåéëèíãÑòîï ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
Print("Îøèáêà! ÒðåéëèíãÑòîï ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
Alert("Îøèáêà! ÒðåéëèíãÑòîï ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
return(0);
}
if(st_TrStop>=MinLevel && st_TrStep==0)
{
Comment("Îøèáêà! øàã òàðàëà ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
Print("Îøèáêà! ÒðåéëèíãÑòîï ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
Alert("Îøèáêà! ÒðåéëèíãÑòîï ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
return(0);
}
if(st_Step<MinLevel)
{
Comment("Îøèáêà! ïåðåìåííàÿ st_Step íå ìîæåò áûòü ìåíåå ",MinLevel);
Print("Îøèáêà! ïåðåìåííàÿ st_Step íå ìîæåò áûòü ìåíåå ",MinLevel);
Alert("Îøèáêà! ïåðåìåííàÿ st_Step íå ìîæåò áûòü ìåíåå ",MinLevel);
return(0);
}
if(lim_TakeProfit<MinLevel && lim_TakeProfit!=0)
{
Comment("Îøèáêà! lim_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
Print("Îøèáêà! lim_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
Alert("Îøèáêà! lim_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
return(0);
}
if(lim_StopLoss<MinLevel && lim_StopLoss!=0)
{
Comment("Îøèáêà! lim_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
Print("Îøèáêà! lim_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
Alert("Îøèáêà! lim_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
return(0);
}
if(lim_TrStop<MinLevel && lim_TrStop!=0)
{
Comment("Îøèáêà! ÒðåéëèíãÑòîï ëèìèòíûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
Print("Îøèáêà! ÒðåéëèíãÑòîï ëèìèòíûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
Alert("Îøèáêà! ÒðåéëèíãÑòîï ëèìèòíûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
return(0);
}
if(lim_TrStop>=MinLevel && lim_TrStep==0)
{
Comment("Îøèáêà! Øàã òàðàëà ëèìèòíûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
Print("Îøèáêà! Øàã òàðàëà ëèìèòíûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
Alert("Îøèáêà! Øàã òàðàëà ëèìèòíûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
return(0);
}
if(lim_Step<MinLevel)
{
Comment("Îøèáêà! ïåðåìåííàÿ lim_Step íå ìîæåò áûòü ìåíåå ",MinLevel);
Print("Îøèáêà! ïåðåìåííàÿ lim_Step íå ìîæåò áûòü ìåíåå ",MinLevel);
Alert("Îøèáêà! ïåðåìåííàÿ lim_Step íå ìîæåò áûòü ìåíåå ",MinLevel);
return(0);
}
}
//+------------------------------------------------------------------+
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
---