Author: Verdi
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reached
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
STOP_2_0
//+------------------------------------------------------------------+
//|                                                     STOP 2.0.mq4 |
//|                                                            Verdi |
//|                                                  nemo811@mail.ru |
//+------------------------------------------------------------------+

#property copyright "Verdi"
#property link      "nemo811@mail.ru"

extern bool   Common = true; //ïåðåêëþ÷àòåëü ðåæèìîâ: 
                             //true - ðàññ÷¸ò ïî îáùåìó ýêâèòè, 
                             //false - ðàññ÷¸ò ïî áàëàíñó òåêóùåãî èíñòðóìåíòà 
extern double RM  = 4.000;   //åñëè Common = true : ìàêñèìàëüíî äîïóñòèìûé % ïðîñàäêè îò äåïîçèòà
                             //åñëè Common = false : ìàêñèìàëüíî äîïóñòèìàÿ ïðîñàäêà ïî òåêóùåìó èíñòðóìåíòó â âàëþòå äåïîçèòà 

double Balans,Equity,FlowLoss,LotR,ProfitR;

int init()
  {

   if (!IsTesting())
    {
     if(!IsExpertEnabled())
      {
       Alert("ÒÎÐÃÎÂËß ÑÎÂÅÒÍÈÊÀÌÈ ÇÀÏÐÅÙÅÍÀ !");
       Comment("ÒÎÐÃÎÂËß ÑÎÂÅÒÍÈÊÀÌÈ ÇÀÏÐÅÙÅÍÀ !");
       return(0);
      }
     else
      {
       Comment("Èíèöèàëèçàöèÿ ïðîøëà óñïåøíî. Æä¸ì ñâåæóþ êîòèðîâêó.");
       Print("Èíèöèàëèçàöèÿ ïðîøëà óñïåøíî. Æä¸ì ñâåæóþ êîòèðîâêó.");
      }
    }

   return(0);
  }

int deinit()
  {

   if (!IsTesting())
    {
     Print("Ñîâåòíèê äåèíèöèàëèçèðîâàí (âûêëþ÷åí).");
    }

   return(0);
  }

int start()
  {

   RefreshRates();

   if(!IsTradeAllowed())
    {
     Comment("Òîðãîâëÿ çàïðåùåíà â íàñòðîéêàõ òåðìèíàëà, ëèáî òîðãîâûé ïîòîê çàíÿò.");
     return(0);
    }

   Balans   = AccountBalance();
   Equity   = AccountEquity();

   double SchBuyLots    = NormalizeDouble(SchBuyLots_b(),8);
   double SchSellLots   = NormalizeDouble(SchSellLots_b(),8);
   double SchBuyProfit  = SchBuyProfit_b();
   double SchSellProfit = SchSellProfit_b();

   LotR    = SchBuyLots-SchSellLots;
   ProfitR = SchBuyProfit+SchSellProfit;

   if (Common)
    {
     if (Balans<=Equity)
      {
       FlowLoss = 0;
      }
     else
      {
       FlowLoss=NormalizeDouble(100-Equity*100/Balans,3);
      }
     Comment("RM - ",RM," %\n",
             "FlowLoss - ",FlowLoss," %\nwww.mt4.ucoz.com");
    }
   else
    {
     if (ProfitR>=0)
      {
       FlowLoss = 0;
      }
     else
      {
       FlowLoss=NormalizeDouble(-ProfitR,3);
      }
     Comment("RM - ",RM,"\n",
             "FlowLoss - ",FlowLoss,"\nwww.mt4.ucoz.com");
    }

   if (FlowLoss>RM && SchBuyLots!=SchSellLots)
    {
     for (int i=1; i<=1; i++)
      {
       if (LotR<0)
        {
         OPENORDER ("Buy");
        }
       if (LotR>0)
        {
         OPENORDER ("Sell");
        }
      }
    }

   return(0);
  }
//+------------------------------------------------------------------+

double SchBuyLots_b()
 {
  double SchBuyLots=0;
  int i;
  string SMB=Symbol();
  for (i=OrdersTotal()-1;i>=0;i--)
   {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
     {
      Alert ("Îøèáêà ",GetLastError()," âûáîðà îðäåðà!");
      Print ("Îøèáêà ",GetLastError()," âûáîðà îðäåðà!");
     }
    else
     {
      if(OrderSymbol()==SMB && OrderType()==OP_BUY)
       {
        SchBuyLots=SchBuyLots+OrderLots();
       }
     }
   }
  return(SchBuyLots);
 }

double SchSellLots_b()
 {
  double SchSellLots=0;
  int i;
  string SMB=Symbol();
  for (i=OrdersTotal()-1;i>=0;i--)
   {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
     {
      Alert ("Îøèáêà ",GetLastError()," âûáîðà îðäåðà!");
      Print ("Îøèáêà ",GetLastError()," âûáîðà îðäåðà!");
     }
    else
     {
      if(OrderSymbol()==SMB && OrderType()==OP_SELL)
       {
        SchSellLots=SchSellLots+OrderLots();
       }
     }
   }
  return(SchSellLots);
 }

double SchBuyProfit_b()
 {
  double SchBuyProfit=0;
  int i;
  string SMB=Symbol();
  for (i=OrdersTotal()-1;i>=0;i--)
   {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
     {
      Alert ("Îøèáêà ",GetLastError()," âûáîðà îðäåðà!");
      Print ("Îøèáêà ",GetLastError()," âûáîðà îðäåðà!");
     }
    else
     {
      if(OrderSymbol()==SMB && OrderType()==OP_BUY)
       {
        SchBuyProfit=SchBuyProfit+OrderProfit();
       }
     }
   }
  return(SchBuyProfit);
 }

double SchSellProfit_b()
 {
  double SchSellProfit=0;
  int i;
  string SMB=Symbol();
  for (i=OrdersTotal()-1;i>=0;i--)
   {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
     {
      Alert ("Îøèáêà ",GetLastError()," âûáîðà îðäåðà!");
      Print ("Îøèáêà ",GetLastError()," âûáîðà îðäåðà!");
     }
    else
     {
      if(OrderSymbol()==SMB && OrderType()==OP_SELL)
       {
        SchSellProfit=SchSellProfit+OrderProfit();
       }
     }
   }
  return(SchSellProfit);
 }

void OPENORDER(string ord)
 {
  int ticket = -1;

  double Lot;
  double SchBuyLots  = SchBuyLots_b();
  double SchSellLots = SchSellLots_b();

  Lot=MathAbs(SchBuyLots-SchSellLots);

  while (ticket<0)
   {
    if (ord=="Buy")  ticket=OrderSend(Symbol(),OP_BUY, Lot,Ask,3,0,0,"Óñòàíîâëåí çàìîê",0,0);
    if (ord=="Sell") ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,"Óñòàíîâëåí çàìîê",0,0);
    if (ticket==-1)
     {  
      Alert ("Îøèáêà ",GetLastError()," óñòàíîâêè ëîêîâîãî îðäåðà!");
      Print ("Îøèáêà ",GetLastError()," óñòàíîâêè ëîêîâîãî îðäåðà!");
     }
    else
     {   
      if (Common)
       {
        Alert ("Óñòàíîâëåí çàìîê ñîãëàñíî RM ",RM,"%\nwww.mt4.ucoz.com");
        Print ("Óñòàíîâëåí çàìîê ñîãëàñíî RM ",RM,"%");
       }
      else
       { 
        Alert ("Óñòàíîâëåí çàìîê ñîãëàñíî RM ",RM,"\nwww.mt4.ucoz.com");
        Print ("Óñòàíîâëåí çàìîê ñîãëàñíî RM ",RM);
       }
      return (0);
     }
   }
  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 ---