Author: Copyright 2013, MetaQuotes Software Corp.
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
library
//+------------------------------------------------------------------+
//|                                                      library.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#property library


//+------------------------------------------------------------------+
//             Ó÷åò îðäåðîâ
//+------------------------------------------------------------------+
void Uchet_orderov(int Mag, string Symb, int &mas[8])
{
ArrayInitialize(mas,0);
//mas[0] - ïîêóïêè
//mas[1] - ïðîäàæè
//mas[2] - baylimit
//mas[3] - selllimit
//mas[4] - baystop
//mas[5] - sellstop
//mas[6] - ñäåëêè
//mas[7] - îòëîæêè
int tip;
for (int pos=0; pos<OrdersTotal();pos++)
   {
   OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
   tip=OrderType();
   switch(tip)
      {
      case 0:{mas[0]++;mas[6]++;break;}
      case 1:{mas[1]++;mas[6]++;break;}
      case 2:{mas[2]++;mas[7]++;break;}
      case 3:{mas[3]++;mas[7]++;break;}
      case 4:{mas[4]++;mas[7]++;break;}
      case 5:{mas[5]++;mas[7]++;break;}
      }
      
      
   }
}

//+------------------------------------------------------------------+
//|               òðåèëèíã ñòîï                                                      |
//+------------------------------------------------------------------+
void Trailing_stop(int Magic, string Symb, int Dist, int Shag, bool Isp_shag, bool bezubytok)
{
   double dist, shag;
   // ðàçíîå êîë-âî öèôð â êîòèðîâêàõ, ãäå-òî 4 ãäå 5 ãäå 3 ãäå 2 öèôðû ïîñëå çàïÿòîé
   if (Digits==3||Digits==5) {dist=Dist*10*Point; shag=Shag*10*Point;}
   else if (Digits==2||Digits==4) {dist=Dist*Point; shag=Shag*Point;}
   
   // ïåðåáîðêà îðäåðîâ
   for (int pos=0; pos<OrdersTotal(); pos++)
      {
      OrderSelect(pos, SELECT_BY_POS,MODE_TRADES);
      if (OrderMagicNumber()==Magic||OrderSymbol()==Symb)
         {
         if (OrderType()==OP_BUY)
            {
            if (!Isp_shag&&!bezubytok&&NormalizeDouble(Ask-OrderStopLoss(),Digits)>NormalizeDouble(dist,Digits))
            OrderModify(OrderTicket(),0,Ask-dist,OrderTakeProfit(),0,CLR_NONE);
            if (Isp_shag&&!bezubytok&&NormalizeDouble(Ask-OrderOpenPrice(),Digits)>=NormalizeDouble(shag,Digits)&&
            NormalizeDouble(Ask-OrderStopLoss(),Digits)>NormalizeDouble(dist,Digits))
            OrderModify(OrderTicket(),0,Ask-dist,OrderTakeProfit(),0,CLR_NONE);
            if (!Isp_shag&&bezubytok&&NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(OrderOpenPrice(),Digits)&&
            NormalizeDouble(Ask-OrderStopLoss(),Digits)>NormalizeDouble(dist,Digits))
            OrderModify(OrderTicket(),0,Ask-dist,OrderTakeProfit(),0,CLR_NONE);
            if (Isp_shag&&bezubytok&&NormalizeDouble(Ask-OrderOpenPrice(),Digits)>=NormalizeDouble(shag,Digits)&&
            NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(OrderOpenPrice(),Digits)&&
            NormalizeDouble(Ask-OrderStopLoss(),Digits)>NormalizeDouble(dist,Digits))
            OrderModify(OrderTicket(),0,Ask-dist,OrderTakeProfit(),0,CLR_NONE);
            }
         else if (OrderType()==OP_SELL)
            {
            if (!Isp_shag&&!bezubytok&&NormalizeDouble(OrderStopLoss()-Bid,Digits)>NormalizeDouble(dist,Digits))
            OrderModify(OrderTicket(),0,Bid+dist,OrderTakeProfit(),0,CLR_NONE);
            if (Isp_shag&&!bezubytok&&NormalizeDouble(OrderOpenPrice()-Bid,Digits)>=NormalizeDouble(shag,Digits)&&
            NormalizeDouble(OrderStopLoss()-Bid,Digits)>NormalizeDouble(dist,Digits))
            OrderModify(OrderTicket(),0,Bid+dist,OrderTakeProfit(),0,CLR_NONE);
            if (!Isp_shag&&bezubytok&&NormalizeDouble(OrderStopLoss(),Digits)>NormalizeDouble(OrderOpenPrice(),Digits)&&
            NormalizeDouble(OrderStopLoss()-Bid,Digits)>NormalizeDouble(dist,Digits))
            OrderModify(OrderTicket(),0,Bid+dist,OrderTakeProfit(),0,CLR_NONE);
            if (Isp_shag&&bezubytok&&NormalizeDouble(OrderOpenPrice()-Bid,Digits)>=NormalizeDouble(shag,Digits)&&
            NormalizeDouble(OrderStopLoss(),Digits)>NormalizeDouble(OrderOpenPrice(),Digits)&&
            NormalizeDouble(OrderStopLoss()-Bid,Digits)>NormalizeDouble(dist,Digits))
            OrderModify(OrderTicket(),0,Bid+dist,OrderTakeProfit(),0,CLR_NONE);
            }
         }
      }
   
}
//+------------------------------------------------------------------+

Comments