//+------------------------------------------------------------------+
//|                                                  MACD Sample.mq4 |
//|                      Copyright © 2013, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
 
extern int TakeProfit = 500;
extern double Lots = 0.01;
extern int StopLost = 300;
extern int stoch = 11;
extern int bar1 = 160;
extern int bar2 = 80;
extern int Magic = 123;
//extern int MaxRisk=2;

int init()
  {
   return(0);
  }

int deinit()
  {
   return(0);
  }

int start()
  {

  double Free =AccountFreeMargin();
double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
//double Lot =Free*MaxRisk/100/One_Lot;  
  
if(Volume[0]>1) return;
   double stoch_1=iStochastic(NULL,0,stoch,3,3,MODE_SMA,0,MODE_MAIN,1);
   double stoch_2=iStochastic(NULL,0,stoch,3,3,MODE_SMA,0,MODE_MAIN,2);
   
   int ticket=0;

    if(OrdersTotal()<1)
      {

          {
            if(iLow(NULL,PERIOD_H1,3) > iLow(NULL,PERIOD_H1,2) && 
            
               iLow(NULL,PERIOD_H1,2) < iLow(NULL,PERIOD_H1,1) &&
            
            stoch_2<stoch_1 && 
            
            ((Close[1]-Open[1]) > bar1*Point) && ((Open[2]-Close[2]) < bar2*Point))
//сигнал на покупку
              {
                RefreshRates();
//                ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,10,Ask-StopLost*Point /*(iLow(NULL,PERIOD_H1,2))*/,Ask+TakeProfit*Point,"buy_order2",2,0,Blue);
               ticket = NewOrder(OP_BUY,Lots,0,Close[0]+TakeProfit*Point,Close[0]-StopLost*Point,Magic);
              }
            if(iHigh(NULL,PERIOD_H1,2) > iHigh(NULL,PERIOD_H1,3) &&
            iHigh(NULL,PERIOD_H1,2)> iHigh(NULL,PERIOD_H1,1) && 
            stoch_2>stoch_1 &&
            ((Close[1]-Open[1]) > bar1*Point) && ((Open[2]-Close[2]) < bar2*Point))
//сигнал на продажу
              {
                RefreshRates();
//                ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,10,Bid+StopLost*Point /*(iHigh(NULL,PERIOD_H1,2))*/,Bid-TakeProfit*Point,"sell_order2",2,0,Red);
                  ticket=NewOrder(OP_SELL,Lots,0,Close[0]-TakeProfit*Point,Close[0]+StopLost*Point,Magic);
              }
          }
      }}
   /* if (Hour_curr>=16)//безусловное закрытие всех позиций
      {
        while(OrdersTotal()>0)
          {
            CloseDirect(0,"Принудительное закрытие сделки в 16.00, ticket=");
          }
      }*/
    return(0);
    //=================================================
 double NewOrder(int Cmd,double Lot,double PR=0,double TP=0,double SL=0,int MagOrd=0)
 {while(!IsTradeAllowed()) Sleep(100);
 if(Cmd==OP_BUY) PR=NormalizeDouble(Ask,Digits);
 if(Cmd==OP_SELL) PR=NormalizeDouble(Bid,Digits);
 int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,"",MagOrd,0,CLR_NONE);
 if(tic<0) Print("Ошибка открытия ордера: ",PR," ",SL," ",TP," ",GetLastError());
 return(PR);}