//+------------------------------------------------------------------+
//|                                                          for.mq4 |
//|                                                        Roma Cast |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Roma Cast"
#property link      ""
int ticket;
int Magic = 123;
int TakeProfit = 30;


double TP;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
if (Digits == 5)

TakeProfit *= 10;

   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {

  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
if (Count() == 0)
   {
int MA = iMA(Symbol(),0,200,0,MODE_EMA,PRICE_CLOSE,0);
if (Ask>MA)
   {
ticket=OrderSend (Symbol(),OP_BUY,0.1,Ask,0,0,0,0,Magic,0,Blue);
  if (ticket>0)
   {
   TP = NormalizeDouble(Ask+TakeProfit*Point,Digits);
   OrderModify(ticket,OrderOpenPrice(),0,TP,0,Blue);
   }
   }
   }
else if (Bid<MA)
   {
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,0,0,0,0,Magic,0,Red);
   if (ticket>0)
   {
   TP = NormalizeDouble(Bid-TakeProfit*Point,Digits);
   OrderModify(ticket,OrderOpenPrice(),0,TP,0,Red);
   }
   }
else
   {
int Type = TypeOrder();   
if (Ask>MA && Type == OP_SELL)
   {
ticket=OrderSend (Symbol(),OP_BUY,0.1,Ask,0,0,0,0,Magic,0,Blue);
  if (ticket>0)
   {
   TP = NormalizeDouble(Ask+TakeProfit*Point,Digits);
   OrderModify(ticket,OrderOpenPrice(),0,TP,0,Blue);
   }
   }      
   }
if (Bid<MA && Type == OP_BUY)
   {
ticket=OrderSend (Symbol(),OP_SELL,0.1,Bid,0,0,0,0,Magic,0,Red);
  if (ticket>0)
   {
   TP = NormalizeDouble(Bid-TakeProfit*Point,Digits);
   OrderModify(ticket,OrderOpenPrice(),0,TP,0,Blue);
   }
   }      
   
  return(0);
}
//+------------------------------------------------------------------+

int Count()
{
int count;
for (int i=0; i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
count++;

}
return(count);
}

//+------------------------------------------------------------------+
int TypeOrder()
{
for (int i=0;i<OrdersHistoryTotal();i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
   {
   if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
   return (OrderType()); 
   }
}
return(-1);
}