Помогите найти ошибку в функции - страница 2

 

может в таком виде лучше (или типа этого) ?

double LotMartingal (int OrType){
   double lot;

   if (OrType < 0 || OrType > 5 ){
     Print ("LotMartingal (int OrType) Ошибка типа ордера");
     return (-1);
   }

   for (int cik = 0; cik < OrdersTotal(); cik++) {
      if (OrderSelect(cik, SELECT_BY_POS, MODE_TRADES)) {          
         if (OrderSymbol()==Symbol() && OrderType()==OrType && 
             OrderMagicNumber()==MN && OrderCloseTime()==0) {            
            if (lot > OrderLots()) lot = OrderLots();
         }            
      }
   }
   if (lot == 0) lot = Lot;
   else if (lot > 0) lot *= Mnozhitel; 
   return(lot);  
}
 
keekkenen писал(а) >>

может в таком виде лучше (или типа этого) ?

да я так с самого начала писал, ты добавил OrderCloseTime( ) == 0 но написав MODE_TRADES мы это уже имели ввиду что используются открытые и отложенные ..., После сам понимаешь "работа над ошибками" вот здесь я и добавил то что выдает мне 0 ошибку, как бы я понимаю что написано правильно но результат странный... а может я сам както затупил чтолий и не понимаю что нехватка открытых ордеров при переборе это не ошибка..хотя я думал наоборот...

при написании я и селект выносил из фо и еще всякие варианты...но результат ...

а вообще я написал Мартингала, но решил улутшить работу с лотами ну и др. но наткнулся на какието такие вопросы вот и хочется ясности....какбы функция работает и нормально работае...

 
keekkenen >>:

может в таком виде лучше (или типа этого) ?

double LotMartingal (int OrType){
   double lot = 0;
   //...
}
 
Кстати, это вопрос к разработчикам. Так и есть, если задашь неправильную позицию ордера в таблице открытых ордеров, терминал не сможет (естественно) выбрать ордер, но дает ошибку 0, т.е. "нет ошибки". Непорядочек.
 
Roger писал(а) >>
Кстати, это вопрос к разработчикам. Так и есть, если задашь неправильную позицию ордера в таблице открытых ордеров, терминал не сможет (естественно) выбрать ордер, но дает ошибку 0, т.е. "нет ошибки". Непорядочек.

Тогда тему можно считать закрытой..)) МОЮ ошибку нашли..)) Всем принявшим участие спасибо и удачи!!!

 
Roger >>:
Кстати, это вопрос к разработчикам. Так и есть, если задашь неправильную позицию ордера в таблице открытых ордеров, терминал не сможет (естественно) выбрать ордер, но дает ошибку 0, т.е. "нет ошибки". Непорядочек.

Так потому что нет ошибки :)