Errores, fallos, preguntas - página 930

 
kPVT
Gracias por el consejo.
Por favor, comparta sus experiencias. Específicamente:
1. Mecanismo para generar nombres únicos. ¿Enumeración directa de nombres existentes por autoincremento?
2. Mecanismo de comprobación de la autenticidad de los objetos. Es decir, no sólo comprobar si hay un objeto con este nombre, sino todos sus parámetros, por ejemplo, tamaños, tipos, texto, etc. Pensando en el ahorro de recursos. Es bastante laborioso realizar un número colosal de comprobaciones para cada propiedad de cada objeto en cada tic. Por supuesto, si había o el bloqueo del objeto de cualquier cambio desde el exterior (excepto para el creador de EA), o el cálculo del hash del objeto a FAST (en un "si") comprobar el objeto para la autenticidad.
 

Por favor, confirme la reproducción de la situación con la falta de redibujado del gráfico.

Se adjunta un simple experto. Condiciones:

1. Del 2013.01.07 al 2013.02.11. Lo más probable es que no esté afectado.

2. pruebas en modo visual.

3. En la primera carrera, reduce la velocidad al mínimo:

4. En la siguiente ejecución después de la inicialización, pulse F12 (genere una marca).

Otra condición muy importante es que el terminal debe estar funcionando en modo offline. Para un experimento limpio, intente desconectar el ordenador de la red (desconecte todos los adaptadores de red).

Observa.

1. Visualización tardía de los valores del spread en el gráfico.

¿La función ChartRedraw funciona mal o he hecho algo mal? Si se mueve el gráfico con el ratón (moverlo horizontalmente (tiempo), se redibuja correctamente.

Archivos adjuntos:
1.mq5  4 kb
 
voix_kas:
kPVT
Gracias por el consejo.
Por favor, comparta su experiencia. Específicamente:
1. Mecanismo para generar nombres únicos. ¿Enumeración directa de nombres existentes por autoincremento?
2. Mecanismo de comprobación de la autenticidad de los objetos. Es decir, no sólo comprobar si hay un objeto con tal nombre, sino todos sus parámetros, por ejemplo, tamaños, tipos, texto, etc. Pensando en el ahorro de recursos. Es bastante laborioso realizar un número colosal de comprobaciones para cada propiedad de cada objeto en cada tic. Por supuesto, si hubiera un bloqueo del objeto de cualquier cambio desde el exterior (excepto el asesor-creador), o el cálculo del hash del objeto para comprobar la autenticidad del objeto RÁPIDO (en un "si").

Sin pretender que sea cierto ni óptimo.

1.puede utilizar la biblioteca estándar que utiliza un número aleatorio + nombre para el nombre del objeto, por ejemplo18467RadioGroupItem0Button, 06334ClientBack. Y no es necesario que borres los objetos tú mismo.

Todavía no me he hecho amigo de la biblio estándar y lo hago así, sin problemas.

int nOBJ=0;//счетчик однотипных объектов
int OnInit()
  {
   //уникальное имя на основе текущего времени в момент инициализации (в 36 системе для краткости, пример: MI7E9G)
   basedName=ULongTo36Base(TimeLocal());
   leftName="LeftBorder "+basedName;//имя для единичного объекта
   ObjectCreate(0,leftName,OBJ_VLINE,0,time,0);
   for(nOBJ=1;nOBJ<=100;nOBJ++)//создание 100 однотипных объектов
    ObjectCreate(0,(string)nOBJ+basedName,OBJ_TREND,0,time,price);
   return(0);
  }
void OnDeinit(const int reason)
  {
   for(int del=1; del<=nOBJ; del++)
      ObjectDelete(0,(string)del+basedName);
   ObjectDelete(0,leftName);
   return;
  }

Aquí la discreción será de 1 segundo. Si añade varios indicadores idénticos desde la plantilla, se producirán colisiones. En este caso, puede añadir parámetros del indicador a basedName, o tal vez milisegundos a TimeLocal(), número aleatorio o cualquier otra cosa. En general, hay variantes.

2. autenticidad del objeto: su nombre único. Dos objetos, incluso de diferentes tipos con el mismo nombre, no pueden estar en una misma ventana de gráfico. ¿Por qué hay que comprobar todas las propiedades del objeto? Explícate.

¿Desea comprobar la modificación manual de las propiedades del objeto? Existe el eventoCHARTEVENT_OBJECT_CHANGE.

Para controlar el borrado accidental, cuando se accede a un objeto, hay que comprobar su existencia y restaurarlo si es necesario (por cierto, hay un evento de borrado de objetos - yo no lo uso).


Si todavía quiere utilizar Comment para dar salida a la información formateada, puede, por ejemplo, especificar la longitud requerida de la cadena y, conociendo esta longitud, insertar la descripción y el valor del parámetro (definiendo sus longitudes) en los lugares adecuados.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
voix_kas:
kPVT
Gracias por el consejo.
Por favor, comparta sus experiencias. Específicamente:
1. Mecanismo para generar nombres únicos. ¿Enumeración directa de nombres existentes por autoincremento?
2. Mecanismo de comprobación de la autenticidad de los objetos. Es decir, no sólo comprobar si hay un objeto con este nombre, sino todos sus parámetros, por ejemplo, tamaños, tipos, texto, etc. Pensando en el ahorro de recursos. Es bastante laborioso realizar un número colosal de comprobaciones para cada propiedad de cada objeto en cada tic. Por supuesto, si había o bien el bloqueo del objeto de cualquier cambio desde el exterior (excepto creador EA), o el cálculo del hash del objeto a FAST (en un "si") comprobar el objeto para la autenticidad.
Tal vez esto ayude: mirar el mercado a través de las clases ya hechas
 

kPVT

Gracias por el consejo. Intentaré utilizar CHARTEVENT_OBJECT_CHANGE para controlarlo.

Dima_S

Gracias. Pero no veo la necesidad de usar clases estándar.

Muy amablemente, por favor, pruebe la función ChartRedraw utilizando un simple Asesor Experto listo en mi post anterior. Desgraciadamente, por alguna razón da un tick de retraso. Es decir, en el ejemplo se muestra el valor del spread para el tick anterior, mientras que el procesamiento y la salida es en el tick actual.

 
voix_kas:

kPVT

Gracias por el consejo. Intentaré utilizar CHARTEVENT_OBJECT_CHANGE para controlarlo.

Dima_S

Gracias. Pero no veo la necesidad de usar clases estándar.

Muy amablemente, por favor, pruebe la función ChartRedraw utilizando un simple Asesor Experto listo en mi post anterior. Desgraciadamente, por alguna razón da un tick de retraso. Es decir, en el ejemplo se muestra el valor del spread para el tick anterior, mientras que el procesamiento y la salida es en el tick actual.

De nada. Si hubieras leído el artículo, habrías encontrado las respuestas a las dos preguntas))
 

Los programas grandes no se pueden descargar e instalar desde el Market. Presta mucha atención. La razón es desconocida.

Puede haber algunas restricciones. No hay información oficial sobre ellos.

 

¿Puedes darme una pista?

1. ¿un indicador llamado desde recursos no puede recibir parámetros de entrada?
2. Si no es así, ¿hay alguna posibilidad y cómo evitarlo (con muletas)?
 

Puede. Es lo mismo que iCustom().

handle=iCustom(_Symbol,_Period,"::Indicators\\Examples\\ZigZag.EX5",12,5,3);
 
Karlson:

Puede. Es lo mismo que iCustom().

Exactamente, puede. Se ha cometido un error en el código.

Gracias.