Простейший советник.

 
Только начал изучать MQL4 и решил написать самый простой код, но даже тут ничего не работает, ни в тестере ни на текущем демо счете сделки не совершаются (код вроде проще некуда). Подскажите что тут не так пожалуйста.
extern double Lots               = 0.1;
extern double TakeProfit         = 10;
extern double StopLoss           = 10;
extern int FastEMA=5;
extern int SlowEMA=7;
extern int SignalSMA=3; 
double     ind_buffer1;
double     ind_buffer2;
 
//expert initialization function                                   
int init()
  {//----
   
//----
   return(0);
  }//expert deinitialization function                                 
int deinit()
  {//----
   
//----
   return(0);
  }//expert start function                                            
int start()
  {
 
   double MacdCurrent, MacdPrevious;
   double SignalCurrent;
   int total;
   
   MacdCurrent=iMACD(NULL,0,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_MAIN,0);  
   MacdPrevious=iMACD(NULL,0,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_MAIN,1);    
   SignalCurrent=iMACD(NULL,0,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_SIGNAL,0);   
 
   total=OrdersTotal();
   if(total==0) 
       {
                                                                                          
          if(MacdCurrent>SignalCurrent)  
             {                                                                                               
              OrderSend(Symbol(),OP_BUY,1,Ask,3,StopLoss,TakeProfit,"My order #"+OP_BUY,16384,0,Green);
             }                                                                                          
      } 
                                                                                                
//----
   return(0);
  }//+------------------------------------------------------------------+
PS буду очень признателен если у кого-нить есть простой советник с БААААЛЬШИМИ пояснениями. шлите на мыло: denisov-oleg@narod.ru
 
StopLoss и TakeProfit - это абсолютные курсы.
Поэтому надо сделать так:
double 
   SL,                                                  // StopLoss   ордера (относит.пункт.)
   TP;                                                  // TakeProfit ордера (относит.пункт.)

int init()
   {
   SL=StopLoss*Point;             			// StopLoss   ордера (относит.пункт.)
   TP=TakeProfit*Point;           			// TakeProfit ордера (относит.пункт.)
   return(0);
   }
А оператор открытия переписать так:
 OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL,Ask+TP,"My order #"+OP_BUY,16384,0,Green);
Так должно работать.
Причина обращения: