Author: Sergey Gulyaev. Maykop.
Orders Execution
It automatically opens orders when conditions are reached
Miscellaneous
It issuies visual alerts to the screen
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 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 ---