closeall_v2

Author: Barmaley
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reached
0 Views
0 Downloads
0 Favorites
closeall_v2
//+------------------------------------------------------------------+
//|                                                     CloseAll.mq4 |
//|                                                         Barmaley |
//|                                                  Ñïàñèáî Áýòìàíó |
//+------------------------------------------------------------------+
#property copyright "Barmaley"
#property link      ""
#property show_inputs

extern int Magic=0;
double PriceCurrent;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int OnStart()
  {
//----
   CloseAll();
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll()
  {
   double lotbuy=0,lotsell=0,sumlot;
   int cmd;

// Ðàñ÷åò ñóììàðíîé ïîçèöèè, çàîäíî óäàëèì îòëîæåííèêè
   int TOTAL=OrdersTotal();
   for(int trade=TOTAL-1; trade>=0; trade--)
     {
      bool x=OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol() || (Magic!=0 && OrderMagicNumber()!=Magic)) continue;
      int ticket=OrderTicket();
      if(OrderType()==OP_BUY) lotbuy+=OrderLots();
      if(OrderType()==OP_SELL) lotsell+=OrderLots();
      if(OrderType()>1) x=OrderDelete(ticket);
     }
   sumlot=lotbuy-lotsell;

// Îòêðîåì âñòðå÷íóþ ê ñóììàðíîé      
   if(sumlot>0) {cmd=OP_SELL; PriceCurrent=MarketInfo(Symbol(),MODE_BID);}
   if(sumlot<0) {cmd=OP_BUY; PriceCurrent=MarketInfo(Symbol(),MODE_ASK);}
   if(sumlot!=0) x=OrderSend(Symbol(),cmd,MathAbs(sumlot),PriceCurrent,1000,0,0,"",Magic);

//Çàêðîåì Âñòðå÷íûå îðäåðà   
   int TicBuy=999,TicSell=999; //×òîáû çàïóñèòü öèêë

   while(TicBuy>0 && TicSell>0)
     {
      RefreshRates();
      TOTAL=OrdersTotal(); //Åñëè ëîòû âñòðå÷íûõ ðàçíûå, îáðàçóþòñÿ íîâûå îðäåðà è òèêåòû, ïîýòîìó âû÷èñëÿåì êàæäûé ðàç
      TicBuy=0; TicSell=0;

      // Òèêåò îðäåðà Buy, ïåðâûé ïîïàâøèéñÿ
      for(trade=TOTAL-1; trade>=0; trade--)
        {
         x=OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()!=Symbol() || (Magic!=0 && OrderMagicNumber()!=Magic)) continue;
         ticket=OrderTicket();
         if(OrderType()==OP_BUY) {TicBuy=ticket;lotbuy=OrderLots();break;}
        }

      if(TicBuy==0) continue; //Çàêîí÷èëèñü áàè, âûõîäèì

                              // Òèêåò îðäåðà Sell, ïåðâûé ïîïàâøèéñÿ
      for(trade=OrdersTotal()-1; trade>=0; trade--)
        {
         x=OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()!=Symbol() || (Magic!=0 && OrderMagicNumber()!=Magic)) continue;
         ticket=OrderTicket();
         if(OrderType()==OP_SELL) {TicSell=ticket;lotsell=OrderLots();break;}
        }

      if(TicSell==0) continue; //Çàêîí÷èëèñü ñåëëû, âûõîäèì
      
      // Åñëè íàøåëñÿ è áàé è ñåëë, çàêðîåì èõ âñòðå÷íî      
      if(lotbuy>lotsell) //Äëÿ êðàñîòû â îò÷åòå
         x=OrderCloseBy(TicBuy,TicSell);
      else x=OrderCloseBy(TicSell,TicBuy);
     }
  }
//+------------------------------------------------------------------+

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