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

 
Ivan_Invanov:

Да, я понимаю как работать с разрядами двоичной системы.

Из этого кода выходит, например функция вернула 3 . 

(11&1)==1 ; 11==01 нет, это ложь, не сработало.

Я сейчас это писал и подумал, может я неправильно понимаю операции.

& это значит, я перевожу десятичные значения в двоичные и делаю побитово конъюнкцию.

== истина, когда первый член равен второму члену. Всё так?

Вот в этих дебрях я не понимаю, я самоучка. Просто знаю как проверить и что могу получить. Ваш пример  (11&1)==1  в результате будет true так как 11 можно составить только из флагов 1+2+8 следовательно 1 в набор входит.

Проверьте что будет возвращено

return(1|2|8);
 
Alexey Viktorov:
Вот в этих дебрях я не понимаю, я самоучка. Просто знаю как проверить и что могу получить. Ваш пример  (11&1)==1  в результате будет true так как 11 можно составить только из флагов 1+2+8 следовательно 1 в набор входит.

Проверьте что будет возвращено

Это я написал в двоичной системе, забыл указать. Подставил значения в код написанный, если функция вернула 3 и сравнила с FOK. Вот так записывается вроде двоичная. (0b11 & 0b1)==0b1 ; результат в скобках 0b11 имеем выражение 0b11==0b1 ; но получается ложь, по моему. А чтобы всё заработало должна быть истина. Ну и раз этот пример в справке там истина выходит. Видимо я чтото не так понял. Я сейчас сишную справку смотрел, а до этого mqlную. Вроде всё так. Извиняюсь, если я задаю очень уж тупые вопросы, и спасибо всем за ответы.
 
в mql справке написано, что значение истина это любое ненулевое значение, видимо это и ответ. А дальше равенство , и в си равенство. Получается, это не равенство, а если сравниваемые члены больше нуля, то значение истина. Наверно так. Как то непонятно написано. Это я про оператор ==.
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
  • www.mql5.com
Внутреннее представление – целое число размером 1 байт. Необходимо отметить, что в логических выражениях допустимо использовать вместо типа bool другие целые или...
 

Побитовая операция, это П О Б И Т О В А Я операция. Она с битами работает. Например 1 - это 00000001. 2 - это 00000010. Флаг может быть равен только 1, 2, 4, 8 и т.п. Короче, один бит занят. 

А в наборе флагов может быть любые биты заняты, например 00000101. В этот набор входит флаг 00000001 и 00000100. А чтобы узнать входит ли какой-то флаг в набор флагов, надо сделать побитовое "и" флага и набора, если после этого останется флаг, то значит он есть в наборе:

(00000101 &  00000100) ==  00000100  - true. Это значит, что в наборе 00000101 есть флаг 00000100.

 
Dmitry Fedoseev:

Побитовая операция, это П О Б И Т О В А Я операция. Она с битами работает. Например 1 - это 00000001. 2 - это 00000010. Флаг может быть равен только 1, 2, 4, 8 и т.п. Короче, один бит занят. 

А в наборе флагов может быть любые биты заняты, например 00000101. В этот набор входит флаг 00000001 и 00000100. А чтобы узнать входит ли какой-то флаг в набор флагов, надо сделать побитовое "и" флага и набора, если после этого останется флаг, то значит он есть в наборе:

(00000101 &  00000100) ==  00000100  - true. Это значит, что в наборе 00000101 есть флаг 00000100.

ПРавильно ли утверждение что (положительный член 1 == положительный член 2) но при этом положительный член 1 не равен положительному члену 2,  это истина? Получается так , ведь в справке написано, что истина это любое ненулевое значение, и тогда код рабочий.
 
Ivan_Invanov:
ПРавильно ли утверждение что (положительный член 1 == положительный член 2) но при этом положительный член 1 не равен положительному члену 2,  это истина? Получается так , ведь в справке написано, что истина это любое ненулевое значение, и тогда код рабочий.
Меня запутало, что там дальше написано слово равенство.
 
В каком месте справки? Конкретно где и что?
 
Dmitry Fedoseev:
В каком месте справки? Конкретно где и что?

По моему, это противоречие. Получается истина, не если а равно b, а если a и b отличные от нуля. Ну не противоречие, а непонятно написано. Ну вроде разобрался, спасибо.

Файлы:
1111.jpg  29 kb
 
ENUM_SYMBOL_TRADE_EXECUTION Напротив этого не написано какой тип оно имеет, а заголовки в справке перепутаны(вроде писалось для строковых, а потом без упоминания началась речь об целочисленных) . По этому я попробовал все три варианта, но каждый раз ошибка компилятора. Что не так?
long execution = (long) SymbolInfoInteger(_Symbol, ENUM_SYMBOL_TRADE_EXECUTION);
string execution = (string) SymbolInfoString(_Symbol, ENUM_SYMBOL_TRADE_EXECUTION);
double execution = (double) SymbolInfoDouble(_Symbol, ENUM_SYMBOL_TRADE_EXECUTION);
 
Ivan_Invanov:
ENUM_SYMBOL_TRADE_EXECUTION Напротив этого не написано какой тип оно имеет, а заголовки в справке перепутаны(вроде писалось для строковых, а потом без упоминания началась речь об целочисленных) . По этому я попробовал все три варианта, но каждый раз ошибка компилятора. Что не так?

Нужно делать так:

//--- Check trade execution mode
  ENUM_SYMBOL_TRADE_EXECUTION market_info = ENUM_SYMBOL_TRADE_EXECUTION(SymbolInfoInteger(Symbol(), SYMBOL_TRADE_EXEMODE));
    
  if((market_info & SYMBOL_TRADE_EXECUTION_EXCHANGE) != SYMBOL_TRADE_EXECUTION_EXCHANGE)
  {
    MessageBox("Символ " + Symbol() + " не поддерживает TRADE EXECUTION EXCHANGE режим!", "Ошибка", MB_OK | MB_ICONHAND);
    return(false);
  }