Errores, fallos, preguntas - página 2962

 
Roman:

Para hacerlo en caliente, utilice entonces el mapeo de archivos con la sincronización de eventos.

Sugerencia - en MQL puro, piense... Se me acaba de ocurrir

 
A100:

Sugerencia - en MQL puro, piense... Se me acaba de ocurrir

Envuelva la variable en una clase y obtenga el descriptor del objeto.
Cualquier forma de pasar el descriptor al Asesor Experto, lo obtiene directamente del objeto. ))
No sé, no lo he probado, la idea también se me ocurrió. Pero no soy fanático de las clases, yo usaría el mapeo.
Todo está disponible en WinApi estándar.

Документация по MQL5: Основы языка / Типы данных / Указатели объектов
Документация по MQL5: Основы языка / Типы данных / Указатели объектов
  • www.mql5.com
Указатели объектов - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Roman:

Se crea una variable int en el indicador, se inicializa y se almacena el número allí.
En el indicador defina una función personalizada que devuelva esta variable.
Defina la función con la palabra clave export.
Importe esta función en el Asesor Experto desde name_indicator.ex4
Llame a la función cuando la necesite.
No he medido la velocidad.

Este esquema no parece funcionar. Muestra un ejemplo elemental, por favor.

 
Nikolai Semko:

Si el uso de user32.dll no es crítico, aquí hay otra opción. No recuerdo nada sobre las medidas, pero escribí ahí abajo que parece que funciona rápido. Ahí has preguntado por qué necesito velocidad :))
solución es universal (puedo usarla entre terminales también), no se basa en eventos. Tendrás que trabajar con temporizador. Sin embargo, el tiempo mínimo entre eventos enOnChartEvent tampoco puede ser inferior a 1/64 segundos.

Gracias, pero no funciona, porque la siguiente situación es posible.

El Experto1 y el Experto2 leen los datos del Indicador1, el Experto3 lee los datos del Indicador2.


El modelo basado en eventos no es necesario. Es decir, el Asesor Experto tiene que ser capaz de leer el número sólo cuando lo necesite. No es necesario captar el momento en que el indicador cambia el número. Así que, en esencia, la tarea es muy sencilla.


En el lenguaje de las variables globales, la solución es la siguiente

Indicador:

GlobalVariableSet(IndividualName, Number);


Asesor experto:

Number = (int)GlobalVariableGet(IndividualName);


Con esta implementación, la lectura es terriblemente lenta. Unas horas de observación de la variante en Recursos muestra que es unas 100 veces más rápida.

 
A100:

Sugerencia - en MQL puro, piense... Se me acaba de ocurrir.

Esperaré una solución.

 
fxsaber:

Gracias, pero no encaja, ya que es una situación posible.

El Experto1 y el Experto2 leen los datos del Indicador1, el Experto3 lee los datos del Indicador2.

Puedes poner un pequeño array de int en la cadena, y luego "divide y vencerás".

 
Nikolai Semko:

Puedes poner un pequeño array de int en la cadena, y luego "divide y vencerás".

El Indicador1 y el Indicador2 deben entonces estar sincronizados de alguna manera para poder escribir ambos números en una cadena común.

Se trata de una solución muy compleja.

 
fxsaber:

El Indicador1 y el Indicador2 deben entonces sincronizarse de alguna manera para poder escribir ambos números en la misma línea común.

Se trata de una solución muy compleja.

¿Dos indicadores y un EA en un solo gráfico?

 
fxsaber:

El Indicador1 y el Indicador2 deben sincronizarse de alguna manera para que ambos números puedan escribirse en la misma línea común.

Se trata de una solución muy compleja.

La función GlobalVariableSetOnCondition se inventó hace tiempo para la sincronización
Документация по MQL5: Глобальные переменные терминала / GlobalVariableSetOnCondition
Документация по MQL5: Глобальные переменные терминала / GlobalVariableSetOnCondition
  • www.mql5.com
GlobalVariableSetOnCondition - Глобальные переменные терминала - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Slava:
La función GlobalVariableSetOnCondition se inventó hace mucho tiempo para sincronizar

Soy consciente de ello, sé cómo usarlo. Intentando huir de los globales, porque son terriblemente lentos.