//+------------------------------------------------------------------+
//|                                                           SP.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
//---- input parameters
extern int TakeProfit = 50;
extern int StopLoss = 30;
extern int RsiLen = 4;
extern int KLen = 8;
extern int Momlength = 10;
extern int Lots = 1;
extern int rsi_oversold = 39;
extern int stoc_oversold = 29;
extern int rsi_overbought = 60;
extern int stoc_overbought = 70;
extern int Mom_Sell = -2;
extern int Mom_Buy = 2;
//----
int expertBars;
double RSIlevel;
double Stoclevel;
double MomLevel;
double DLen = 3;
//+------------------------------------------------------------------+
//| возвращает true если появлися новый бар, иначе false             |
//+------------------------------------------------------------------+
bool isNewBar()
  {
//----
   bool res = false; 
   if(expertBars != Bars) 
     {
       expertBars = Bars;
       res = true;
     } 
//----
   return(res);
  }
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   double price;
   double stop;
   double profit;
//----
   if((isNewBar()) && (OrdersTotal() == 0)&& (AccountBalance() > 5000))
     {
       RSIlevel = iRSI(NULL, 0, RsiLen, PRICE_CLOSE, 0);
       Stoclevel = iStochastic(NULL, 0, KLen, DLen, 3, MODE_SMA, 0, MODE_MAIN, 0);
       MomLevel = 100 - iMomentum(NULL, 0, Momlength, PRICE_CLOSE, 0);
       if((RSIlevel < rsi_oversold) && (Stoclevel < stoc_oversold) && (MomLevel > Mom_Sell))
         {
           price = Ask;
           stop = NormalizeDouble(price - StopLoss*Point, Digits);
           profit = NormalizeDouble(price + TakeProfit*Point, Digits);
           OrderSend(Symbol(), OP_BUY, Lots, price, 3, stop, profit, NULL, 0, 0, Green);        
         }
       if((RSIlevel > rsi_overbought) && (Stoclevel > stoc_overbought) && (MomLevel < Mom_Buy))
         {
           price = Bid;
           stop = NormalizeDouble(price + StopLoss*Point, Digits);
           profit = NormalizeDouble(price - TakeProfit*Point, Digits);
           OrderSend(Symbol(), OP_SELL, Lots, price, 3, stop, profit, NULL, 0, 0, Green); 
         }      
     } 
//----
   return(0);
  }
//+------------------------------------------------------------------+