Нужна помощь в написании советника.

 
Здравствуйте!
Мужики, я тут пытаюсь написать первый советник, чтобы хотя бы чтото работало. Разобрался в куче примеров - ну вообще все понятно. Написал сам - не получается. Придумал алгоритм, все написал - он даже ордера не выставляет, упростил до неприличия, все равно не получается. В тестере стоят такие параметры: USDCHF, M15, по ценам открытия, дата 2006-07-01, 2007-01-01.
Вот код:
 
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
 
#define MAGIC     345987
 
 
 
extern int StopLoss = 30;
extern int TakeProfit = 60;
extern int Lots = 1;
extern int gap = 10;
 
 
 
int i = 0;
int countL = 4;
double levels[4] = {1.20, 1.21, 1.22, 1.23}; //Работать должно для шв. франка, потому что уровни такие, сами понимаете
 
double upPrice, downPrice;
bool check = false;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
 
 
 
void checkAsk() {
   for(i = 0; i < countL; i++) {
      if (Ask > levels[i]) {
         downPrice = levels[i]; 
         if ( i != countL-1) upPrice = levels[i+1];
      }
   }
   return;
} 
     
int start()
  {
//----   
   int ticket;
 
   //------------------
   
   if (check == false) {checkAsk(); check = true;}
   
   if (Ask > upPrice + gap) {
      ticket = OrderSend(NULL, OP_BUY, Lots, Ask, 3, Ask - StopLoss*Point, Ask + TakeProfit*Point, "", MAGIC, 0, Green);
      if (ticket < 0 ) Print("Error!!!");
      check = false;
   }
   if (Bid < downPrice - gap) {
      ticket = OrderSend(NULL, OP_SELL, Lots, Bid, 3, Bid + StopLoss*Point,  Bid - TakeProfit*Point, "", MAGIC, 0, Red);
      if (ticket < 0 ) Print("Error!!!");
      check = false;
   } 
//----
   return(0);
  }

Буду благодарен за помощь.


 
Возможно сработает когда курс будет 11.2 или -8.8

Ask > upPrice + Point*gap
 
trajor:
 
extern int gap = 10;
 
double levels[4] = {1.20, 1.21, 1.22, 1.23}; //Работать должно для шв. франка, потому что уровни такие, сами понимаете
 
double upPrice, downPrice;
bool check = false;
 
 
 
void checkAsk() {
   for(i = 0; i < countL; i++) {
      if (Ask > levels[i]) {
         downPrice = levels[i]; 
         if ( i != countL-1) upPrice = levels[i+1];
      }
   }
   return;
} 
     
int start()
  {
//----   
   int ticket;
 
   //------------------
   
   if (check == false) {checkAsk(); check = true;}
   
   if (Ask > upPrice + gap) // 1.2481 > 1.2 + 10 always false
   if (Bid < downPrice - gap) // 1.2481 < 1.2 - 10 always false




 
Спасибо.