Лююдии помогите!!

 
Пытаюсь ДОБИТЬ советника. По какойто необьяснимой причине сигнал на покупку/продажу теряется во внешних функциях открытия ордеров. вот один из них
void Sell()
{
double lots = lot;
if(auto == 1)
lots = getLots();
  Alert ("Попытка продажи Sell");
          
          for(int a=OrdersTotal()-1;a>=0;a--)
           {  
         OrderSelect(a,SELECT_BY_POS,MODE_TRADES);
         if(OrderType()< 1 && OrderMagicNumber()==magics1)
                 {
               RefreshRates();
             OrderSend(Symbol(),OP_SELL,lots,Bid,Slippag,Ask+ SL * Point,0,Symbol(),magics1,0,Red);
             _GetLastError = GetLastError();
            Alert( "Ошибка OrderSend № ", _GetLastError );
            return;
                 } 
           }       
}

Так вот Алерт "Попытка продажи селл" высвечивается. И все!!! Такое ощущение что сигнал теряется в цикле for. Причем до второго Алерта не доходит. Я было подумал что зациклил по незнанию for, но расчетная часть программы выполняется ( все Алерты оттуда проходят). Обьясните пожалуйста, где косяк а?

 
OrderType()< 1
Это зачем ?
 
Вы весь код не показываете, а так толком не видно. Причин может быть много, например, у Вас нет ни одного открытого ордера с этим Мagic, тогда не выполнится ни один Ваш sell - ( if( ... OrderMagicNumber()==MAGIC) ... ). Потом OrderType()< 1 - почему "меньше", ведь все типы операций от 0 до 5 ??
 
MaStak >>:

Упс!)

 
mamma писал(а) >>

Упс!)

mamma писал(а) >>
Вы весь код не показываете, а так толком не видно. Причин может быть много, например, у Вас нет ни одного открытого ордера с этим Мagic, тогда не выполнится ни один Ваш sell - ( if( ... OrderMagicNumber()==MAGIC) ... ). Потом OrderType()< 1 - почему "меньше", ведь все типы операций от 0 до 5 ??

Все понял. Заработало. Просто не переделал код. Ранее он был на закрытие.

OrderType()< 1
Это для ордеров OP_ BAY = 0. Тут я пытался определить наличие открытых ордеров. Да только чево-то там в мозгах наперекосяк встало ;-)