Navigation:Home > Content >

OpenLimitOrderNet_BUY.mq4

Time: 2018-02-19 | Download file:OpenLimitOrderNet_BUY.mq4

#property copyright "Copyright © 2010, Хлыстов Владимир"
#property link      "[email protected]"
#property show_inputs
//--------------------------------------------------------------------
extern int     stoploss       = 0,       //уровень выставления SL, если 0, то SL не выставляется
               takeprofit     = 0,       //уровень выставления TP, если 0, то TP не выставляется
               delta          = 30,       //расстояние от текущей цены
               MaxOrders      = 3,        //кол-во ордеров сетки
               Magic          = 123456;   //уникальный номер ордера
extern bool    SELL           = false,     //открыть ордер LIMITSTOP
               BUY            = true;     //открыть ордер LIMITSTOP
extern double  Lot            = 0.01;      //объем ордера
extern double  FirstBuyStop   = 0;  //если 0 то по цене Ask+delta
extern double  FirstSellStop  = 0;  //если 0 то по цене Bid-delta
extern double  K_Lot          = 1.1;        //увеличение лота с шагом
//--------------------------------------------------------------------

//--------------------------------------------------------------------
int start()
{
   double SL,TP,Price;
   int SPREAD=MarketInfo(Symbol(),MODE_SPREAD);
   double LOT=Lot;
   for (int i=1; i<=MaxOrders; i++)
   {
      if (BUY)
      {
         if (FirstSellStop==0) Price = NormalizeDouble(Bid-delta*i*Point,Digits);
         else Price = NormalizeDouble(FirstSellStop-delta*(i-1)*Point,Digits);
         if (takeprofit!=0) TP = NormalizeDouble(Price + (SPREAD+stoploss)*Point,Digits); else TP=0;
         if (stoploss!=0)   SL = NormalizeDouble(Price - takeprofit*Point,Digits);  else SL=0;              
         OPENORDER (1,Price,SL,TP,i,LOT);
      }
      if (SELL)
      {  
         if (FirstBuyStop==0) Price = NormalizeDouble(Ask+delta*i*Point,Digits);
         else Price = NormalizeDouble(FirstBuyStop+delta*(i-1)*Point,Digits);
         if (takeprofit!=0) TP  = NormalizeDouble(Price - (SPREAD+stoploss)*Point,Digits); else TP=0;
         if (stoploss!=0)   SL  = NormalizeDouble(Price + takeprofit*Point,Digits); else SL=0;     
         OPENORDER (-1,Price,SL,TP,i,LOT);
      }
      LOT=LOT*K_Lot;
   }
return(0);
}
//--------------------------------------------------------------------
void OPENORDER(int ord,double Price,double SL,double TP,int i,double LOT)
{
   int error,err;
   while (true)
   {  error=true;
      if (ord== 1) error=OrderSend(Symbol(),OP_BUYLIMIT, LOT,Price,3,SL,TP,StringConcatenate(i,"   http://cmillion.narod.ru"),Magic,0,Blue);
      if (ord==-1) error=OrderSend(Symbol(),OP_SELLLIMIT,LOT,Price,3,SL,TP,StringConcatenate(i,"   http://cmillion.narod.ru"),Magic,0,Red);
      if (error==-1)
      {  
         Print("Error  " ,GetLastError()," ",Symbol());
         err++;Sleep(2000);RefreshRates();
      }
      if (error!=-1 || err >10) return;
   }
return;
}                  
//--------------------------------------------------------------------

Recommend