Author: VadimVP
Orders Execution
Checks for the total of open ordersIt can change open orders parameters, due to possible stepping strategy
0 Views
0 Downloads
0 Favorites
ZeroLevel
//+------------------------------------------------------------------+
//|                                                    ZeroLevel.mq4 |
//|                                                          VadimVP |
//|                                                poluyan@fxmail.ru |
/*
 Ñêðèïò ïîñòàâèò TakeProfit è StopLoss ó îòêðûòûõ îðäåðîâ íà òåêóùåì
 èíñòðóìåíòå íà óðîâåíü áåçóáûòî÷íîñòè.
 Ðàñ÷åò âåäåòñÿ òîëüêî äëÿ îðäåðîâ òåêóùåãî èíñòðóìåíòà.
 Ó÷èòûâàåò ñâîï è êîìèññèè. Ðàáîòàåò ïðè ëþáûõ Digits.
 Òî÷íîñòü +/- ðàçìåð ñïðåäà.
 Îá óñïåøíîñòè èçìåíåíèé ñîîáùèò â äèàëîãîâîì îêíå.
 Ïðîâåðüòå, âêëþ÷åíà ëè îïöèÿ "ðàçðåøèòü ñîâåòíèêó òîðãîâàòü". 
*/
//| 
//+------------------------------------------------------------------+
#property copyright "VadimVP"
#property link      "poluyan@fxmail.ru"
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
   int kol=0;
   int kolOK=0;
   int i=0;
   double lots=0;
   double sum=0;
   double sum1=0;
   for (i=0; i<OrdersTotal(); i++)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol()!=Symbol()) continue;
      if (OrderType()==OP_BUY)
      {
       lots=lots+OrderLots();
       sum=sum+OrderLots()*OrderOpenPrice();
       sum1=sum1+OrderProfit( )+OrderSwap( )+OrderCommission( )  ; 
       kol=kol+1;
      }
      if (OrderType()==OP_SELL)
      {
       lots=lots-OrderLots();
       sum=sum-OrderLots()*OrderOpenPrice();
       sum1=sum1+OrderProfit( )+OrderSwap( )+OrderCommission( )  ;
       kol=kol+1;
      }
   }
   double zeroprice=0;
   if (lots!=0) zeroprice=sum/lots;
   zeroprice = (MathRound(zeroprice*MathPow(10,Digits)))/MathPow(10,Digits);

   
//-----
 Alert ("!!!  Ïîæàëóéñòà äîæäèòåëü îêîí÷àíèÿ ðàáîòû ñêðèïòà!");
 int res = 0;
 for (i=0; i<OrdersTotal(); i++)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol()!=Symbol()) continue;
        
         if (sum1>0) 
         { if (OrderType()==OP_BUY) {if (zeroprice == OrderTakeProfit()) res=res+1; else { if (OrderModify(OrderTicket(),0,OrderStopLoss(),zeroprice,0,CLR_NONE)) res = res+1;}    }
           if (OrderType()==OP_SELL){if (zeroprice == OrderStopLoss()) res=res+1; else { if (  OrderModify(OrderTicket(),0,zeroprice,OrderTakeProfit(),0,CLR_NONE)) res = res+1;}     } }
         if (sum1<0) 
         { if (OrderType()==OP_BUY) {if (zeroprice == OrderStopLoss()) res=res+1; else { if (  OrderModify(OrderTicket(),0,zeroprice,OrderTakeProfit(),0,CLR_NONE)) res = res+1;} }
           if (OrderType()==OP_SELL){if (zeroprice == OrderTakeProfit()) res=res+1; else { if (OrderModify(OrderTicket(),0,OrderStopLoss(),zeroprice,0,CLR_NONE)) res = res+1;}    } } 
          
   }
 Alert ("***************************************************");
 Alert ("Öåíà áåçóáûòî÷íîñòè "+DoubleToStr(zeroprice,Digits));
 if (kol==res) Alert ("Âñå îðäåðà óñïåøíî èçìåíåíû! Òî÷êà áåçóáûòî÷íîñòè âûñòàâëåíà. ÎÊ!"); else Alert ("!!! Âíèìàíèå!!! Íå óäàëîñü èçìåíèòü - " +(kol-res)+ " îðäåðà èç "+kol+" èìåþùèõñÿ");
 Alert ("************ èíôîðìàöèÿ îò ZeroLevel script ************");
 
//------

   return(0);
  }

n(0);
  }

*****");
 Alert ("Öåíà áåçóáûòî÷íîñòè "+DoubleToStr(zeroprice,Digits));
 if (kol==res) Alert ("Âñå îðäåðà óñïåøíî èçìåíåíû! Òî÷êà áåçóáûòî÷íîñòè âûñòàâëåíà. ÎÊ!"); else Alert ("!!! Âíèìàíèå!!! Íå óäàëîñü èçìåíèòü - " +(kol-res)+ " îðäåðà èç "+kol+" èìåþùèõñÿ");
 Alert ("************ èíôîðìàöèÿ îò ZeroLevel script ************");
 
//------
   }
   
   return(0);
  }


double symbolprofit() // profit ïî îðäåðàì ÒÎËÜÊÎ òåêóùåãî èíñòðóìåíòà (áåç ñâîïîâ è êîìèññèé)
{
double sprofit = 0;
for (int i=0; i<OrdersTotal(); i++)   
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol()!=Symbol()) continue;
      sprofit = sprofit + OrderProfit( ); 
   }
return(sprofit);
}

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