вернутые значения
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); }
- www.mql5.com
побитовая проверка нужна. например:
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; }
if(x>0.0) break; if(x<0.0) y++;
Почему это не тоже самое что и return. Return вернет управление вызвавшей программе, которая переходит к следующему оператору. break принудительный переход на следующий оператор. Разве вызвавшая программа может проигнорировать следующий оператор?
Cпасибо. А можете еще объяснить, зачем в операторе if иногда пишут break, пример из официального советника.
Почему это не тоже самое что и return. Return вернет управление вызвавшей программе, которая переходит к следующему оператору. break принудительный переход на следующий оператор. Разве вызвавшая программа может проигнорировать следующий оператор?
Ссылку на документацию дайте, откуда этот
if(x>0.0) break; if(x<0.0) y++;
пример ...
Это из советника Moving Average v1.00 2009-2017 .Он примером идёт в терминале mt5. Строка 64.
1. Не пытайтесь вырвать код из контекста.
2. Внимательно прочитать справку Оператор завершения break
3. Только после выполнения заданий 1 и 2 можно будет продолжить задавать вопросы.
- www.mql5.com
1. Не пытайтесь вырвать код из контекста.
2. Внимательно прочитать справку Оператор завершения break
3. Только после выполнения заданий 1 и 2 можно будет продолжить задавать вопросы.
Я не понимаю, вы говорите, что может одна или две. Переменная то одна в функции. Можете с примером сказать.
iok это 2
fok это 1
gtc это 0
что тогда вернётся, если ioc и fok
Я не понимаю, вы говорите, что может одна или две. Переменная то одна в функции. Можете с примером сказать.
Пример из торгового класса 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
Ещё о побитовых операциях.
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
iok это 2
fok это 1
gtc это 0
Всё верно? А двух политик доступных не может быть?