extern double Lots            = 0.01;
extern int    TakeProfit      = 20;
extern int    StopLoss        = 10;
extern int    Slippage        = 5;
extern int    Magic           = 1234;

extern string comment         = "Paradis";
extern string Indi            = "TMA with Distances";
extern string TimeFrame       = "current time frame";
extern int    HalfLength      = 56;
extern int    Price           = PRICE_CLOSE;
extern double ATRMultiplier   = 2.0;
extern int    ATRPeriod       = 100;
extern bool   Interpolate     = true;

double PriceHigh, PriceLow, SL, TP;
int    ticket;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
{
   if (Digits == 3 || Digits == 5)
   {
    TakeProfit *= 10;
    StopLoss   *= 10;
    Slippage   *= 10;
   }
   return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
{

   return(0);
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
   PriceHigh = iCustom(Symbol(), 0, "TMA with Distances", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);
   PriceLow  = iCustom(Symbol(), 0, "TMA with Distances", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);
   
   if (Bid >= PriceHigh && CountSell() == 0)
    {
        SL = NormalizeDouble(Bid + StopLoss * Point, Digits);
        TP = NormalizeDouble(Bid - TakeProfit * Point, Digits);
       
       ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, comment, Magic, 0, Red);
       if (ticket > 0)
       {
          if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) == true)
              OrderModify(ticket, OrderOpenPrice(), SL, TP, 0);   
       }
    }
   
       if (Ask <= PriceLow && CountBuy() == 0)
    {
        SL = NormalizeDouble(Ask - StopLoss * Point, Digits);
        TP = NormalizeDouble(Ask + TakeProfit * Point, Digits);
       
       ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, comment, Magic, 0, Blue);
       if (ticket > 0)
       {
          if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) == true)
              OrderModify(ticket, OrderOpenPrice(), SL, TP, 0);   
       }
    }
   return(0);
}
//+------------------------------------------------------------------+
int CountSell()
{
  int count = 0;
  for (int trade = OrdersTotal() -1; trade >= 0; trade--)
  {
    OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
    if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
    {
     if (OrderType() == OP_SELL)
         count ++;
    }
  }
 
  return(count);
}
//+------------------------------------------------------------------+
int CountBuy()
{
  int count = 0;

  for (int trade = OrdersTotal() -1; trade >= 0; trade--)
  {
    OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
    if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
    {
     if (OrderType() == OP_BUY)
         count ++;
    }
  }
 
  return(count);
}
//+------------------------------------------------------------------+