//+------------------------------------------------------------------+
extern double    Lots         =  1;
extern int       StopLoss     = 30;
extern int       TakeProfit   =  7;
extern int       TrailingStop =  5;
int      LastTotal;
datetime LastTime;
//+------------------------------------------------------------------+
int init()   { return(0); }
int deinit() { return(0); }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
  int cnt;
  double pos1pre,pos2cur,SLoss;
  pos1pre = iBullsPower(NULL,0,13,PRICE_WEIGHTED,1);
  pos2cur = iBullsPower(NULL,0,13,PRICE_WEIGHTED,0);
  if(pos1pre>pos2cur) //çàêðûâàåì äëèííóþ ïîçèöèþ 
  {
    for(cnt=0; cnt<OrdersTotal(); cnt++)
    {
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if(OrderType()==OP_BUY) // îòêðûòà äëèííàÿ ïîçèöèÿ
  		{
      	if(Bid>(OrderOpenPrice())+TrailingStop*Point)
        {
          OrderClose(OrderTicket(),OrderLots(),Bid,3); // çàêðûâàåì ïîçèöèþ
          return(0); // âûõîäèì
    		}
  		}
    }
  }
  if(pos2cur<0) //çàêðûâàåì êîðîòêóþ ïîçèöèþ
  {
    for(cnt=0; cnt<OrdersTotal(); cnt++)
    {
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if(Ask<OrderOpenPrice()-TrailingStop*Point)
      {
        if(OrderType()==OP_SELL) // îòêðûòà êîðîòêàÿ  ïîçèöèÿ
        {
          OrderClose(OrderTicket(),OrderLots(),Ask,3); // çàêðûâàåì ïîçèöèþ
          return(0); // âûõîäèì
       	}    
      } 
   	}
  }
  if(OrdersTotal()<LastTotal) LastTime=Time[0]+Period()*60;
  LastTotal=OrdersTotal();
  if(CurTime()<LastTime) return(0);
  SLoss=0;
  if(OrdersTotal()<1) // íåò íè îäíîãî îòêðûòîãî îðäåðà ïðîâåðÿåì íà âîçìîæíîñòü âñòàòü â êîðîòêóþ ïîçèöèþ (SELL)
  {
    if(pos1pre>pos2cur && pos2cur>0)
    {
      if(StopLoss!=0) SLoss=Ask+StopLoss*Point;
      OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SLoss,Bid-TakeProfit*Point,0,0,CLR_NONE); // Îòêðûâàåì êîðîòêóþ 
      return(0); // âûõîäèì
    } 
    if(pos2cur<0)
    {
      if(StopLoss!=0) SLoss=Bid-StopLoss*Point;
      OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SLoss,Ask+TakeProfit*Point,0,0,CLR_NONE); // Îòêðûâàåì êîðîòêóþ 
      return(0); // âûõîäèì
    } 
  }
  return(0);
}
//+------------------------------------------------------------------+
            
Comments