Author: Copyright � 2011, AM2 && Tiburond
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt Closes Orders by itself
0 Views
0 Downloads
0 Favorites
inlbeback
//+------------------------------------------------------------------+
//|                                                    i`lbeback.mq4 |
//|                                Copyright © 2011, AM2 && Tiburond |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, AM2 && Tiburond"
#property link      "http://www.forexsystems.biz"

#define MAGIC  20110406

extern int StopLoss    = 1300;   //Ñòîïëîññ îðäåðà
extern int StartHour   = 21;     //×àñ íà÷àëà òîðãîâëè(òåðìèíàëüíîå âðåìÿ)
extern int Distance    = 250;    //Ðàññòîÿíèå îò öåíû äëÿ óñòïíîâêè îðäåðà
extern int Step        = 50;     //Øàã óñòàíîâêè îðäåðîâ
extern int Count       = 4;      //Êîëè÷åñòâî óñòàíàâëèâàåìûõ îðäåðîâ
extern int Expiration  = 4;      //Âðåìÿ èñòå÷åíèÿ îðäåðà
extern double Lots     = 1;      //Ëîò
extern bool MM         = true;   //Îòêëþ÷åíèå ìàíèìåíåäæìåíòà
extern double TSP      = 5;      //Ðèñê
extern bool BU         = true;   //Îòêëþ÷åíèå âûâîäà ïîçèöèé â áåçóáûòîê â òå÷åíèå äíÿ
extern int BUHour      = 2;      //×àñ ïîñëå êîòîðãî âûâîäèì ïîçèöèè â áåçóáûòîê

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   int b=0,s=0,res;
   datetime expiration = TimeCurrent()+3600*Expiration;
   double BuyPrice=fND(Open[0]-Distance*Point);
   double SellPrice=fND(Open[0]+Distance*Point);   
   for (int i=OrdersTotal()-1;i>=0;i--)
     {
      if (OrderSelect(i, SELECT_BY_POS))
        {  
         if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC) continue;
         if (OrderType()==OP_BUYLIMIT) b++;
         if (OrderType()==OP_SELLLIMIT) s++;
        }   
     }
   if (Hour()>BUHour && Hour()<StartHour && AllProfit()>0) ClosePositions();
   if (Hour()>BUHour && DayOfWeek() == 5) ClosePositions();  
   if (Hour()==StartHour && b<1 && DayOfWeek() != 5)
   for(i=1;i<=Count;i++)
    {
     {               
      res=OrderSend(Symbol(),OP_BUYLIMIT,fLots(),fND(Ask-(Distance*Point+i*Step*Point)),3,fND(BuyPrice-StopLoss*Point),fND(Open[0]),"",MAGIC,expiration,Blue);      
      Sleep(3000);
      if(res<0) 
         {
            Print("ÎØÈÁÊÀ: ",GetLastError()); 
         } else {
            RefreshRates();
         }    
     }
    }
         
   if (Hour()==StartHour && s<1 && DayOfWeek() != 5)
   for(i=1;i<=Count;i++)
    {   
     {               
      res=OrderSend(Symbol(),OP_SELLLIMIT,fLots(),fND(Bid+(Distance*Point+i*Step*Point)),3,fND(SellPrice+StopLoss*Point),fND(Open[0]),"",MAGIC,expiration,Red );
      Sleep(3000);
      if(res<0) 
         {
            Print("ÎØÈÁÊÀ: ",GetLastError()); 
         } else {
            RefreshRates();
         }    
     }
    }    
//----   
   return(0);
  }
//+------------------------------------------------------------------+
double fND(double d, int n=-1) 
  {  
   if (n<0) return(NormalizeDouble(d, Digits)); 
   return(NormalizeDouble(d, n)); 
  }
//+------------------------------------------------------------------+
double fLots()
  {
   double lot=Lots;
   double  lot_min =MarketInfo( Symbol(), MODE_MINLOT  ); 
   double  lot_max =MarketInfo( Symbol(), MODE_MAXLOT  ); 
   if (MM)
     {
      double  lot_step =MarketInfo( Symbol(), MODE_LOTSTEP ); 
      double  lotcost =MarketInfo( Symbol(), MODE_TICKVALUE );       
      double  dollarsPerPip=0.0;

      lot = AccountFreeMargin()*TSP/100.0;
      dollarsPerPip=lot/StopLoss;
      lot=fND(dollarsPerPip/lotcost, 2);      
      lot=fND(lot/lot_step, 0) * lot_step;
     }
   if (lot<lot_min) lot=lot_min;
   if (lot>lot_max) lot=lot_max;
   return(lot);
  }
//+------------------------------------------------------------------+
void ClosePositions()
  {
   if(BU)
   for (int i=OrdersTotal()-1;i>=0;i--)
    {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol())
       {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
          {
            if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, 3, Blue);
            if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
          }
         Sleep(1000);
      }
    }
  }
//+------------------------------------------------------------------+
double AllProfit()
  {
   double Profit = 0;
   for (int i=OrdersTotal()-1;i>=0;i--)
    {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MAGIC) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
         if (OrderType() == OP_BUY || OrderType() == OP_SELL) Profit += OrderProfit();
    }
   return (Profit);
  }
//+------------------------------------------------------------------+

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