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

 
long  SymbolInfoInteger(_Symbol,SYMBOL_FILLING_MODE);
вернутые значения

iok это 2
fok это 1 
gtc это 0

Всё верно? А двух политик доступных не может быть?

 
Ivan_Invanov:
вернутые значения

iok это 2
fok это 1 
gtc это 0

Всё верно? А двух политик доступных не может быть?

Может быть и одна и две ...

Проверка:

//+------------------------------------------------------------------+
//| проверяет разрешенность указанного режима заполнения             |
//+------------------------------------------------------------------+
bool IsFillingTypeAllowed(string symbol,int fill_type)
  {
//--- получим значение свойства, описывающего режим заполнения
   int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- вернем true, если режим fill_type разрешен
   return((filling&fill_type)==fill_type);
  }
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Для получения текущей рыночной информации служат функции SymbolInfoInteger(), SymbolInfoDouble() и SymbolInfoString(). В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно. Некоторые символы (как правило...
 

побитовая проверка нужна. например:

ENUM_ORDER_TYPE_FILLING OrderTypeFilling(const string symbol)
{
 int FillingFlags = (int)SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE);
 
 if((FillingFlags & SYMBOL_FILLING_FOK) == SYMBOL_FILLING_FOK)
                                     return ORDER_FILLING_FOK;
 else 
 if((FillingFlags & SYMBOL_FILLING_IOC) == SYMBOL_FILLING_IOC)
                                     return ORDER_FILLING_IOC;
 else
                                     return ORDER_FILLING_RETURN;
}
 
Vladimir Karputov:

Может быть и одна и две ...

Проверка:

Cпасибо. А можете еще объяснить, зачем в операторе if иногда пишут break, пример из официального советника.
if(x>0.0)
break;
if(x<0.0)
y++;

Почему это не тоже самое что и return. Return вернет управление вызвавшей программе, которая переходит к следующему оператору. break принудительный переход на следующий оператор. Разве вызвавшая программа может проигнорировать следующий оператор?

 
Ivan_Invanov:
Cпасибо. А можете еще объяснить, зачем в операторе if иногда пишут break, пример из официального советника.

Почему это не тоже самое что и return. Return вернет управление вызвавшей программе, которая переходит к следующему оператору. break принудительный переход на следующий оператор. Разве вызвавшая программа может проигнорировать следующий оператор?

Ссылку на документацию дайте, откуда этот

if(x>0.0)
break;
if(x<0.0)
y++;

пример ...

 
Это из советника Moving Average v1.00 2009-2017 .Он примером идёт в терминале mt5. Строка 64.
 
Ivan_Invanov:
Это из советника Moving Average v1.00 2009-2017 .Он примером идёт в терминале mt5. Строка 64.

1. Не пытайтесь вырвать код из контекста.

2. Внимательно прочитать справку  Оператор завершения break

3. Только после выполнения заданий 1 и 2 можно будет продолжить задавать вопросы.

Документация по MQL5: Основы языка / Операторы / Оператор завершения break
Документация по MQL5: Основы языка / Операторы / Оператор завершения break
  • www.mql5.com
Основы языка / Операторы / Оператор завершения break - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Karputov:

1. Не пытайтесь вырвать код из контекста.

2. Внимательно прочитать справку  Оператор завершения break

3. Только после выполнения заданий 1 и 2 можно будет продолжить задавать вопросы.

Спасибо. Удаляю тему, чтобы не захламлять форум. А, тут нельзя чтоли удалять темы.
 
Vladimir Karputov:

Может быть и одна и две ...

Проверка:

Я не понимаю, вы говорите, что может одна или две. Переменная то одна в функции. Можете с примером сказать.
 
Ivan_Invanov:
Я не понимаю, вы говорите, что может одна или две. Переменная то одна в функции. Можете с примером сказать.

iok это 2
fok это 1 
gtc это 0

что тогда вернётся, если ioc и fok

 
Ivan_Invanov:
Я не понимаю, вы говорите, что может одна или две. Переменная то одна в функции. Можете с примером сказать.

Пример из торгового класса CTrade. Сначала проверяется на 'SYMBOL_FILLING_FOK', затем на 'SYMBOL_FILLING_IOC'

//+------------------------------------------------------------------+
//| Set order filling type according to symbol filling mode          |
//+------------------------------------------------------------------+
bool CTrade::SetTypeFillingBySymbol(const string symbol)
  {
//--- get possible filling policy types by symbol
   uint filling=(uint)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
   if((filling&SYMBOL_FILLING_FOK)==SYMBOL_FILLING_FOK)
     {
      m_type_filling=ORDER_FILLING_FOK;
      return(true);
     }
   if((filling&SYMBOL_FILLING_IOC)==SYMBOL_FILLING_IOC)
     {
      m_type_filling=ORDER_FILLING_IOC;
      return(true);
     }
//---
   return(false);
  }


Проверка производится при помощи 'Побитовая операция И'

Побитовая операция И

Побитовая операция И двоичных представлений x и y. Значение выражения содержит 1 (ИСТИНА) во всех разрядах, в которых и x, и y содержат не ноль; и 0 (ЛОЖЬ) во всех остальных разрядах.

b = ((x & y) != 0);

Пример:

   char a='a',b='b';
//--- операция И
   char c=a&b;
   Print("a = ",a,"  b = ",b);
   Print("a & b = ",c);
// Результат будет такой:
// a = 97   b = 98
// a & b = 96


Ещё о побитовых операциях.

Документация по MQL5: Основы языка / Операции и выражения / Побитовые операции
Документация по MQL5: Основы языка / Операции и выражения / Побитовые операции
  • www.mql5.com
Дополнение до единицы значения переменной. Значение выражения содержит 1 во всех разрядах, в которых значение переменной содержит 0, и 0 во всех разрядах, в которых значения переменной содержит 1. Сдвиг вправо Двоичное представление x сдвигается вправо на y разрядов. Если сдвигаемое значение имеет беззнаковый тип, то осуществляется логический...