Cómo asegurarse de que el EA sólo funciona en el gráfico en el que se lanzó por primera vez

 

Necesito que el EA funcione con una sola "instancia". Es decir, lo adjunto a cualquier gráfico por primera vez y funciona. Si luego vuelvo a adjuntarlo accidental o intencionadamente a otro gráfico, el segundo adjunto debería reconocer que ya está en marcha y no hacer nada.

Dejar la etiqueta en una variable global probablemente no funcionará. Si tengo dos EAs adjuntos y vuelvo a compilar su texto, no está claro cuál funcionará primero con su init, donde se podría crear esta variable global.

¿Quién puede sugerir qué? ¿Alguna idea sobre cómo hacerlo?

 

Bueno recompilar es muletilla, pero solucionable, pero que hacer en caso de reinicio de la terminal...

Y las variables globales son malas, porque si el terminal se bloquea, habiendo escrito previamente las variables globales en el archivo, entonces todo se bloqueará.

Como alternativa, puedes guardar un asa de algo.

 

TheXpert:

.... cualquier cosa

esa es la cuestión :((
 
pero no encadenar el EA dos veces al gráfico, ¿no es factible?
 
Techno:
pero simplemente no vincular el EA con el gráfico dos veces, ¿es imposible?

Necesito una GARANTÍA de que ni yo ni nadie lo hará accidental o deliberadamente ;)

Imagínese: el EA recibe órdenes "externas" para abrir órdenes. Incluso una copia extra es (teóricamente) una orden extra.

 
ForexTools:
esa es la cuestión :((

No, esos son los detalles de la implementación, el problema principal es reiniciar y recompilar.

Ah, hay un tema, sólo hay que comprobarlo -- ¿se restablece el EA al reiniciar y recompilar, si antes se estrellaba, por ejemplo, por la división por 0?

Si no es así, ese es el camino a seguir.

 
TheXpert:

No, eso es un detalle de implementación, el problema principal es la recarga y la recompilación.


Recompilar no debería ser el problema.
 
PapaYozh:

El problema no debería surgir durante la recompilación.

¿cómo es eso? digamos que tenemos tres copias del EA (sin trucos - sólo limpias). lo recompilaste. el "comando" fue al terminal. los EAs empezaron a inicializarse.... ¿en qué orden se reiniciarán?
 
ForexTools:

Digamos que tenemos tres copias del EA (sin trucos - sólo limpios). lo recompiló. el "comando" fue a la terminal. los EAs comenzaron a iniciar.... ¿en qué orden se reiniciarán?
luego resulta que uno de ellos comerciaba, pero después del reinicio, el derecho a ser el líder se le dará al otro y el primero perderá este derecho, así que ¿qué diferencia hay si son los mismos? lo principal es que uno comerciaba. Utiliza una variable global y ya está. En la función inite escribe una expectativa aleatoria para cada EA a sleep(), el que primero se despierta, cuenta la variable global y la borra, al deinit la restaura de nuevo. El primero que cuente y borre funcionará. En resumen, se genera un número aleatorio para sleep()
 
ForexTools:

Digamos que tenemos tres copias del EA (sin trucos - sólo limpios). lo recompiló. el "comando" fue a la terminal. los EAs comenzaron a iniciar.... ¿en qué orden se reiniciarán?

¿Y no descarta tener los mismos gráficos? Es decir, ¿se debe procesar el inicio del EA en 2 gráficos con el mismo símbolo y el mismo período?
 
Techno:
Luego resulta que uno de ellos cambió, pero después de la recarga, el otro obtendrá el derecho a liderar y el primero perderá este derecho, ¿y qué diferencia hay si son los mismos? Utiliza una variable global y ya está. En la función inite escribe una expectativa aleatoria para cada EA a sleep(), el que primero se despierta, cuenta la variable global y la borra, al deinit la restaura de nuevo. El primero que cuente y borre funcionará. En resumen, se genera un número aleatorio para sleep()

Por cierto, sí. Si 2 instancias de EA son inaceptables, entonces no importa qué EA se inicie primero.