Учимся логике - страница 9

 

Ага :) это я немножко утрировал.

Вот еще один примерчег :) правда на MQL он вряд ли заработает как надо, на С++ заработает:

for (int i = OrdersTotal(); i--;)
{
   if (!OrderSelect(i - 1, SELECT_BY_POS)) continue;

   //...
}
 
Mathemat:

Все-таки на продажу?

Так-так. Внутри-то у нас логический операнд, а я его неправильно прочитал. Выходит, что это истина, когда

- так, что ли?

Ну тогда бред в квадрате. Код нечитаемый :)


Код вполне читаемый. Зря так.
 

Чтобы не расшифровывать, что имеется в виду (любой ордер на продажу), было бы разумнее расписать идентификаторы типов ордеров. Будет подлиньше, но намного понятнее.

С точки зрения лаконичности - да, это решение, но не слишком надежное. Компания-разработчик не гарантирует, что числовые значения этих констант никогда не изменятся.

 
Mathemat:

Чтобы не расшифровывать, что имеется в виду (любой ордер на продажу), было бы разумнее расписать идентификаторы типов ордеров. Будет подлиньше, но намного понятнее.

С точки зрения лаконичности - да, это решение, но не слишком надежное. Компания-раззработчик не гарантирует, что числовые значения этих констант никогда не изменятся.


В этом то вся и проблема. Можно сделать изящный код, который вдруг перестанет работать.
 
TheXpert:

Вот еще один примерчег :) правда на MQL он вряд ли заработает как надо, на С++ заработает:

for (int i = OrdersTotal(); i--;)
{
   if (!OrderSelect(i - 1, SELECT_BY_POS)) continue;

   //...
}
Не проверял, но сам так не стал бы писать.
 
TheXpert:

Ага :) это я немножко утрировал.

Вот еще один примерчег :) правда на MQL он вряд ли заработает как надо, на С++ заработает:


Это уже не оптимизация, а извращ... пардон изощрение...

Вспомнилась милая задачка, как обменять значения между двумя численными переменными, не используя третьего. ))

 
Vinin:
Можно сделать изящный код, который вдруг перестанет работать.

В этом вся соль -- этот код не изящный. Вот такой будет изящней:

bool IsActiveType(int orderType)
{
   return (type == OP_BUY || type == OP_SELL);
}

bool IsAnySellType(int orderType)
{
   return (type == OP_SELL || type == OP_SELLLIMIT || type == OP_SELLSTOP);
}

{
   if (IsActiveType(OrderType()))
   {
      //...
   }

   if (IsAnySellType(OrderType()))
   {
      //...
   }
}

denis_orlov:

Это уже не оптимизация, а извращ... пардон изощрение...

Вспомнилась милая задачка, как обменять значения между двумя численными переменными, не используя третьего. ))

Ага :) вроде того.
 
TheXpert:

В этом вся соль -- этот код не изящный. Вот такой будет изящней:

Ага, вот-вот. Функции с телом в одну строку никто не отменял, они реально очень полезны.
 
TheXpert:

В этом вся соль -- этот код не изящный. Вот такой будет изящней:


Мне понравилось. Красиво смотрится
 
TheXpert:

В этом вся соль -- этот код не изящный. Вот такой будет изящней:

   


Только параметры функций убери, будет изящней. Если параметр не задан, то определять из OrderType() ордера, если задан, то по параметру.

Скушно мне тут с вами :))) 

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