баг? советник только покупает

 

Написал советника, довольно простого, т.к. пока тренируюсь. Почему-то даже в местах, когда должен он продавать, он все равно покупает. Никак не пойму в чем загвоздка. Вот исходник:

int init()
  {
//----
   
//----
   return(0);
  }
int deinit()
  {
//----
   
//----
   return(0);
  }
 
int trig;
double del;
double posit;
int start()
  {
   
   if(OrderSelect(1, SELECT_BY_POS)==false) {trig = 0;} //Есть ли открытые ордера? Если нет, то даем добро на совершение сделок
 
   
   if (trig == 0) {
      del = MathAbs(Open[0]-Close[0])/(High[0]-Low[0]); //отношение  тела свечи ко всей ее длине
         if (del < 0.4 && ((High[0]-Close[0])/(High[0]-Low[0])< 0.1 || High[0] == Close[0]) && Low[0]>Low[1]>Low[2]>Low[3]) {OrderSend(Symbol(), OP_SELL, 0.1, Bid, 0.0005, Ask + 30*Point, Ask - 100*Point); trig = 1;} //тело близко к хаю
         if (del < 0.4 && ((Close[0]-Low[0])/(High[0]-Low[0])< 0.1 || Low[0] == Close[0]) && High[0]<High[1]<High[2]<High[3]) {OrderSend(Symbol(), OP_BUY, 0.1, Ask, 0.0005, Bid - 30*Point, Bid + 100*Point); trig = 1;} //тело близко к лоу
   }
   
    
 
   return(0);
  }
 
Выводите значения Print'ом в момент принятия решения(Buy/Sell) всё сразу поймёте...
 
StatBars писал (а) >>
Выводите значения Print'ом в момент принятия решения(Buy/Sell) всё сразу поймёте...

И в самом деле... почему-то оказалось, что условия в бае невыполнимы... странно, учитывая симметричные условия в селле... спасибо за помощь

 
soir писал (а) >>

Написал советника, довольно простого, т.к. пока тренируюсь. Почему-то даже в местах, когда должен он продавать, он все равно покупает. Никак не пойму в чем загвоздка. Вот исходник:

Очередь ордеров начинается с 0, т.е. надо исправить строку
OrderSelect(1, SELECT_BY_POS)