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

 
Вадим Мотеюнас:
https://www.mql5.com/ru/docs/basis/operators
 
ArturR:

1. Sí, hay un caso para la barra cero en el código, no hay posibilidad de comprobar qué caso se ha probado ahora, lo comprobaré esta noche.

2. Lo he comprobado imprimiendo un comentario al gráfico con valores, macd, High y Low tienen valores, pero min(max)price no obtiene valores correspondientes.

Necesitaría ver cómo se declaran estas variables. Se sospecha que son variables locales que se ponen a cero con cada entrada en la función. Como resultado, esos momentos en los que están con valores simplemente no tienes tiempo de verlos. Para ver los valores, mira el contenido del registro. Al fin y al cabo, en el código está la impresión.

 

Hola. Tengo una tarea, de 1000 líneas de archivo csv, necesito seleccionar coincidencias de parámetros del campo N y devolver cualquier tipo de valor de otros campos del registro encontrado. ¿Puede decirme si hay un experto que trabaje con el archivo y tome decisiones comerciales? Gracias.

 
mwwm:

Hola. Tengo una tarea, de 1000 líneas de archivo csv, necesito seleccionar coincidencias de parámetros del campo N y devolver cualquier tipo de valor de otros campos del registro encontrado. ¿Puede decirme si hay un experto que trabaje con el archivo y tome decisiones comerciales? Gracias.

Probablemente haya que buscar en la base de código los que funcionan con las noticias.

 
Ihor Herasko:

Simplemente no tienes tiempo para ver. Para ver los valores, mira el contenido del cuaderno de bitácora. Al fin y al cabo, en el código está la impresión.

Sí, gracias.) No me di cuenta de este registro entre otras tonterías en el diario. Gracias de nuevo a todos los que han respondido, seguiré limpiando)

 
Cómo calcular la barra de índice para que el valor corresponde a la siguiente lógica: si el período actual del gráfico M15, y el marco de tiempo del indicador llamado con la función (MTF) = H1, la barra de índice 5, es decir, el hecho de cerrar la barra H1, si el período actual del gráfico M30, y el marco de tiempo del indicador llamado con la función (MTF) = H1, la barra de índice 3, si el período actual del gráfico M5, y el marco de tiempo del indicador llamado con la función (MTF) = M15, la barra de índice 4.
 
lil_lil:
Qué cálculo del índice de la barra debe hacerse, de modo que el valor corresponde a la siguiente lógica: si el período actual del gráfico M15 y el indicador llamado timeframe con función (MTF) = H1, el índice de la barra 5, es decir, el hecho de cerrar la barra H1, si el período actual del gráfico M30 y el indicador llamado timeframe con función (MTF) = H1, entonces el índice de la barra 3, si el período actual del gráfico M5 y el indicador llamado timeframe con función (MTF) = M15, el índice de la barra 4.

El error aquí está en la propia lógica. El TF actual podría ser M15, y la última barra M15, que corresponde a la barra H1 que se ha formado, sería 1. O podría ser 2, o 3, o 4, pero no más. Por ejemplo, ahora son las 10:06. Los índices de las barras M15 y H1 actuales son 0, las barras anteriores en ambos TFs son 1 y la última barra M15 que corresponde al H1 cerrado también es 1. A las 10:15 la situación cambiará: la última barra M15 que formó el H1 tendrá un índice 2, a las 10:30 será 3 y a las 10:45 será 4.

Los cálculos matemáticos no ayudarán mucho en este caso. Tenemos que buscar las barras correspondientes en el gráfico. El algoritmo es el siguiente:

  1. Determinar el tiempo de apertura de la barra cero H1. (iTime)
  2. Identifica el índice de la primera barra del marco temporal actual, que corresponde a la hora de apertura de la barra cero H1. (iBarShift)
  3. Suma 1 al índice de barras encontrado.

 
Ihor Herasko:

El error aquí está en la propia lógica. El TF actual podría ser M15, y la última barra M15, que corresponde a la barra H1 que se ha formado, sería 1. O podría ser 2, o 3, o 4, pero no más. Por ejemplo, ahora son las 10:06. Los índices de las barras M15 y H1 actuales son 0, las barras anteriores en ambos TFs son 1 y la última barra M15 que corresponde al H1 cerrado también es 1. A las 10:15 la situación cambiará: la última barra M15 que formó el H1 tendrá índice 2, a las 10:30 será 3 y a las 10:45 será 4.

Los cálculos matemáticos no ayudarán mucho en este caso. Tenemos que buscar las barras correspondientes en el gráfico. El algoritmo es el siguiente:

  1. Determinar el tiempo de apertura de la barra cero H1. (iTime)
  2. Identifica el índice de la primera barra del marco temporal actual, que corresponde a la hora de apertura de la barra cero H1. (iBarShift)
  3. Suma 1 al índice de barras encontrado.

Probablemente no lo he dicho todo. El indicador dibuja en la barra cero del marco temporal superior, condicionalmente H1, respectivamente para las 4 barras del marco temporal actual, M15. Por eso necesito el índice 5 en M15 para saber si hay señal al cierre de H1. Seguramente es posible calcular este índice para evitar escribir un montón de condiciones para cada variante de combinaciones de períodos altos y actuales.

input ENUM_TIMEFRAMES   TimeFrame=PERIOD_H1;
//  
 if(TimeFrame == PERIOD_H1&&Period()==M15) timef = 5;//timef = 4;

   if(TimeFrame == PERIOD_H1&&Period()==M30) timef = 3;//timef = 2;


Ajk=NormalizeDouble(iCustom(NULL,0,"Ajk",TimeFrame,4,i+timef),Digits);
 
lil_lil:

El indicador dibuja en la barra cero del marco temporal superior, normalmente H1, respectivamente durante las 4 barras del marco temporal actual, M15.

Eso es lo que estoy diciendo, las barras del marco temporal actual pueden ser más pequeñas - 1, 2 o 3. Es decir, las lecturas no siempre se mostrarán en 4 barras. El único caso de visualización de 4 barras es la última barra del TF actual que corresponde a la barra cero H1. Para esta formulación del problema sólo necesitamos encontrar la primera barra de la TF actual que corresponde a la barra cero H1:

int nCurTFBarIndex = iBarShift(NULL, 0, iTime(NULL, PEPRIOD_H1, 0));

Entonces los datos se mostrarán empezando por la barra cero del TF actual hasta nCurTFBarIndex inclusive.

Por eso necesito el índice 5 específicamente en el M15 TF, para saber al cierre del H1 si queda señal o no. Seguramente es posible calcular este índice para evitar escribir un montón de condiciones para cada variante de combinación de períodos superiores y actuales.

¿De qué TF se toma la señal: de la actual, de la H1 o de una versión mixta? Si sólo es de H1, entonces no hay necesidad de buscar nada en absoluto, porque la última barra formada siempre tendrá el índice 1.

 
Ihor Herasko:

¿De qué TF se toma la señal: actual, H1 o una versión mixta? Si sólo es de H1, entonces no hay necesidad de buscar nada en absoluto, porque la última barra formada siempre tendrá el índice 1.

Coloco el H1 en la configuración externa del indicador MTF y lo adjunto al gráfico M15. La señal parpadea durante 4 barras. Cuando se cierra la barra H1, la señal no parpadea y en M15 la señal deja de parpadear en la barra 4. Si lo pongo en М1, respectivamente, deja de parpadear en la barra 60. es necesario calcular el índice i+N para que N varíe en función del periodo seleccionado en los ajustes y en el gráfico del periodo, en el que se adjunta el indicador.

input ENUM_TIMEFRAMES   TimeFrame=PERIOD_H1;
//  
 if(TimeFrame == PERIOD_H1&&Period()==M15) N = 5;// ВОЗМОЖНО НУЖНО N = 4;

   if(TimeFrame == PERIOD_H1&&Period()==M1) N = 61;//А ЗДЕСЬ ВОЗМОЖНО N = 60;
Razón de la queja: