Подскажите, что за конструкция такая?

 

Добрый день.

Подскажите, что за конструкция такая?

В операторе if, выделил жирным.

И где можно почитать про это.

//+------------------------------------------------------------------+ 
//| Функция выводит на печать разрешенные для символа типы ордеров   | 
//+------------------------------------------------------------------+ 
void Check_SYMBOL_ORDER_MODE(string symbol) 
  { 
//--- получим значение свойства, описывающего разрешенные типы ордеров 
   int symbol_order_mode=(int)SymbolInfoInteger(symbol,SYMBOL_ORDER_MODE); 
//--- проверка на рыночные ордера (Market Execution) 
   if((SYMBOL_ORDER_MARKET&symbol_order_mode)==SYMBOL_ORDER_MARKET) 
      Print(symbol+": Рыночные ордера разрешены (Buy и Sell)"); 
//--- проверка на ордера типа Limit 
   if((SYMBOL_ORDER_LIMIT&symbol_order_mode)==SYMBOL_ORDER_LIMIT) 
      Print(symbol+": Ордера Buy Limit и Sell Limit разрешены"); 
//--- проверка на ордера типа Stop 
   if((SYMBOL_ORDER_STOP&symbol_order_mode)==SYMBOL_ORDER_STOP) 
      Print(symbol+": Ордера Buy Stop и Sell Stop разрешены"); 
//--- проверка на ордера типа Stop Limit 
   if((SYMBOL_ORDER_STOP_LIMIT&symbol_order_mode)==SYMBOL_ORDER_STOP_LIMIT) 
      Print(symbol+": Ордера Buy Stop Limit и Sell Stop Limit разрешены"); 
//--- проверка на возможность установки ордеров Stop Loss 
   if((SYMBOL_ORDER_SL&symbol_order_mode)==SYMBOL_ORDER_SL) 
      Print(symbol+": Ордера Stop Loss разрешены"); 
//--- проверка на возможность установки ордеров Take Profit 
   if((SYMBOL_ORDER_TP&symbol_order_mode)==SYMBOL_ORDER_TP) 
      Print(symbol+": Ордера Take Profit разрешены"); 
//--- 
  }
 
Nexxtor:

Добрый день.

Подскажите, что за конструкция такая?

В операторе if, выделил жирным.

И где можно почитать про это.

Там битовая операция И, проверяет флаги

 
Nexxtor:

Добрый день.

Подскажите, что за конструкция такая?

В операторе if, выделил жирным.

И где можно почитать про это.

По-хорошему это должно выглядеть так:

if((SYMBOL_ORDER_MARKET & symbol_order_mode) == SYMBOL_ORDER_MARKET) 
      Print(symbol+": Рыночные ордера разрешены (Buy и Sell)"); 

Знак & - это побитовая операция И. Смысл такого выражения в том, чтобы проверить, равен ли бит переменной symbol_order_mode, отвечающий за признак SYMBOL_ORDER_MARKET, единице.

 

Понятно.

Спасибо!

 

Какой тип значения имеет флаг SYMBOL_ORDER_MARKET ?

Тоже int ?

Где можно подробнее прочитать о побитовых операциях? В справке читал, там не очень понятно.

 
Sergey Savinkin:

Какой тип значения имеет флаг SYMBOL_ORDER_MARKET ?

Тоже int ?

Где можно подробнее прочитать о побитовых операциях? В справке читал, там не очень понятно.

А если попытаться подумать? В пивном ларьке? Или на помойке? Или все же набрать в гугле "битовые операции си" ?

По первому вопросу надо прочитать справку по SymbolInfoInteger

prop_id

[in]  Идентификатор свойства символа. Значение может быть одним из значений перечисления ENUM_SYMBOL_INFO_INTEGER.