Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
Blue_Dream
//+------------------------------------------------------------------+
//| Blue_Dream.mq4 |
//| valenok2003@mail.ru |
//| http://www.mebel-for-you.com |
//+------------------------------------------------------------------+
// Îòêðûâàåò è çàêðûâàåò åäèíñòâåííûé îðäåð.
// Ñèãíàë èíäèêàòîðà äîëæåí èçìåíÿòü ãëîáàëüíóþ ïåðåìåííóþ íà óðîâíå òåðìèíàëà
// íà îòêðûòèå îðäåðà BUY äîëæåí áûòü ïëþñ +1
// íà îòêðûòèå îðäåðà SELL äîëæåí áûòü ìèíóñ -1
// íà çàêðûòèå îðäåðà BUY äîëæåí áûòü ìèíóñ -1
// íà çàêðûòèå îðäåðà SELL äîëæåí áûòü ïëþñ +1
// òî åñòü èñïîëüçóåìûé âàìè èíäèêàòîð ïðè âûïîëíåíèè âàøèõ óñëîâèé äîëæåí ñîäåðæàòü, íàïðèìåð, òàêîé òåêñò
// GlobalVariableSet("Signal_OPEN_X",1), ãäå âìåñòî Õ äîëæåí ñòîÿòü ñîîòâåòñòâóþùèé íîìåð ñèãíàëà
// Íàïðèìåð âû èñïîëüçóåòå äëÿ îòêðûòèÿ ñòîõàñòèê è ÌÀ5, òîãäà âû äîëæíû â ñâîéñòâàõ ñîâåòíèêà
// çàäàòü êîëè÷åñòâî èñïîëüçóåìûõ ñèãíàëîâ íà îòêðûòèå çàäàòü çíà÷åíèå 2
// à âàøè èíäèêàòîðû äîëæíû èçìåíÿòü ñîîòâåòñòâóþùèì îáðàçîì
// ãëîáàëüíûå ïåðåìåííûå íà óðîâíå òåðìèíàëà"Signal_OPEN_1" è "Signal_OPEN_2"
// àíàëîãè÷íî äëÿ çàêðûòèÿ, âàøè èíäèêàòîðû äîëæíû èçìåíÿòü ñîîòâåòñòâóþùèì îáðàçîì
// ãëîáàëüíûå ïåðåìåííûå íà óðîâíå òåðìèíàëà"Signal_CLOSED_1" è "Signal_CLOSED_2"
// Âñåãî ìîæíî èñïîëüçîâàòü äî ïÿòè ñèãíàëîâ êàê íà îòêðûòèå, òàê è íà çàêðûòèå.
// ÂÍÈÌÀÍÈÅ
// Åñëè âû çàêðûëè îðäåð óñòàíîâëåííûé ñîâåòíèêîì âðó÷íóþ, òî ñîâåòíèêà íóæíî ïåðåçàïóñòèòü.
#property copyright "Sergey Gulyaev. Maykop."
#property link "http://www.mebel-for-you.com"
extern double Lot= 0.1;
extern string Num_Signal_OPEN = " Êîëè÷åñòâî èñïîëüçóåìûõ ñèãíàëîâ îòêðûòèÿ (ìàêñèìóì 5)";
extern int Num_Signal_Open = 1;
extern string Num_Signal_CLOSED = " Êîëè÷åñòâî èñïîëüçóåìûõ ñèãíàëîâ çàêðûòèÿ (ìàêñèìóì 5)";
extern int Num_Signal_Closed = 1;
int FLAG_ORDER_BUY = 0,
FLAG_ORDER_SELL = 0,
FLAG_ORDER = 0,
SIGNAL_OPEN,
SIGNAL_CLOSED,
TICKET_BUY = 0,
TICKET_SELL = 0,
ERROR = 0,
i;
string Name_Global_Signal_OPEN_1= "Signal_OPEN_1",
Name_Global_Signal_OPEN_2 = "Signal_OPEN_2",
Name_Global_Signal_OPEN_3 = "Signal_OPEN_3",
Name_Global_Signal_OPEN_4 = "Signal_OPEN_4",
Name_Global_Signal_OPEN_5 = "Signal_OPEN_5",
Name_Global_Signal_CLOSED_1 = "Signal_CLOSED_1",
Name_Global_Signal_CLOSED_2 = "Signal_CLOSED_2",
Name_Global_Signal_CLOSED_3 = "Signal_CLOSED_3",
Name_Global_Signal_CLOSED_4 = "Signal_CLOSED_4",
Name_Global_Signal_CLOSED_5 = "Signal_CLOSED_5";
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
GlobalVariableSet(Name_Global_Signal_OPEN_1,0);
GlobalVariableSet(Name_Global_Signal_OPEN_2,0);
GlobalVariableSet(Name_Global_Signal_OPEN_3,0);
GlobalVariableSet(Name_Global_Signal_OPEN_4,0);
GlobalVariableSet(Name_Global_Signal_OPEN_5,0);
GlobalVariableSet(Name_Global_Signal_CLOSED_1,0);
GlobalVariableSet(Name_Global_Signal_CLOSED_2,0);
GlobalVariableSet(Name_Global_Signal_CLOSED_3,0);
GlobalVariableSet(Name_Global_Signal_CLOSED_4,0);
GlobalVariableSet(Name_Global_Signal_CLOSED_5,0);
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//--------------------------------------------------------------------
if(FLAG_ORDER == 0)
{
//---------- ïîëó÷åíèå êðèòåðèåâ îòêðûòèÿ ----------------------------
SIGNAL_OPEN = 0;
switch(Num_Signal_Open)
{
case 1 : if( GlobalVariableGet(Name_Global_Signal_OPEN_1) == 1) SIGNAL_OPEN = 1; break;
case 2 : if( GlobalVariableGet(Name_Global_Signal_OPEN_1)+
GlobalVariableGet(Name_Global_Signal_OPEN_2) == 2) SIGNAL_OPEN = 1; break;
case 3 : if( GlobalVariableGet(Name_Global_Signal_OPEN_1)+
GlobalVariableGet(Name_Global_Signal_OPEN_2)+
GlobalVariableGet(Name_Global_Signal_OPEN_3) == 3) SIGNAL_OPEN = 1; break;
case 4 : if( GlobalVariableGet(Name_Global_Signal_OPEN_1)+
GlobalVariableGet(Name_Global_Signal_OPEN_2)+
GlobalVariableGet(Name_Global_Signal_OPEN_3)+
GlobalVariableGet(Name_Global_Signal_OPEN_4) == 4) SIGNAL_OPEN = 1; break;
case 5 : if( GlobalVariableGet(Name_Global_Signal_OPEN_1)+
GlobalVariableGet(Name_Global_Signal_OPEN_2)+
GlobalVariableGet(Name_Global_Signal_OPEN_3)+
GlobalVariableGet(Name_Global_Signal_OPEN_4)+
GlobalVariableGet(Name_Global_Signal_OPEN_5) == 5) SIGNAL_OPEN = 1; break;
default: Alert("Êîëè÷åñòâî ñèãíàëîâ îòêðûòèÿ çàäàíî íåâåðíî"); return;
}
switch(Num_Signal_Open)
{
case 1 : if( GlobalVariableGet(Name_Global_Signal_OPEN_1) == -1) SIGNAL_OPEN = -1; break;
case 2 : if( GlobalVariableGet(Name_Global_Signal_OPEN_1)+
GlobalVariableGet(Name_Global_Signal_OPEN_2) == -2) SIGNAL_OPEN = -1; break;
case 3 : if( GlobalVariableGet(Name_Global_Signal_OPEN_1)+
GlobalVariableGet(Name_Global_Signal_OPEN_2)+
GlobalVariableGet(Name_Global_Signal_OPEN_3) == -3) SIGNAL_OPEN = -1; break;
case 4 : if( GlobalVariableGet(Name_Global_Signal_OPEN_1)+
GlobalVariableGet(Name_Global_Signal_OPEN_2)+
GlobalVariableGet(Name_Global_Signal_OPEN_3)+
GlobalVariableGet(Name_Global_Signal_OPEN_4) == -4) SIGNAL_OPEN = -1; break;
case 5 : if( GlobalVariableGet(Name_Global_Signal_OPEN_1)+
GlobalVariableGet(Name_Global_Signal_OPEN_2)+
GlobalVariableGet(Name_Global_Signal_OPEN_3)+
GlobalVariableGet(Name_Global_Signal_OPEN_4)+
GlobalVariableGet(Name_Global_Signal_OPEN_5) == -5) SIGNAL_OPEN = -1; break;
default: return;
}
}
//------------------- Îòêðûòèå îðäåðà --------------------------------
if(SIGNAL_OPEN == 1 || SIGNAL_OPEN == -1)
{
i = 10;
while(FLAG_ORDER == 0 && i > 0)
{
SetOrder();
i--;
}
}
//--------------------------------------------------------------------
//--------------------------------------------------------------------
if(FLAG_ORDER == 1)
{
//---------- ïîëó÷åíèå êðèòåðèåâ çàêðûòèÿ ----------------------------
SIGNAL_CLOSED = 0;
switch(Num_Signal_Closed)
{
case 1 : if( GlobalVariableGet(Name_Global_Signal_CLOSED_1) == 1) SIGNAL_CLOSED = 1; break;
case 2 : if( GlobalVariableGet(Name_Global_Signal_CLOSED_1)+
GlobalVariableGet(Name_Global_Signal_CLOSED_2) == 2) SIGNAL_CLOSED = 1; break;
case 3 : if( GlobalVariableGet(Name_Global_Signal_CLOSED_1)+
GlobalVariableGet(Name_Global_Signal_CLOSED_2)+
GlobalVariableGet(Name_Global_Signal_CLOSED_3) == 3) SIGNAL_CLOSED = 1; break;
case 4 : if( GlobalVariableGet(Name_Global_Signal_CLOSED_1)+
GlobalVariableGet(Name_Global_Signal_CLOSED_2)+
GlobalVariableGet(Name_Global_Signal_CLOSED_3)+
GlobalVariableGet(Name_Global_Signal_CLOSED_4) == 4) SIGNAL_CLOSED = 1; break;
case 5 : if( GlobalVariableGet(Name_Global_Signal_CLOSED_1)+
GlobalVariableGet(Name_Global_Signal_CLOSED_2)+
GlobalVariableGet(Name_Global_Signal_CLOSED_3)+
GlobalVariableGet(Name_Global_Signal_CLOSED_4)+
GlobalVariableGet(Name_Global_Signal_CLOSED_5) == 5) SIGNAL_CLOSED = 1; break;
default: Alert("Êîëè÷åñòâî ñèãíàëîâ çàêðûòèÿ çàäàíî íåâåðíî"); return;
}
switch(Num_Signal_Closed)
{
case 1 : if( GlobalVariableGet(Name_Global_Signal_CLOSED_1) == -1) SIGNAL_CLOSED = -1; break;
case 2 : if( GlobalVariableGet(Name_Global_Signal_CLOSED_1)+
GlobalVariableGet(Name_Global_Signal_CLOSED_2) == -2) SIGNAL_CLOSED = -1; break;
case 3 : if( GlobalVariableGet(Name_Global_Signal_CLOSED_1)+
GlobalVariableGet(Name_Global_Signal_CLOSED_2)+
GlobalVariableGet(Name_Global_Signal_CLOSED_3) == -3) SIGNAL_CLOSED = -1; break;
case 4 : if( GlobalVariableGet(Name_Global_Signal_CLOSED_1)+
GlobalVariableGet(Name_Global_Signal_CLOSED_2)+
GlobalVariableGet(Name_Global_Signal_CLOSED_3)+
GlobalVariableGet(Name_Global_Signal_CLOSED_4) == -4) SIGNAL_CLOSED = -1; break;
case 5 : if( GlobalVariableGet(Name_Global_Signal_CLOSED_1)+
GlobalVariableGet(Name_Global_Signal_CLOSED_2)+
GlobalVariableGet(Name_Global_Signal_CLOSED_3)+
GlobalVariableGet(Name_Global_Signal_CLOSED_4)+
GlobalVariableGet(Name_Global_Signal_CLOSED_5) == -5) SIGNAL_CLOSED = -1; break;
default: return;
}
}
//--------------------------------------------------------------------
//------------------- Çàêðûòèå îðäåðà --------------------------------
if(SIGNAL_CLOSED == 1 || SIGNAL_CLOSED == -1)
{
i = 10;
while(FLAG_ORDER == 1 && i > 0)
{
CloseOrder();
i--;
}
}
//--------------------------------------------------------------------
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int SetOrder()
{
if(FLAG_ORDER == 0 && SIGNAL_OPEN == 1)
{
TICKET_BUY = OrderSend(Symbol(),OP_BUY,Lot,Ask,5,0,0,NULL,0,0,CLR_NONE);
ERROR = GetLastError();
switch(ERROR)
{
case 0 : FLAG_ORDER_BUY = 1;
FLAG_ORDER = 1;
SIGNAL_OPEN = 0;
Alert("Óñòàíîâëåí îðäåð - BUY");
GlobalVariableSet(Name_Global_Signal_OPEN_1,0);
GlobalVariableSet(Name_Global_Signal_OPEN_2,0);
GlobalVariableSet(Name_Global_Signal_OPEN_3,0);
GlobalVariableSet(Name_Global_Signal_OPEN_4,0);
GlobalVariableSet(Name_Global_Signal_OPEN_5,0);
return(0);
case 4109 : return;
default: Alert("Îøèáêà îòêðûòèÿ îðäåðà BUY = ",ERROR);return;
}
}
if(FLAG_ORDER == 0 && SIGNAL_OPEN == -1)
{
TICKET_SELL = OrderSend(Symbol(),OP_SELL,Lot,Bid,5,0,0,NULL,0,0,CLR_NONE);
ERROR = GetLastError();
switch(ERROR)
{
case 0 : FLAG_ORDER_SELL = 1;
FLAG_ORDER = 1;
SIGNAL_OPEN = 0;
Alert("Óñòàíîâëåí îðäåð - SELL");
GlobalVariableSet(Name_Global_Signal_OPEN_1,0);
GlobalVariableSet(Name_Global_Signal_OPEN_2,0);
GlobalVariableSet(Name_Global_Signal_OPEN_3,0);
GlobalVariableSet(Name_Global_Signal_OPEN_4,0);
GlobalVariableSet(Name_Global_Signal_OPEN_5,0);
return(0);
case 4109 : return;
default: Alert("Îøèáêà îòêðûòèÿ îðäåðà SELL = ",ERROR);return;
}
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int CloseOrder()
{
if(FLAG_ORDER == 1)
{
if(FLAG_ORDER_BUY == 1 && SIGNAL_CLOSED == -1)
{
OrderClose (TICKET_BUY, Lot, Bid, 2, CLR_NONE); // Çàêðûâàåì BUY
ERROR = GetLastError();
switch(ERROR)
{
case 0 : FLAG_ORDER_BUY = 0;
FLAG_ORDER = 0;
TICKET_BUY = 0;
SIGNAL_CLOSED = 0;
Alert("Çàêðûòèå îðäåðà BUY");
GlobalVariableSet(Name_Global_Signal_CLOSED_1,0);
GlobalVariableSet(Name_Global_Signal_CLOSED_2,0);
GlobalVariableSet(Name_Global_Signal_CLOSED_3,0);
GlobalVariableSet(Name_Global_Signal_CLOSED_4,0);
GlobalVariableSet(Name_Global_Signal_CLOSED_5,0);
return(0);
case 4109 : return;
default: Alert("Îøèáêà çàêðûòèÿ BUY = ",ERROR); return;
}
}
if(FLAG_ORDER_SELL == 1 && SIGNAL_CLOSED == 1)
{
OrderClose (TICKET_SELL, Lot, Ask, 2, CLR_NONE); // Çàêðûâàåì SELL
ERROR = GetLastError();
switch(ERROR)
{
case 0 : FLAG_ORDER_SELL = 0;
FLAG_ORDER = 0;
TICKET_SELL = 0;
SIGNAL_CLOSED = 0;
Alert("Çàêðûòèå îðäåðà SELL");
return(0);
case 4109 : return;
default: Alert("Îøèáêà çàêðûòèÿ SELL = ",ERROR); return;
}
}
}
}
//+------------------------------------------------------------------+
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
---