Mt4 Fin de soporte. - página 33

 
También hay un problema con la hora de inicio. Algo no registra el inicio de la barra en el momento adecuado. Lo resolveré más tarde.
 
Nikolai Semko:

Peter, a mí tampoco me funciona.
Su estilo de programación es extraño. Puedes poner todo esto con todas las variables y bucles de OnInit y OnTimer en un procedimiento. Si alguien quiere usarlo, porque este código estorbará. ¿Y si tenemos 20 o más procedimientos del mismo tipo con el mismo contenido? Al fin y al cabo, está implementadoaquí .


Peter no busca una salida fácil...

 
Реter Konow:
También hay un problema con la hora de inicio. Algo no registra el inicio de la barra en el momento adecuado. Lo resolveré más tarde.

El inicio de la barra no siempre está cronometrado con precisión.

A veces se saltan los bares por completo.
 
Nikolai Semko:

Peter, a mí tampoco me funciona.
Su estilo de programación es extraño. Puedes poner todas estas cosas con todas las variables y bucles de OnInit y OnTimer en un procedimiento. Si alguien quiere usarlo, porque este paquete estorbará. ¿Y si hay 20 o más procedimientos con el mismo contenido? Al fin y al cabo, es aquídonde se implementa.

En el minuto 1 funciona, pero no bloquea el inicio de la barra en el momento adecuado.

No lo he comprobado en otros plazos, porque la espera es larga.

En cuanto al estilo, ya no importa. Podemos sacar todo del temporizador y ponerlo en una función separada. Sólo pensaba en la solución en sí, no en futuras variantes de su integración.

 
Vladimir Pastushak:

El inicio del bar no siempre es exactamente puntual.

Sí, me he dado cuenta, lo arreglaré más tarde.
 
Реter Konow:

Estaba pensando que si una persona realmente tiene 600 instrumentos en la visión general del mercado y en cada tick comprueba la llegada de una nueva barra para cada instrumento y cada marco temporal, puede ser costoso...

Yo mismo no comercio, así que no sé exactamente cuántas veces debe llamarse esta función en la práctica.

El doble bucle sobre símbolos y plazos en la función de nueva barra puede aumentar la carga sólo si el número de símbolos y plazos es muy grande y la función se llama en cada tick de cientos de símbolos. Tal vez Dmitry tenga razón entonces.

He acortado un bucle de la función.

Olvídate de ello.

Aquí hay un ejemplo de mi clase específicamente para esta acción. Por supuesto, no es una obra maestra, pero es mía, y me entiende y funciona.

class CNewBar
{
protected:
  MqlRates newBarRates[];
public:
 bool newBar();
 bool newBar(ENUM_TIMEFRAMES timeframe, datetime & tOld);
};/********************************************************************/

bool CNewBar::newBar()
{
 static datetime timeLastBar;
  if(CopyRates(_Symbol, PERIOD_CURRENT, 0, 1, newBarRates) < 0)
   return(false);
  bool ret = timeLastBar != newBarRates[0].time;
   if(ret)
    timeLastBar = newBarRates[0].time;
   return(ret);
}/********************************************************************/

bool CNewBar::newBar(ENUM_TIMEFRAMES timeframe, datetime & tOld)
{
  if(CopyRates(_Symbol, timeframe, 0, 1, newBarRates) < 0)
   return(false);
    datetime tNew = newBarRates[0].time;
   bool ret = tOld != tNew;
   if(ret)
    tOld = tNew;
   return(ret);
}/********************************************************************/

Si desea determinar sólo en la TF actual, tiene que llamar a la función sin parámetros.

En consecuencia, si se coloca en .mqh, la biblioteca debe adjuntarse.

#include <путь_папка\имя_файла.mqh>
CNewBar newBar;

y se llama en OnTick().

if(newBar.newBar())
 Print("Новый бар на текущем ТФ");

Si necesitamos definir otros TFs, declaramos variables para cada periodo y símbolo, si es necesario, a nivel de variables globales o estáticas.

static datetime oldD1 = 0, oldH1 = 0;

if(newBar.newBar(PERIOD_H1, oldH1) && newBar.newBar(PERIOD_D1, oldD1)
 Print("Открылся новый день и новый час");

Este enfoque es eficaz cuando se trabaja en el TF que no es el requerido y protege de los problemas con el cambio accidental del gráfico en el que trabaja el Asesor Experto.

 
Nikolai Semko:

Peter, a mí tampoco me funciona. Aunque el algoritmo es bastante rápido, es una pérdida de tiempo. Pero todavía no funciona. No hay tiempo para resolverlo.
Tienes un extraño estilo de programación. Puedes poner todo esto con todas las variables y bucles de OnInit y OnTimer en un procedimiento. Si alguien quiere usarlo, todo esto se interpone. ¿Y si hay 20 o más procedimientos con el mismo contenido? Se aplicaaquí .


¿Quizás no sabes lo que significa "rápido"?

 
Alexey Viktorov:

Oh, escúpelo...

Aquí hay un ejemplo de mi clase específicamente para esta acción. Por supuesto, no es una obra maestra, pero es la mía y me funciona.

Si se quiere determinar sólo en la TF actual, se llama a la función sin parámetros.

Por lo tanto, si se coloca en .mqh, la biblioteca debe estar conectada.

y se llama en OnTick().

Si quiero determinar otros TFs, entonces a nivel de variables globales o estáticas, se declaran variables para cada periodo y símbolo, si es necesario.

Este enfoque es eficaz cuando se trabaja en el TF que no es el requerido y protege de los problemas relacionados con el cambio accidental del gráfico en el que opera el Asesor Experto.


No tienes ni idea de la idiotez que has demostrado, es simplemente absurdo. Pero no voy a mostrar exactamente en qué lugar, porque todos ustedes no están interesados en mi opinión)))

 
Alexey Viktorov:

Oh, escúpelo...

Aquí hay un ejemplo de mi clase específicamente para esta acción. Por supuesto, no es una obra maestra, pero es la mía y me funciona.

Si se quiere determinar sólo en la TF actual, se llama a la función sin parámetros.

En consecuencia, si se coloca en .mqh, la biblioteca debe adjuntarse.

y se llama en OnTick().

Si es necesario determinar otros TFs, entonces a nivel de variables globales o variables estáticas se declaran para cada periodo y, si es necesario, para el símbolo.

Este enfoque es eficaz cuando se trabaja en el TF que no es el deseado y protege de los problemas con el cambio accidental del gráfico en el que trabaja el Asesor Experto.

La tarea consistía en identificar el cambio de cualquier símbolo de la visión general del mercado para cualquierf .

Saludos.
 
Alexey Viktorov:

Oh, escúpelo...

Aquí hay un ejemplo de mi clase específicamente para esta acción. Por supuesto, no es una obra maestra, pero es la mía y me funciona.

Si se quiere determinar sólo en la TF actual, se llama a la función sin parámetros.

Por lo tanto, si esto se coloca en .mqh entonces la biblioteca debe ser incluida

y se llama en OnTick().

Si quiero determinar otros plazos, entonces a nivel de variables globales o variables estáticas se declaran para cada período y símbolo, si es necesario.

Este enfoque es eficaz cuando se trabaja en el TF que no es el deseado y protege de los problemas con el cambio accidental del gráfico en el que trabaja el Asesor Experto.

¿Funciona bien su solución? Si está bien, entonces todo está bien.

¿Y en el caso de cientos de instrumentos, no habrá solapamiento?