нужна помощь в написании кода советника - страница 2

 
zhuchek писал(а) >>
Да какие ж тут обиды, Вы же мне помогаете!!! Я действительно мало знаком с программированием,... вот собрал в кучу весь код, но причину того почему ордера удаляються сразу же, а не по условию не могу понять. Буду признателен если вразумите неразумного)
extern int Quant_Bars=60;
int  PrevVBarTime=0;
int Magic=1010101;

int start()
{
  int i,ret=0, BarIndex=-1; 
  string Symb=Symbol();
  double Max_volume=0; 
  double Price_O;
  double Price_H;
  double Price_L;

  for(i=9;i<Quant_Bars;i++) 
  { 
    if(Volume[i]>Max_volume) // если больше предыдущего
    {
      Max_volume=Volume[i]; 
      BarIndex=i;
    }
  }
  if (PrevVBarTime==Time[BarIndex]) return;
  PrevVBarTime=Time[BarIndex];
  Price_O=Open[BarIndex]; 
  Price_H=High[BarIndex];
  Price_L=Low[BarIndex];



  for(i=OrdersTotal()-1; i>=0; i--) // Цикл перебора ордер
  { 
   if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
   if( OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
   if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP)
   {
      OrderDelete(OrderTicket());
   }
  }
  

  ret=OrderSend(Symbol(),OP_BUYSTOP,0.1,Price_H,3,Price_H-100*Point,Price_H+200*Point,0,Magic,0,CLR_NONE);
  if (ret<0) Alert (GetLastError()); // Сообщение об ошибке

  ret=OrderSend(Symbol(),OP_SELLSTOP,0.1,Price_L,3,Price_L+100*Point,Price_L-200*Point,0,Magic,0,CLR_NONE);
  if (ret<0) Alert (GetLastError());

  return;
}
Еще раз поправил, а то у Вас там с открытием ордеров тоже косяки были. Но все равно еще нужны проверки на на допустимость уровней выставления отложек. Да и не уверен, что именно такой алгоритм Вам нужен...
 
Figar0 писал(а) >>
Еще раз поправил, а то у Вас там с открытием ордеров тоже косяки были. Но все равно еще нужны проверки на на допустимость уровней выставления отложек. Да и не уверен, что именно такой алгоритм Вам нужен...

Спасибо большое, вроде бы удаляет и открывает так как нужно...

Причина обращения: