Author:
Orders Execution
Checks for the total of open ordersIt Closes Orders by itself It automatically opens orders when conditions are reached
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
Secwenta
//---------------------------------------------------------------
// Secwenta.mq4 
// 
//---------------------------------------------------------------
#property copyright ""
#property link      ""
//---------------------------------------------------------------                                    
extern double StopLoss   =100;     // SL 
extern double TakeProfit =35;      // ÒÐ 
extern double Lots       =0.01;     // 
extern double Prots      =10.00;    // Ïðîöåíò ñâîáîäíûõ ñðåäñòâ 
bool Work=true;                    
string Secwenta;                       // Íàçâàíèå ôèíàíñ. èíñòðóìåíòà
int i1;
int num=0;
int num1=0;
string textVar;
double ExtMapBuffer1;
string symbol; int timeframe;
//+------------------------------------------------------------------+
int init()
  {
//---- 
   symbol = Symbol();
   timeframe =0;
//---- 
   return(0);
  }

//--------------------------------------------------------------- 2 --
int start()
  {
   int
   Total,                           // Êîëè÷åñòâî îðäåðîâ â îêíå 
   Tip=-1,                          // Òèï âûáðàí. îðäåðà (B=0,S=1)
   Ticket;                          // Íîìåð îðäåðà
   double
   Lot,                             // Êîëè÷. ëîòîâ â âûáðàí.îðäåðå
   Lts,                             // Êîëè÷. ëîòîâ â îòêðûâ.îðäåðå
   Min_Lot,                         // Ìèíèìàëüíîå êîëè÷åñòâî ëîòîâ
   Step,                            // Øàã èçìåíåíèÿ ðàçìåðà ëîòà
   Free,                            // Òåêóùèå ñâîáîäíûå ñðåäñòâà
   One_Lot,                         // Ñòîèìîñòü îäíîãî ëîòà
   Price,                           // Öåíà âûáðàííîãî îðäåðà
   SL,                              // SL âûáðàííîãî îðäåðà 
   TP;                              // TP âûáðàííîãî îðäåðà
   bool
   Ans  =false,                     // Îòâåò ñåðâåðà ïîñëå çàêðûòèÿ
   Cls_B=false,                     // Êðèòåðèé äëÿ çàêðûòèÿ  Buy
   Cls_S=false,                     // Êðèòåðèé äëÿ çàêðûòèÿ  Sell
   Opn_B=false,                     // Êðèòåðèé äëÿ îòêðûòèÿ  Buy
   Opn_S=false;                     // Êðèòåðèé äëÿ îòêðûòèÿ  Sell
//--------------------------------------------------------------- 3 --

  int IBARS = iBars(symbol, timeframe);
  if(ArraySize(ExtMapBuffer1) < IBARS)
    {
      ArraySetAsSeries(ExtMapBuffer1, false);
      ArrayResize(ExtMapBuffer1, IBARS);        
      ArraySetAsSeries(ExtMapBuffer1, true);       
    } 
   static int IndCounted;
   int limit;
int counted_bars = IndCounted;
   IndCounted = IBARS - 1;
   limit = IBARS - counted_bars - 1;

for(int i1=limit; i1>=0; i1--)
{
if(Close[i1+1]<Close[i1+5])num = num + 1; 
else num = 0;	
	
		if (num == 9) {textVar = num;
	        ObjectCreate(""+i1, OBJ_TEXT, 0, Time[i1+1],Low[i1+1]-5*Point );
                ObjectSetText(""+i1, ""+DoubleToStr(num,0), 16, "Arial", Red);}			

if(Close[i1+1]>Close[i1+5]) num1 = num1 + 1; 
else num1 = 0;
	
		if (num1 == 9) {textVar = num1;
		ObjectCreate(""+i1, OBJ_TEXT, 0, Time[i1+1],High[i1+1]+10*Point );
                ObjectSetText(""+i1, ""+DoubleToStr(num1,0), 16, "Arial", RoyalBlue); }
}


   // Ïðåäâàðèò.îáðàáîòêà
   
   if(Work==false)                              // Êðèòè÷åñêàÿ îøèáêà
     {
      Alert("Êðèòè÷åñêàÿ îøèáêà. Ýêñïåðò íå ðàáîòàåò.");
      return;                                   // Âûõîä èç start()
     }
//--------------------------------------------------------------- 4 --
   // Ó÷¸ò îðäåðîâ
   Secwenta=Symbol();                               // Íàçâàíèå ôèí.èíñòð.
   Total=0;                                     // Êîëè÷åñòâî îðäåðîâ
   for(int i=1; i<=OrdersTotal(); i++)          // Öèêë ïåðåáîðà îðäåð
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Åñëè åñòü ñëåäóþùèé
        {                                       // Àíàëèç îðäåðîâ:
         if (OrderSymbol()!=Secwenta)continue;      // Íå íàø ôèí. èíñòðóì
         if (OrderType()>1)                     // Ïîïàëñÿ îòëîæåííûé
           {
            Alert("Îáíàðóæåí îòëîæåííûé îðäåð. Ýêñïåðò íå ðàáîòàåò.");
            return;                             // Âûõîä èç start()
           }
         Total++;                               // Ñ÷¸ò÷èê ðûíî÷í. îðä
         if (Total>1)                           // Íå áîëåå îäíîãî îðä
           {
            Alert("Íåñêîëüêî ðûíî÷íûõ îðäåðîâ. Ýêñïåðò íå ðàáîòàåò.");
            return;                             // Âûõîä èç start()
           }
         Ticket=OrderTicket();                  // Íîìåð âûáðàíí. îðä.
         Tip   =OrderType();                    // Òèï âûáðàííîãî îðä.
         Price =OrderOpenPrice();               // Öåíà âûáðàíí. îðä.
         SL    =OrderStopLoss();                // SL âûáðàííîãî îðä.
         TP    =OrderTakeProfit();              // TP âûáðàííîãî îðä.
         Lot   =OrderLots();                    // Êîëè÷åñòâî ëîòîâ
        }
     }
//--------------------------------------------------------------- 5 --
   // Òîðãîâûå êðèòåðèè
 
   if (num == 9)                                
     {                                          
      Opn_B=true;                               // Êðèòåðèé îòêð. Buy
      Cls_S=true;                               // Êðèòåðèé çàêð. Sell
     }
   if (num1 == 9)          
     {                                          
      Opn_S=true;                               // Êðèòåðèé îòêð. Sell
      Cls_B=true;                               // Êðèòåðèé çàêð. Buy
     }
//--------------------------------------------------------------- 6 --
   // Çàêðûòèå îðäåðîâ
   while(true)                                  // Öèêë çàêðûòèÿ îðä.
     {
      if (Tip==0 && Cls_B==true)                // Îòêðûò îðäåð Buy..
        {                                       //è åñòü êðèòåðèé çàêð
         Alert("Ïîïûòêà çàêðûòü Buy ",Ticket,". Îæèäàíèå îòâåòà..");
         RefreshRates();                        // Îáíîâëåíèå äàííûõ
         Ans=OrderClose(Ticket,Lot,Bid,2);      // Çàêðûòèå Buy
         if (Ans==true)                         // Ïîëó÷èëîñü :)
           {
            Alert ("Çàêðûò îðäåð Buy ",Ticket);
            break;                              // Âûõîä èç öèêëà çàêð
           }
         if (Fun_Error(GetLastError())==1)      // Îáðàáîòêà îøèáîê
            continue;                           // Ïîâòîðíàÿ ïîïûòêà
         return;                                // Âûõîä èç start()
        }
 
      if (Tip==1 && Cls_S==true)                // Îòêðûò îðäåð Sell..
        {                                       // è åñòü êðèòåðèé çàêð
         Alert("Ïîïûòêà çàêðûòü Sell ",Ticket,". Îæèäàíèå îòâåòà..");
         RefreshRates();                        // Îáíîâëåíèå äàííûõ
         Ans=OrderClose(Ticket,Lot,Ask,2);      // Çàêðûòèå Sell
         if (Ans==true)                         // Ïîëó÷èëîñü :)
           {
            Alert ("Çàêðûò îðäåð Sell ",Ticket);
            break;                              // Âûõîä èç öèêëà çàêð
           }
         if (Fun_Error(GetLastError())==1)      // Îáðàáîòêà îøèáîê
            continue;                           // Ïîâòîðíàÿ ïîïûòêà
         return;                                // Âûõîä èç start()
        }
      break;                                    // Âûõîä èç while
     }
//--------------------------------------------------------------- 7 --
   // Ñòîèìîñòü îðäåðîâ
   RefreshRates();                              // Îáíîâëåíèå äàííûõ
   Min_Lot=MarketInfo(Secwenta,MODE_MINLOT);        // Ìèíèì. êîëè÷. ëîòîâ 
   Free   =AccountFreeMargin();                 // Ñâîáîäí ñðåäñòâà
   One_Lot=MarketInfo(Secwenta,MODE_MARGINREQUIRED);// Ñòîèìîñòü 1 ëîòà
   Step   =MarketInfo(Secwenta,MODE_LOTSTEP);       // Øàã èçìåíåí ðàçìåðà
 
   if (Lots > 0)                                // Åñëè çàäàíû ëîòû,òî 
      Lts =Lots;                                // ñ íèìè è ðàáîòàåì 
   else                                         // % ñâîáîäíûõ ñðåäñòâ
      Lts=MathFloor(Free*Prots/One_Lot/Step)*Step;// Äëÿ îòêðûòèÿ
 
   if(Lts < Min_Lot) Lts=Min_Lot;               // Íå ìåíüøå ìèíèìàëüí
   if (Lts*One_Lot > Free)                      // Ëîò äîðîæå ñâîáîäí.
     {
      Alert(" Íå õâàòàåò äåíåã íà ", Lts," ëîòîâ");
      return;                                   // Âûõîä èç start()
     }
//--------------------------------------------------------------- 8 --
   // Îòêðûòèå îðäåðîâ
   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. Îæèäàíèå îòâåòà..");
         Ticket=OrderSend(Secwenta,OP_BUY,Lts,Ask,2,SL,TP);//Îòêðûòèå Buy
         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. Îæèäàíèå îòâåòà..");
         Ticket=OrderSend(Secwenta,OP_SELL,Lts,Bid,2,SL,TP);//Îòêðûòèå Sel
         if (Ticket > 0)                        // Ïîëó÷èëîñü :)
           {
            Alert ("Îòêðûò îðäåð Sell ",Ticket);
            return;                             // Âûõîä èç start()
           }
         if (Fun_Error(GetLastError())==1)      // Îáðàáîòêà îøèáîê
            continue;                           // Ïîâòîðíàÿ ïîïûòêà
         return;                                // Âûõîä èç start()
        }
      break;                                    // Âûõîä èç while
     }
//--------------------------------------------------------------- 9 --
   return;                                      // Âûõîä èç start()
  }
//-------------------------------------------------------------- 10 --
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);                             // Âûõîä èç ôóíêöèè
     }
  }
//-------------------------------------------------------------- 11 --
int New_Stop(int Parametr)                      // Ïðîâåðêà ñòîï-ïðèê.
  {
   int Min_Dist=MarketInfo(Secwenta,MODE_STOPLEVEL);// Ìèíèì. äèñòàíöèÿ
   if (Parametr < Min_Dist)                     // Åñëè ìåíüøå äîïóñò.
     {
      Parametr=Min_Dist;                        // Óñòàíîâèì äîïóñò.
      Alert("Óâåëè÷åíà äèñòàíöèÿ ñòîï-ïðèêàçà.");
     }
   return(Parametr);                            // Âîçâðàò çíà÷åíèÿ
  }
//-------------------------------------------------------------- 12 --

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 ---