Preguntas de un "tonto" - página 117

 
meneo:

¿Cómo puede ser esto? (véase el cálculo de la variable k y los valores de todas las variables en el modo de depuración)

Es muy sencillo. lparam es de tipo long (entero), wdpix es de tipo int (entero). lparam/wdpix es de tipo long privado (entero). Como lparam < wdpix, lparam/wdpix ==0.

Ver MQL5 Reference / Language Basics / Data types / Type conversion

 
meneo:

¿Cómo se explican los espacios entre barras adyacentes en el gráfico?

Si lo ve, póngase en contacto con el Servicio de Atención al Cliente e infórmele del error.
 
Gracias a todos. )
 
¿Se puede saber qué experto se está ejecutando en otra ventana?
 
meneo:
¿Se puede saber qué Asesor Experto se está ejecutando en otra ventana?
Parece que es imposible (si no me he perdido nada). Pero es posible "distinguir" lo propio de lo "ajeno". Si hay varios programas en el proyecto, se puede especificar su protocolo de intercambio de cortesías mediante mensajes personalizados. Deben saludar, quitarse el sombrero, sacar los bolsillos, etc.
 

¿Es posible también hacer una enumeración por enumeración

¿así?

for (int i = PERIOD_M1;i<=PERIOD_D;i++)

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
 
meneo:

¿Es posible también hacer una enumeración por enumeración

¿así?

for (int i = PERIOD_M1;i<=PERIOD_D;i++)

Esto no funcionará.

Sobre esto - debería probarlo.

for (ENUM_TIMEFRAMES i = PERIOD_M1;i<=PERIOD_D;i++) {}

De alguna manera sospecho que no funcionará, aunque "teóricamente" tenga una oportunidad. :)

 

Bueno, lo he intentado.

void OnStart()
  {
//---
   for (ENUM_TIMEFRAMES i = PERIOD_M1;i<=PERIOD_D;i++) { Print(EnumToString(i));}
  }
//+------------------------------------------------------------------+

Ni siquiera quiere compilar.

'ForEnum.mq5' ForEnum.mq5 1 1
'i' - token inesperado ForEnum.mq5 15 25
'i' - identificador no declarado ForEnum.mq5 15 25
'PERIOD_D' - identificador no declarado ForEnum.mq5 15 42
'i' - el parámetro para EnumToString debe ser una enumeración ForEnum.mq5 15 77
4 error(es), 0 advertencia(s) 5 1

Pero parece que no hay nada ilegal en ello.

 
MetaDriver:

Lo he probado.

El programador no quiere ni compilar.

Y parece que no hay nada ilegal en ello.


Para trabajar con enum, probablemente debería añadir al menos funciones como

enum::GetName y enum::GetValue

y para cada construcción lingüística

Entonces la enumeración será automatizada por MQL

 

Esto, por supuesto, funciona.

#property script_show_inputs

input  ENUM_TIMEFRAMES P = PERIOD_D1;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   for (int i = PERIOD_M1;i<=P;i++)  // { Print(EnumToString(ENUM_TIMEFRAMES(i)));}
    {
      string S=EnumToString(ENUM_TIMEFRAMES(i));
      if (StringGetCharacter(S,0)=='P')   

        {{{{ Print(S);  }}}}

    }

  }

Y lo que es genial - no dice que P es un token inesperado o un identificador no declarado

Y por el contrario, como cliente habitual proporciona todas las comodidades



Extraño ..... ;)

Razón de la queja: