Orders Execution
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
jvt9ga5tru
//+------------------------------------------------------------------+
//| Òîïîð.mq4 |
//| |
//| |
//| |
//| |
//+------------------------------------------------------------------+
//--------------------------------------------------------------- --
extern string x1 ="Íàñòðîéêè óïðàâëåíèÿ êàïèòàëîì";
extern double StopLoss =230; // SL äëÿ îòêðûâàåìîãî îðäåðà
extern double TakeProfit =280; // ÒÐ äëÿ îòêðûâàåìîãî îðäåðà
extern double Lots =0.1; // Æåñòêî çàäàííîå êîëè÷. ëîòîâ
extern double óìæèòü_íà=2; //Íå ìîæåò áûòü ðàâíûì íóëþ
extern int MagicNumber =123;
extern double PipsAway_1 =250;// Îòêðûâàåìñÿ íà ðàñòàÿíèè îò èíäèêàòîðà â ïóíêòàõ
//extern double PipsAway_2 =170;// Îòêðûâàåìñÿ íà ðàñòàÿíèè îò èíäèêàòîðà â ïóíêòàõ
extern string block = " îñíîâíûå ïàðàìåòðû äëÿ ima";
extern int Period_MA_1=17; // Ïåðèîä ÌÀ
extern int MODE =3; // SMA-0 EMA-1 SMMA-2 LWMA-3
extern int PRICE =0; // CLOSE-0 OPEN-1 HIGH-2 LOW-3 MEDIAN-4 TYPICAL-5 WEIGHTED-6
extern string LatOrderStoppedOut = " --Âðåìÿ çàäåðæêè--";
extern bool UseDelay = true; // Åëè "true" òî ðàáîòàåì ñ çàäåðæêîé
extern int MinutesToDelay = 30;//Âðåìÿ çàäåðæêè(Ìèíóò) ïîñëå çàêðûòèÿ ñ óáûòêîì
extern string AddComment = "";
bool Work=true; // Ýêñïåðò áóäåò ðàáîòàòü.
string Symb; // Íàçâàíèå ôèíàíñ. èíñòðóìåíòà
bool StoppedOut=false;
datetime StopTime;
double dl;
double a;
int X=0;
double S = 0.0000;
//--------------------------------------------------------------- --
int init()
{
a=Lots;
return(0);
}
int start()
{
int
Total; // Êîëè÷åñòâî îðäåðîâ â îêíå
double
MA_1_t, // Çíà÷åí. ÌÀ_1 òåêóùåå
Lot_1;
bool
Ans =false, // Îòâåò ñåðâåðà ïîñëå çàêðûòèÿ
Opn_B=false, // Êðèòåðèé äëÿ îòêðûòèÿ Buy
Opn_S=false; // Êðèòåðèé äëÿ îòêðûòèÿ Sell
//--------------------------------------------------------------- --
// Ïðåäâàðèò.îáðàáîòêà
if(Work==false) // Êðèòè÷åñêàÿ îøèáêà
{
Alert("Êðèòè÷åñêàÿ îøèáêà. Ýêñïåðò íå ðàáîòàåò.");
return; // Âûõîä èç start()
}
S=Open[0];
Sleep(1000);
if(OrdersTotal() == 0 && X==1)
{
if (Close[0]>dl){Lots=a;}
X=0;
}
if(OrdersTotal() == 0 && X==2)
{
if (Close[0]<dl){Lots=a;}
X=0;
}
//--------------------------------------------------------------- --
// Ó÷¸ò îðäåðîâ
Symb=Symbol(); // Íàçâàíèå ôèí.èíñòð.
Total=0; // Êîëè÷åñòâî îðäåðîâ
for(int i=1; i<=OrdersTotal(); i++) // Öèêë ïåðåáîðà îðäåð
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Åñëè åñòü ñëåäóþùèé
{ // Àíàëèç îðäåðîâ:
if (OrderSymbol()!=Symb)continue; // Íå íàø ôèí. èíñòðóì
if (OrderType()>1) // Ïîïàëñÿ îòëîæåííûé
{
Alert("Îáíàðóæåí îòëîæåííûé îðäåð. Ýêñïåðò íå ðàáîòàåò.");
return; // Âûõîä èç start()
}
Total++; // Ñ÷¸ò÷èê ðûíî÷í. îðä
if (Total>1) // Íå áîëåå îäíîãî îðä
{
Alert("Íåñêîëüêî ðûíî÷íûõ îðäåðîâ. Ýêñïåðò íå ðàáîòàåò.");
return; // Âûõîä èç start()
}
int Ticket=OrderTicket(); // Íîìåð âûáðàíí. îðä.
int Tip =OrderType(); // Òèï âûáðàííîãî îðä.(B=0,S=1)
double Price =OrderOpenPrice(); // Öåíà âûáðàíí. îðä.
double SL =OrderStopLoss(); // SL âûáðàííîãî îðä.
double TP =OrderTakeProfit(); // TP âûáðàííîãî îðä.
//double Lot =OrderLots(); // Êîëè÷. ëîòîâ â âûáðàí.îðäåðå
// int OrNumber=OrdersHistoryTotal(); //êîëè÷åñòâî çàêðûòûõ ïîçèöèé è óäàëåííûõ îðäåðîâ
}
}
if (UseDelay == true)// Åëè "true" òî ðàáîòàåì ñ çàäåðæêîé
{
StoppedOut = LastTradeStoppedOut();
if (CurTime() < StopTime)
{
Comment("Íèêàêîé òîðãîâëè Äî:"
+ TimeToStr(StopTime,TIME_DATE|TIME_MINUTES));
return(0);
}
}
//--------------------------------------------------------------- --
// Òîðãîâûå êðèòåðèè
MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE,PRICE,1); // ÌÀ_1
//--------------------------------------------------------------- --
// Âû÷èñëåíèå òîðãîâûõ êðèòåðèåâ
if (OrdersTotal()==0)
{
if (Ask < MA_1_t-(PipsAway_1*Point))
Opn_B=true; // Îòêðûòèå Buy
if (Bid > MA_1_t+(PipsAway_1*Point))
Opn_S=true; // Îòêðûòèå Sell
}
//--------------------------------------------------------------- --
// Îòêðûòèå îðäåðîâ
while(true) // Öèêë îòêðûòèÿ îðä.
{
if (Total==0 && Opn_B==true) // Îòêðûòûõ îðä. íåò +
{ // êðèòåðèé îòêð. Buy
RefreshRates(); // Îáíîâëåíèå äàííûõ
SL=Bid - New_Stop(StopLoss)*Point; // Âû÷èñëåíèå SL îòêð.
TP=Bid + New_Stop(TakeProfit)*Point; // Âû÷èñëåíèå TP îòêð.
Alert("Ïîïûòêà îòêðûòü Buy ");
dl=Close[0];
Ticket=OrderSend(Symb,OP_BUY,Lots,Ask,2,SL,TP,"",MagicNumber,0,Blue);//Îòêðûòèå Buy
Lots=Lots*óìæèòü_íà;
X=1;
if (Ticket > 0) // Ïîëó÷èëîñü :)
{
//Alert ("Îòêðûò îðäåð Buy ",Ticket);
return; // Âûõîä èç start()
}
if (Fun_Error(GetLastError())==1) // Îáðàáîòêà îøèáîê
continue; // Ïîâòîðíàÿ ïîïûòêà
return; // Âûõîä èç start()
}
if (Total==0 && Opn_S==true) // Îòêðûòûõ îðä. íåò +
{ // êðèòåðèé îòêð. Sell
RefreshRates(); // Îáíîâëåíèå äàííûõ
SL=Ask + New_Stop(StopLoss)*Point; // Âû÷èñëåíèå SL îòêð.
TP=Ask - New_Stop(TakeProfit)*Point; // Âû÷èñëåíèå TP îòêð.
Alert("Ïîïûòêà îòêðûòü Sell ");
dl=Close[0];
Ticket=OrderSend(Symb,OP_SELL,Lots,Bid,2,SL,TP,"",MagicNumber,0,Red);//Îòêðûòèå Sel
Lots=Lots*óìæèòü_íà;
X=2;
if (Ticket > 0) // Ïîëó÷èëîñü :)
{
// Alert ("Îòêðûò îðäåð Sell ",Ticket);
return; // Âûõîä èç start()
}
if (Fun_Error(GetLastError())==1) // Îáðàáîòêà îøèáîê
continue; // Ïîâòîðíàÿ ïîïûòêà
return; // Âûõîä èç start()
}
break; // Âûõîä èç while
}
//--------------------------------------------------------------- --
return; // Âûõîä èç start()
}
//----------------------------------------------------------------
int Fun_Error(int Error) // Ô-èÿ îáðàáîò îøèáîê
{
switch(Error)
{ // Ïðåîäîëèìûå îøèáêè
case 4: Alert("Òîðãîâûé ñåðâåð çàíÿò. Ïðîáóåì åù¸ ðàç..");
Sleep(3000); // Ïðîñòîå ðåøåíèå
return(1); // Âûõîä èç ôóíêöèè
case 135:Alert("Öåíà èçìåíèëàñü. Ïðîáóåì åù¸ ðàç..");
RefreshRates(); // Îáíîâèì äàííûå
return(1); // Âûõîä èç ôóíêöèè
case 136:Alert("Íåò öåí. Æä¸ì íîâûé òèê..");
while(RefreshRates()==false) // Äî íîâîãî òèêà
Sleep(1); // Çàäåðæêà â öèêëå
return(1); // Âûõîä èç ôóíêöèè
case 137:Alert("Áðîêåð çàíÿò. Ïðîáóåì åù¸ ðàç..");
Sleep(3000); // Ïðîñòîå ðåøåíèå
return(1); // Âûõîä èç ôóíêöèè
case 146:Alert("Ïîäñèñòåìà òîðãîâëè çàíÿòà. Ïðîáóåì åù¸..");
Sleep(500); // Ïðîñòîå ðåøåíèå
return(1); // Âûõîä èç ôóíêöèè
// Êðèòè÷åñêèå îøèáêè
case 2: Alert("Îáùàÿ îøèáêà.");
return(0); // Âûõîä èç ôóíêöèè
case 5: Alert("Ñòàðàÿ âåðñèÿ òåðìèíàëà.");
Work=false; // Áîëüøå íå ðàáîòàòü
return(0); // Âûõîä èç ôóíêöèè
case 64: Alert("Ñ÷åò çàáëîêèðîâàí.");
Work=false; // Áîëüøå íå ðàáîòàòü
return(0); // Âûõîä èç ôóíêöèè
case 133:Alert("Òîðãîâëÿ çàïðåùåíà.");
return(0); // Âûõîä èç ôóíêöèè
case 134:Alert("Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè.");
return(0); // Âûõîä èç ôóíêöèè
default: Alert("Âîçíèêëà îøèáêà ",Error); // Äðóãèå âàðèàíòû
return(0); // Âûõîä èç ôóíêöèè
}
}
//-------------------------------------------------------------- --
int New_Stop(int Parametr) // Ïðîâåðêà ñòîï-ïðèê.
{
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Ìèíèì. äèñòàíöèÿ
if (Parametr<Min_Dist) // Åñëè ìåíüøå äîïóñò.
{
Parametr=Min_Dist; // Óñòàíîâèì äîïóñò.
Alert("Óâåëè÷åíà äèñòàíöèÿ ñòîï-ïðèêàçà.");
}
return(Parametr); // Âîçâðàò çíà÷åíèÿ
}
//----------------------------------------------------------------
datetime LastTradeStoppedOut()//Åñëè ïîëó÷èëè óáûòîê òî ïðèìåíÿåì çàäåðæêó
{
int cnt, total;
datetime NextTime;
bool Stopped=false;
NextTime = 0;
total = HistoryTotal();
for (cnt = total - 1; cnt >= 0; cnt--)
{
OrderSelect (cnt, SELECT_BY_POS, MODE_HISTORY);
if(OrderSymbol()==Symb && OrderMagicNumber() == MagicNumber)
{
Stopped = false;
if (OrderType() == OP_BUY)
{
if (OrderClosePrice() - OrderOpenPrice() < 0)
{
Stopped = true;
}
cnt = 0;
}
if (OrderType() == OP_SELL)
{
if (OrderOpenPrice() - OrderClosePrice() < 0)
{
Stopped = true;
}
cnt = 0;
}
}
}
if (Stopped)
{
StopTime = OrderCloseTime() + MinutesToDelay*60;
}
return (Stopped);
}
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
---