Какая конструкция правильная? - страница 2

 
PapaYozh:


не закроет.

если не верите, проведите эксперемент на демо.

косяк может быть в не нормализованной цене, все остальное верно в первом варианте.
 
Techno:
косяк может быть в не нормализованной цене, все остальное верно в первом варианте.


как только произойдет закрытие нулевого ордера, поменяется вся нумерация, и Вы пропустите следующий ордер.

В крайнем случае, можно так:

  for (int i=0; i < Total; i++)
  {                                                                                          
    if( OrderSelect( 0, SELECT_BY_POS, MODE_TRADES ) )
 
PapaYozh:


В крайнем случае, можно так:


Но лучше так:

  for ( ; OrdersTotal()>0; )
  {                                                                                          
    if( OrderSelect( 0, SELECT_BY_POS, MODE_TRADES ) )
 
Techno:
косяк может быть в не нормализованной цене, все остальное верно в первом варианте.

реквот на попытке - не закрылись.
 
реквот, пропущенный ордерок, ну это не такие большие ошибки, главное нет мертвой зоны, этот 1 незакрытый ордер закроется на втором тике.
 
Techno:
Первая в принципе правильная, закроет все ордера, только надо цены закрытия нормализовать. Вторая фтопку, не все ордера закроет(цикл не верно составлеен)


  А при чём здесь нормализация, ведь здесь тупо отдаётся команда закрыть ордер не взирая на цены?
 
valenok2003:


А при чём здесь нормализация, ведь здесь тупо отдаётся команда закрыть ордер?
дак вот надо нормализовывать!!! Вот в код базу кидаешь творения, а таких простых истин не знаешь
 
Ну извини. Пример приведи пожалуйста.
 
PapaYozh, оба эти варианта ну только для закрытия, а если модификация? Пусть уж лучше 2 тика требуется для полной обработки, чем 2 разных цикла для закрытия и модификации
 
valenok2003:
Ну извини. Пример приведи пожалуйста.
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5);
Кстати, а если с конца перебирать, косяк будет? По идее не должен