devuelve la política de ejecución.

 
long  SymbolInfoInteger(_Symbol,SYMBOL_FILLING_MODE);
valores devueltos

iok es 2
fok es 1
gtc es 0

¿Es esto correcto? ¿No puede haber dos pólizas disponibles?

 
Ivan_Invanov:
valores devueltos

iok es 2
fok es 1
gtc es 0

¿Es esto correcto? ¿No puede haber dos pólizas disponibles?

Puede haber uno y dos ...

Compruébalo:

//+------------------------------------------------------------------+
//| проверяет разрешенность указанного режима заполнения             |
//+------------------------------------------------------------------+
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 соответственно. Некоторые символы (как правило...
 

Se necesita una comprobación de bits, por ejemplo:

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:

Puede haber uno o dos ...

Verificación:

Gracias. ¿Puedes explicar también por qué a veces escriben break en la sentencia if, un ejemplo del asesor oficial.
if(x>0.0)
break;
if(x<0.0)
y++;

Por qué no es lo mismo que la devolución. Return devolverá el control al programa de llamada, que pasa al siguiente operador. La pausa fuerza la transición al siguiente operador. ¿Puede el programa que llama ignorar el siguiente operador?

 
Ivan_Invanov:
Gracias. ¿Puede explicar también por qué la ruptura se escribe a veces en el enunciado del if, ejemplo del asesor oficial.

Por qué no es lo mismo que la devolución. Return devolverá el control al programa de llamada, que pasa a la siguiente sentencia. break obliga al programa a pasar al siguiente operador. ¿Puede el programa que llama ignorar el siguiente operador?

Dame un enlace a la documentación donde este

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

ejemplo...

 
Esto es de la Media Móvil v1.00 2009-2017 .Es un ejemplo en el terminal mt5. Línea 64.
 
Ivan_Invanov:
Esto es de Moving Average v1.00 2009-2017 .Es un ejemplo en el terminal mt5. Línea 64.

1. No intentes sacar el código de contexto.

2. Lea atentamente la ayuda para el operador de la pausa final.

3. Sólo después de haber completado las tareas 1 y 2 puede seguir haciendo preguntas.

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

1. No intentes sacar el código de contexto.

2. Lea atentamente la ayuda para el operador de la pausa final.

3. Sólo después de haber completado las tareas 1 y 2 puede seguir haciendo preguntas.

Gracias. Borro el hilo para no saturar el foro. Ah, no está permitido borrar hilos aquí.
 
Vladimir Karputov:

Puede haber uno o dos ...

Pruebas:

No entiendo, dices que puede ser uno o dos. Sólo hay una variable en la función. Me lo puedes decir con un ejemplo.
 
Ivan_Invanov:
No entiendo, dices que puede ser uno o dos. Sólo hay una variable en la función. Me lo puedes decir con un ejemplo.

iok es 2
fok es 1
gtc es 0

lo que devuelve entonces si ioc y fok

 
Ivan_Invanov:
No entiendo, usted está diciendo que puede haber uno o dos. Sólo hay una variable en la función. Me lo puedes decir con un ejemplo.

Ejemplo de la clase de comercio de CTrade. Primero se comprueba si hay"SYMBOL_FILLING_FOK" y luego si hay"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);
  }


La comprobación se realiza mediantela operación "AND bitwise".

Operación AND a nivel de bits

La operación AND a nivel de bits de las representaciones binarias x e y. El valor de la expresión contiene 1 (TRUE) en todos los bits en los que tanto x como y contienen un valor distinto de cero; y 0 (FALSE) en todos los demás bits.

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

Ejemplo:

   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


Más información sobre las operaciones a nivel de bits.

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