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

 

Probablemente, así es como funciona:

Comience, cree una variable global y un objeto en el gráfico (en algún lugar fuera del gráfico, para no borrarlo accidentalmente a mano) y "escriba" una clave común en ambos (obtenida por GetTickCount, por ejemplo).

Las repeticiones en otros gráficos comprueban la presencia de la variable global. si existe - busca un objeto con la misma clave en NUESTRO gráfico. si no se encuentra - otro gráfico - no funciona y grita con la alerta que es una repetición.

Dado que los objetos del gráfico y las variables globales deben sobrevivir a los reinicios y recompilaciones, la comprobación siempre funcionará correctamente).

 
ForexTools:

Probablemente, así es como funciona:

Comience, cree una variable global y un objeto en el gráfico (en algún lugar fuera del gráfico, para no borrarlo accidentalmente a mano) y "escriba" una clave común en ambos (obtenida por GetTickCount, por ejemplo).

¡Reejecución en otros gráficos comprueba la presencia de la variable global. si existe - busca un objeto con la misma clave en NUESTRO gráfico. si no se encuentra - otro gráfico - no funciona y grita con la alerta que se reejecute!

Dado que los objetos del gráfico y las variables globales deben sobrevivir a los reinicios y recompilaciones, la comprobación siempre funcionará correctamente).

Ocurre que los objetos no se guardan si el terminal se bloquea.
 
ForexTools:

El Asesor Experto debe trabajar con una sola "instancia". Es decir, la primera vez que lo adhiero a cualquier gráfico y funciona. Si luego vuelvo a adjuntarlo accidental o intencionadamente a otro gráfico, el segundo adjunto debería detectar 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 va a trabajar su init primero para crear esta variable global.

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


Y si en la inicialización para abrir el archivo para escribir, en la desinicialización para liberarlo. Lógicamente, una nueva instancia de EA no podrá abrir un archivo que fue abierto para escribir anteriormente. Si, por ejemplo, en cinco iteraciones, obtenemos constantemente un error de apertura de un archivo para escribir, significa que una instancia del EA ya está abierta.

 
exhumer:
Una nueva instancia del EA no podrá abrir un archivo que ya estaba abierto para escribir.

después de que el terminal se haya estrellado y reiniciado, el archivo estará disponible para la primera persona que lo abra, no para la primera persona que lo reinicie :(

Una vez más, repito: necesitas un gráfico específico - un Asesor Experto específico.

 
ForexTools:

tu idea no funciona.

¿Cómo que no funciona? Aunque esta es una afirmación vacía.
Sobre todo porque no tienes más que una idea (y mucho menos una "receta concreta")

¿qué puedo hacer con su "solución"? ;)

Es exactamente una idea. Si no tiene suficientes conocimientos para entender cómo comprobarlo, escríbalo. En realidad lo hiciste, pero lo escribiste como una afirmación. Al menos el comentario "¿qué puedo legislar con su "solución"? ;)" parece exactamente una reclamación. Y luego, por alguna razón, un conjunto de trivialidades

"debería" no significa "será", "hay" es "dónde"... si "no funcionó"

- ¡¿Cómo puedes dar consejos sobre soluciones no probadas?!

Mire, si sólo se ofrecieran soluciones probadas, usted seguiría buscando raíces con un palo. ¿De quién es el problema, mío o suyo? ¿Por qué demonios calificas la sugerencia de una idea como una recomendación de una solución?

Desde mi punto de vista el enunciado de la pregunta es el siguiente: yo te doy una idea, tú la pruebas, si funciona me informas de que funciona, a modo de mínimo agradecimiento.

P.D. Hombre, tendrías que haber mirado un archivo chr por curiosidad, ya que pretendes ser un profesional del trabajo con MT.

 
TheXpert:
Entonces archiva sin rodeos como una taquilla y no hay problema.
¿Por qué no utilizar esta opción, la más sencilla? El Asesor Experto crea un archivo de control, y comprueba si el archivo existe antes de hacerlo. Si el archivo del mismo nombre ya existe, el Asesor Experto no se iniciará. Si el EA sale del gráfico correctamente, borrará el archivo. Si se produce un fallo, el archivo restante bloquea el lanzamiento de cualquier instancia del EA y se borra manualmente para poder seguir trabajando.
 

Candid:

¿De quién es el problema, mío o tuyo? ¿Por qué demonios calificas tu sugerencia de una idea como una recomendación de una solución?

Porque eso es exactamente lo que pedí en mi primer post, por eso tomé tu idea como tal.

Parece que pretendes ser un profesional del trabajo con MT.

por eso veo la validez de muchas "ideas" incluso DOTO como su..... ;)

si me equivoco, escribe algún código de EA que no haga nada más que evitar que tu segunda copia se ejecute. comprueba que realmente funciona al recompilar y reiniciar el terminal y publica el código aquí - todo caerá en su sitio ;)

 
granit77:
Cuando se produce un fallo, el archivo restante queda bloqueado por....

Hay dos gráficos, uno de ellos tiene un EA que funciona con el archivo, y el segundo tiene una copia del EA que no funciona debido a un archivo bloqueado.

el terminal está apagado o cerrado.

(re)iniciar el terminal. en él dos EAs comienzan a comprobar para leer el archivo. ¿hay alguna garantía de que el verdadero primero lo agarre primero y no el que se bloqueó la última vez? :(

Por tercera vez repito: necesito un enlace entre CHART y EXPERT, pero no bloquear un Asesor Experto por otro.

 
granit77:
¿Por qué no utilizar esta opción, la más sencilla?
No, no, eso es sólo si no importa qué instancia ejecutar.