Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1117

 
Roman:

Realmente útil...

Imprima en diferentes plazos.

Porque la variable predefinida _Period da salida al valor que:

La variable _Period almacena el valor del marco temporal del gráfico actual.

Y este marco temporal está definido por el valor de la constante de la enumeración ENUM_TIMEFRAMES que corresponde al periodo del gráfico.

Vale, resuélvelo:

//+------------------------------------------------------------------+
//|                                         TestTimeframe_Period.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                             https://mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://mql5.com/ru/users/artmedia70"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print
     (
      "Значение предопределённой переменной _Period на графике ",TimeframeDescription(Period())," = ",(string)(int)_Period,"\n",
      "Значение константы перечисления ENUM_TIMEFRAMES ",EnumToString(Period())," = ",(string)(int)Period(),"\n",
      "Период графика, соответствующий константе перечисления ENUM_TIMEFRAMES ",EnumToString(Period()),", со значением ",(string)(int)Period()," = ",TimeframeDescription(Period())
     );
  }
//+------------------------------------------------------------------+
//| Возвращает описание таймфрейма                                   |
//+------------------------------------------------------------------+
string TimeframeDescription(const ENUM_TIMEFRAMES timeframe)
  {
   return StringSubstr(EnumToString((timeframe>PERIOD_CURRENT ? timeframe : (ENUM_TIMEFRAMES)Period())),7);
  }
//+------------------------------------------------------------------+
Документация по MQL5: Предопределенные переменные / _Period
Документация по MQL5: Предопределенные переменные / _Period
  • www.mql5.com
Предопределенные переменные / _Period - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Roman:

No he utilizado mql4 )) y no me he acostumbrado.
¿Por qué tenemos que dividir por 60 más?
¿Dónde lo dice la referencia?
Ya son tus muletas las que evitan el bicho.
Ahora comprueba tu muleta, en todos los plazos

¿Un error? Entonces, ¿crees que tener los plazos M1, M2, M3, M4, M5, M6 y luego M10 también es un error?

Por qué no se pide a los desarrolladores que eliminen los errores de falta de plazos

M7, M8, M9, M11, M13, M14, M16, M17, M18, M19, M21, M22, M23, M24, M25, M26, M27, M28, M29, M31 - M59, N1_M1, N1_M2, N1_M3, --- , ---, CIEN_AÑOS ?

¿Por qué la representación interna de las constantes de transferencia es de repente un error ?

¿No te molesta la falta de billetes de trescientos rublos?

 
Artyom Trishkin:

¿Un error? Entonces, ¿crees que tener los plazos M1, M2, M3, M4, M5, M6 y luego M10 también es un error?

Por qué no se pide a los desarrolladores que eliminen los errores de falta de plazos

M7, M8, M9, M11, M13, M14, M16, M17, M18, M19, M21, M22, M23, M24, M25, M26, M27, M28, M29, M31 - M59, N1_M1, N1_M2, N1_M3, --- , ---, CIEN_AÑOS ?

¿Por qué la representación interna de las constantes enum es de repente un error ?

¿No te molesta la falta de billetes de trescientos rublos?

¿Puede decirme si el valor de 16385 corresponde al valor del período del gráfico H1?
Y todos los demás valores del período por encima de H1.
Igor incluso te mostró el formato binario, y mi siguiente post es el mismo, pero en un formato diferente.

Vas en una dirección completamente diferente, no saques a relucir algo que no has dicho.
¡Lo que me molesta es que el moderador amordace a los bichos con sus muletas!
No contribuir a su eliminación.

Aquí hay otro error para ti.

Print(PeriodSeconds(PERIOD_MN1)*1000);

Y lo mismo en el gráfico de MN.

Print(PeriodSeconds(PERIOD_CURRENT)*1000);
 
Roman:

Dígame por favor, ¿el valor de 16385 corresponde al valor del período del gráfico H1?
Y todos los demás valores del período por encima de H1.

Vas en una dirección completamente diferente, no saques a relucir algo de lo que no se ha hablado.
¡Lo que me molesta es que el moderador esté lavando bichos con sus muletas!
Y no contribuir a su eliminación.
Aquí hay otro error para ti.

¿No tienes tiempo para estudiar la ayuda?

¿Todo lo que no entiendes es un error que crees que los desarrolladores deberían arreglar?

¿O quizás deberías aprender a leer en este caso, en lugar de pasarle la pelota a un moderador?

Print((string)(uint)PeriodSeconds(PERIOD_MN1)*1000)

¿Por qué desbordas el int?

Así que imprímalo usted mismo:

Print
  (
   "(int)PeriodSeconds(PERIOD_MN1) = ",(int)PeriodSeconds(PERIOD_MN1),
   ", (ulong)PeriodSeconds(PERIOD_MN1)*1000 = ",(ulong)PeriodSeconds(PERIOD_MN1)*1000,
   ", INT_MAX = ",INT_MAX
  );

y por favor, corrige el error de tu propio pensamiento.

Y si quieres milisegundos, represéntalos como ulong.

 
Artyom Trishkin:

¿No tienes tiempo para estudiar la ayuda?

¿Todo lo que no entiendes es un error que crees que los desarrolladores deberían arreglar?

¿O quizás deberías aprender a leer en este caso, en lugar de pasarle la pelota a un moderador?

¿Por qué desbordas el int?

Así que imprímalo usted mismo:

y por favor, corrige el error de tu propio pensamiento.

El hacinamiento, sí, fue un descuido, no lo tuve en cuenta. Gracias aquí.
Pero tu ejemplo no compila.

Como se imprime bien, adivina cuando necesitas una cadena y cuando no ))

Print((uint)PeriodSeconds(PERIOD_MN1)*1000);


Y con respecto a la variable _Period, hay algo que no funciona por encima de H1.

 
Roman:

Dígame por favor, ¿el valor de 16385 corresponde al valor del período del gráfico H1?
Y todos los demás valores del período por encima de H1.
Igor incluso te mostró el valor en formato binario, y el siguiente es mi post, donde se ve el mismo valor en otro formato.

Vas en una dirección completamente diferente, no saques a relucir algo que no has dicho.
¡Lo que me molesta es que el moderador amordace a los bichos con sus muletas!
No contribuir a su eliminación.

Aquí hay otro error para ti.

Y lo mismo en el gráfico de MN.

1. Sí, corresponde al valor de la constante.

2. Y todas las demás corresponden al valor de la constante.

Intenta imprimirlo.

Print("SYMBOL_BID=",SYMBOL_BID); 

¿Cree que se le imprimirá el precio actual de la oferta, o algo más?

¿Por qué entonces esperas de

Print("PERIOD_H1=",PERIOD_H1);

que se le dará algo así como H1 o 60?

Y Igor no me lo imprimió, sino que te mostró la representación interna de los valores constantes de la enumeración ENUM_TIMEFRAMES en el formato binario.

Has afirmado que los valores de las constantes de enumeración que me has mostrado son un error y mi explicación es una muletilla. Esto no es así - es sólo su ignorancia de los fundamentos simples.

Ahora me despido - aprende lo básico, y por favor, no muestres tu ignorancia en bichos y muletas de los desarrolladores - no es bueno tirar a la basura. Sí, y eliges unas "palabras apretadas", mientras olvidas que resulta que no sabes algo.

Lo resolverás, pero tu boceto quedará para otros que sean igual de "entendidos". Es una plaga...

 
Roman:

Con el desbordamiento, sí, exagerado, no tuvo en cuenta este punto. Gracias.
Pero su muestra no se compilará.

Pero se imprime bien, así que adivina cuándo necesitas una cadena y cuándo no ))


Y con respecto a la variable _Period, estoy seguro de que hay algo mal allí por encima de H1.

¿Qué quieres decir con que "no compila"? Copiado del foro en el script y compilado:


Y la variable _Period devuelve el valor de la constante de enumeración ENUM_TIMEFRAMES del gráfico actual como int. Es decir, no el número de minutos, ni el número de segundos, sino el valor de la constante de ENUM_TIMEFRAMES correspondiente al gráfico actual.

 
Roman:

Pero se imprime bien, así que adivina cuándo necesitas una cadena y cuándo no ))

No tienes que adivinar. Hay que pensar y entender qué se hace y para qué. Cuándo hay que escribir algo y cuándo no.

 
Artyom Trishkin:

¿Por qué entonces esperas que

que vas a conseguir algo así como H1 o 60?

Porque los plazos de minutos por debajo de H1 devuelven los valores correctos.
Como se describe en la ayuda, devuelven el valor del marco temporal, no una constante aleatoria.

Print("PERIOD_M1=",PERIOD_M1);
Print("PERIOD_M5=",PERIOD_M5);
Print("PERIOD_M30=",PERIOD_M30);
Print("PERIOD_H1=",PERIOD_H1);
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_M1=1
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_M5=5
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_M30=30
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_H1=16385

Por eso es lógico esperar esto de los marcos temporales más altos, continuando la secuencia en minutos.
PERIOD_H1=60

etc.

 
Roman:

Porque los plazos de minutos por debajo de H1 devuelven valores correctos.
Tal y como se describe en la ayuda, devuelven el valor del marco temporal, no las constantes arbitrarias.

Por eso es lógico esperar esto de los marcos temporales más altos, continuando la secuencia en minutos.
PERIOD_H1=60

etc.

... seguir componiendo canciones malvadas, esperar el comunismo, la marca de trinchera y el coleccionismo de ***...

Es lógico que no se utilicen valores constantes con la expectativa de devolver valores "lógicos" esperados.

Una vez más (por última vez) déjame recordarte la constante SYMBOL_BID. Es "lógico" esperar de él el valor del precio de la oferta actual en lugar de 1 por alguna razón, ¿no? ¿O no?

Eso es todo. Estoy cansado del regaliz, y no me dediqué a la enseñanza, por así decirlo.

Razón de la queja: