//--------------------------------------------------------------------
// Test2.mq4
//--------------------------------------------------------------------
// Global Setting
//--------------------------------------------------------------------
extern int MagicNumber = 567;
extern int Distance = 20;
extern double MinLot = 0.01;
extern double Multiplier = 2;
extern double TargetProfit= 500;
bool result;
double profit;



//-------------------------------------------------------------------
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
 
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
 
}
//+------------------------------------------------------------------+
//| Trades Opening | -- Checked ( Working )
//+------------------------------------------------------------------+
void OnTick()
       {   
        if (OrdersTotal() == 0)
            {
            OrderSend(Symbol(), OP_BUY, MinLot, Ask, 3, 0, 0, MagicNumber, 0, Green); 
            }
         else
         if (OrdersTotal() > 0  )
            {
            if (OrderSelect (OrdersTotal ()-1,SELECT_BY_POS, MODE_TRADES)==TRUE)
               if( Ask > OrderOpenPrice() + Distance*Point ) 
                  OrderSend(Symbol(), OP_BUY, OrderLots()+Multiplier, Ask, 3, 0, 0, MagicNumber, 0, Green);
               else
               if ( Bid <  OrderOpenPrice() - Distance*Point ) 
                  OrderSend(Symbol(), OP_SELL, OrderLots()+Multiplier, Bid, 3, 0, 0, MagicNumber, 0, Red);
            }
        }       
//+------------------------------------------------------------------+
//| Profit Checking | ?
//+------------------------------------------------------------------+
double CheckTotalProfits( )
   {
    profit = 0.0;

   for( int i = OrdersTotal()-1; i >= 0; i-- )
        if ( OrderSelect( i, SELECT_BY_POS,MODE_TRADES )==TRUE && OrderType() < 2 && OrderSymbol() == _Symbol && OrderMagicNumber() == MagicNumber )
            profit += OrderProfit() + OrderSwap() + OrderCommission();
 
   return( profit );
}
//+------------------------------------------------------------------+
//| Trades Closing | ?
//+------------------------------------------------------------------+
void CloseAllTrades()
      {
       for(int i=(OrdersTotal()-1);i>=0;i--) 
       {  
          if( ( profit >= TargetProfit )||(OrderSelect(i,SELECT_BY_POS, MODE_TRADES))==TRUE)
          {
            if(OrderSymbol()==Symbol() || OrderMagicNumber()==MagicNumber)
            {
             if (OrderType()==OP_SELL && OrderMagicNumber()== MagicNumber )
                 result=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,CLR_NONE);
             if (OrderType()==OP_BUY && OrderMagicNumber()== MagicNumber)
                 result=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol() ,MODE_BID),3,CLR_NONE);
            }
          }    
        }
      }
//+------------------------------------------------------------------+
//| Ending | 
//+------------------------------------------------------------------+

    

 


