Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 866

 
Aleksey Vyazmikin:

OK, pasando a la visualización de los pensamientos :)

El blanco muestra dónde estamos haciendo la petición, el amarillo el tiempo de barra que deberíamos obtener.

¿Está más claro? Si no es así, haga preguntas para aclararlo.

Alexey, en el post anterior has hecho una petición de tarea REVEAL...

"Necesito la fecha de la última barra del marco temporal actual, que se refiere a la barra seleccionada del marco temporal superior.

¿Está claro?"

Así que es difícil entender lo que realmente necesitas.

En la solicitud anterior - respondí - https://www.mql5.com/ru/forum/6343/page869#comment_7537714.

Si en la última "con visualización de pensamientos", entonces sólo pide el tiempo de apertura de la barra de la TF superior con un desplazamiento de 0.

No está del todo claro: ¿cuál es el problema?

Вопросы от начинающих MQL5 MT5 MetaTrader 5
Вопросы от начинающих MQL5 MT5 MetaTrader 5
  • 2018.05.23
  • www.mql5.com
Подскажите пожалуйста, такой показатель тестера в жизни реален? И хороший это или плохой результат за год с депо 3000...
 
Kirill Belousov:

Alexey, en el post anterior has hecho una petición de tarea de RETORNO...

"Necesito la fecha de la última barra del marco temporal actual, que se refiere a la barra seleccionada del marco temporal superior.

¿Está claro?"

Así que es difícil entender lo que realmente necesitas.

En la solicitud anterior - respondí - https://www.mql5.com/ru/forum/6343/page869#comment_7537714.

Si en la última "con visualización de pensamientos", entonces sólo pide el tiempo de apertura de la barra de la TF superior con un desplazamiento de 0.

No está del todo claro: ¿cuál es el problema?

Lo siento, me perdí tu respuesta.

Kirill Belousov:

Si he entendido bien su petición, entonces:

1. determinar la hora de cierre de la barra requerida de la TF superior.

¡Eso es lo que no puedo hacer!

Kirill Belousov:

Si por este último "con visualización de pensamientos", entonces simplemente solicite el tiempo de apertura de la barra del TF superior con un desplazamiento de 0.

No tengo muy claro cuál es el problema.

¡Si lo solicito así, me dan las 10:00 y tengo que conseguir la hora 23:49!

 
Aleksey Vyazmikin:

OK, pasando a la visualización de los pensamientos :)

El blanco muestra dónde estamos haciendo la petición, el amarillo el tiempo de barra que deberíamos obtener.

¿Está más claro? Si no es así, haga preguntas para aclararlo.

Pregunta:

A las 10:30 deberíamos obtener el número de barra del periodo H1 con la hora 23:45 en el gráfico M5

¿Lo he hecho bien?

 
Alexey Viktorov:

Pregunta:

A las 10:30 necesito obtener el número de barra del periodo H1 con una hora de 23:45 en el gráfico M5

¿Lo he entendido bien?

Necesito obtener la hora 23:45 en este caso (de hecho no tengo M5, sino M1 del TF actual, pero no importa) - es la hora de la última barra del TF actual en la estructura de la última barra del TF anterior. El desplazamiento en el gráfico es de 1 barra para H1, pero puede haber otro desplazamiento, digamos que necesito información a las 11, es decir, el desplazamiento será de 2.

 
Aleksey Vyazmikin:

Lo siento, me perdí tu respuesta.

¡Eso es lo que no puedo hacer!

¡Si pido eso, me dan 10:00 y tengo que conseguir un tiempo de 23:49!

1. defina el desplazamiento (barra) que desea para la TF alta. - El tiempo entre la apertura y el cierre de esta barra (según tengo entendido) lo estás analizando para las barras del TF inferior dentro de ella.

2. Obtenga su hora de apertura

3. Añade la duración de la TF en segundos para esta TF al tiempo de apertura. - es decir, así obtendrá la hora de cierre de la barra del TF mayor.

4. restar la duración del TF junior (si es M1, entonces 60 segundos) - es el tiempo de apertura del último compás del TF junior en la estructura del TF senior. Encuentra el desplazamiento de esta barra en función del tiempo calculado. (Puede simplemente restar 2-3 segundos al tiempo de cierre de la barra del TF mayor y encontrar la barra del TF menor a la que se refiere este tiempo). Si la consulta NO es estricta, simplemente se obtiene la barra disponible más cercana a la izquierda (desde la hora solicitada), si de repente la última barra de la TF junior está ausente.

 
Kirill Belousov:

1. determine el desplazamiento (barra) que necesita para la TF más alta. - El tiempo entre la apertura y el cierre de esta barra (según te entiendo) lo estás analizando por barras del TF inferior dentro de la misma.

2. Obtenga su hora de apertura

3. Añade la duración de la TF en segundos para esta TF al tiempo de apertura. - es decir, así obtendrá la hora de cierre de la barra del TF mayor.

4. restar la duración del TF junior (si es M1, entonces 60 segundos) - es el tiempo de apertura del último compás del TF junior en la estructura del TF senior. Encuentra el desplazamiento de esta barra en función del tiempo calculado. (Puede simplemente restar 2-3 segundos al tiempo de cierre de la barra del TF mayor y encontrar la barra del TF menor a la que se refiere este tiempo). Si la solicitud no es estricta, entonces sólo se obtiene la barra disponible más cercana a la izquierda (desde la hora solicitada), en caso de que la última barra del marco temporal más joven esté ausente.

No te lo vas a creer, pero hace una hora he escrito un algoritmo similar en papel. Pero es un poco pesado, pensé que había una forma más sencilla.

Sólo el punto 4 puede no funcionar, mi comprobación es al contrario - si la situación no es estándar, tengo que ciclar el tiempo hasta que la barra salga del rango.

 
Los comentarios no relacionados con este tema han sido trasladados a "Preguntas de los principiantes de MQL4 MT4 MetaTrader 4".
 

Quiero declarar un array de estructuras - sin problemas, hasta que vi en algún sitio que una estructura puede tener un constructor...

¿Cómo declaro un array de estructuras con un constructor? (Sé cómo deshacerse de este constructor)

funciona:

struct MyStruct
  {
   int               arr[];
   int               size;
                     MyStruct(int sz){ if(ArrayResize(arr,sz)>0) size=sz; else Print(__FUNCTION__,"Ошибка инициализации массива"); }
                    ~MyStruct(){ ArrayFree(arr); size = -1; }
  };
//+------------------------------------------------------------------+
MyStruct cluster(100);

no funciona, pero quiero que lo haga:

struct MyStruct
  {
   int               arr[];
   int               size;
                     MyStruct(int sz){ if(ArrayResize(arr,sz)>0) size=sz; else Print(__FUNCTION__,"Ошибка инициализации массива"); }
                    ~MyStruct(){ ArrayFree(arr); size = -1; }
  };
//+------------------------------------------------------------------+
MyStruct cluster(100)[47];
 

Una mala solución. Es mejor utilizar clases en lugar de struct. Es lo mismo, pero puedes trabajar con punteros.

class MyClass : 
  {
   public:
   int               arr[];
   int               size;
                     MyStruct(int sz){ if(ArrayResize(arr,sz)>0) size=sz; else Print(__FUNCTION__,"Ошибка инициализации массива"); }
                    ~MyStruct(){ ArrayFree(arr); size = -1; } // этого не надо
  };
//+------------------------------------------------------------------+
MyClass * cluster[47];

for(int n = 0; n < 47; n++)
        cluster[n] = new MyClass;

Lo escribí en mi navegador, creo que no me equivoqué. Salí corriendo durante una hora.

 
Ya sé, ya sé que poner variables en público es incómodo, pero no tengo tiempo.