Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1011
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¿Cuál es la mejor manera de escribir el algoritmo?
Tarea:
Un Asesor Experto se ejecuta en diferentes gráficos.
Necesito tener un archivo separado con información minuto a minuto sobre la cuenta, el saldo, el patrimonio, etc.
Ahora resulta que todos los Asesores Expertos escriben toda la información en un archivo. Como resultado, tenemos un montón de entradas innecesarias.
Cuál es la posible solución original, para que sólo un bot haga registros en el fichero (y, si se borrara, el otro bot empezaría a hacer registros, etc.)
Crear un objeto gráfico en OnInit() con el nombre del EA, o cualquier otro objeto. Tal vez, el EA ya está creando un objeto, puede utilizarlo, por ejemplo, "MyEA":ObjectCreate(0,"MyEA",OBJ_...,...)
En OnTick() donde se escribe al fichero tenemos que comprobar el primer ID del gráfico con esta misma etiqueta = significa que es el primer Asesor Experto instalado en el terminal, no nos interesa el resto.
Tenemos que usar la sobrecarga:
Obtenemos el primer gráfico/símbolo con un Asesor Experto instalado en él
Luego lo comparamos con el primer Asesor Experto antes de escribirlo en un archivo:
No es una construcción fácil, pero es mejor que escribir en una variable global
Toma el MA estándar, cambia el tipo de datos del buffer, compila y comprueba en la ventana de datos del terminal (Ctrl+D)
ChartID() se escribe en las variables globales del terminal con un error. ¿qué es esta tontería?
Prueba este código:
El resultado de la ejecución de este código
Cree un objeto gráfico en OnInit() con el nombre del EA o cualquier otro objeto, quizás el EA ya crea un objeto, entonces puede usarlo, supongamos "MyEA": ObjectCreate(0,"MyEA",OBJ_...,...)
En OnTick() donde se escribe al fichero tenemos que comprobar el primer ID del gráfico con esta misma etiqueta = significa que es el primer Asesor Experto instalado en el terminal, no nos interesa el resto.
Tenemos que usar la sobrecarga:
Obtenemos el primer gráfico/símbolo con un Asesor Experto instalado en él
Luego lo comparamos con el primer Asesor Experto antes de escribirlo en un archivo:
No es una construcción fácil, pero es mejor que escribir en la variable global
Sí, buena idea.
Gracias.
Pregunta, ¿qué pasa si el EA ha sido borrado (por ejemplo, debido a un error), pero el objeto ha permanecido. ¿Qué hacer, si el gráfico se cierra completamente, tenemos que reasignar el EA "principal"?
Sí, es una buena idea.
Gracias.
Pregunta entonces: ¿Qué pasa si el EA ha sido borrado (por ejemplo, debido a un error), pero el objeto ha permanecido. ¿Qué hacer si el gráfico se cierra en su totalidad, necesitamos reasignar de alguna manera el Asesor Experto "principal"?
Sólo hay un caso de error - si el Asesor Experto fue borrado accidentalmente y el objeto fue dejado, pero en mi memoria, no recuerdo tal error en MT4. En todos los demás casos, se reasignará al perito principal.
P.D. Trate de comprobar que OnDeInit() se emitirá en caso de error en el Asesor Experto y auto-borrado del gráfico. Probablemente, puedes comprobarlo fácilmente creando una variable y contando los ticks y dividiéndolos por 10/0 en el 11º tick.
En OnDeInit() use Print y vea la causa de la desinicialización, y si ocurre, entonces por esta causa/número borre el objeto "MyEA" del gráfico
Puedes escribir sobre el resultado, porque no tengo tiempo para comprobarlo yo mismo
Cree un objeto gráfico en OnInit() con el nombre del EA o cualquier otro objeto, quizás el EA ya crea un objeto, entonces puede usarlo, supongamos "MyEA": ObjectCreate(0,"MyEA",OBJ_...,...)
En OnTick() donde se escribe al fichero tenemos que comprobar el primer ID del gráfico con esta misma etiqueta = significa que es el primer Asesor Experto instalado en el terminal, no nos interesa el resto.
Tenemos que usar la sobrecarga:
Obtenemos el primer gráfico/símbolo con un Asesor Experto instalado en él
Luego lo comparamos con el primer Asesor Experto antes de escribirlo en un archivo:
No es una construcción fácil, pero es mejor que escribir en una variable global
Creo que se equivoca. Los GVs no se escriben en el disco cada vez. Si no fuera así, no habría necesidad de forzar a GV al disco.
Y encima, revisando todas las cartas en busca de EA y objeto... Vitaly, eso es una pena...Creo que se equivoca. Los GVs no se escriben en el disco cada vez. De lo contrario, no necesitaríamos la función de escritura forzada de GV en el disco.
Sí además de recorrer todos los gráficos en busca de EA y objeto... Vitaly, eso es una pena...Sí, lo son:GlobalVariableSet("GV",ID);
perfiles -> gvariables.dat
También se escriben como:GlobalVariableSet("GV",ID);
perfiles -> gvariables.dat
Cuando lo creas, puede ser, pero cuando lo sobrescribes antes de desactivar la aplicación que escribe allí, tienes que comprobarlo. Soy demasiado vago. Aun así, de forma puramente teórica, si se escribiera en el disco cada vez, la función anterior sería un traqueteo.
No puedes hacer eso.
Busque un programa de Windows que sincronice los datos en carpetas. Y configúralo para que el Asesor Experto se copie en un nuevo terminal automáticamente.
Según tengo entendido, hay programas de este tipo, pero sólo funcionan con archivos, pero si es un documento de texto, no copia el contenido y no reemplaza los archivos, quizás no he encontrado un programa normal. Es una lástima que los desarrolladores no hayan considerado la opción de especificar la ruta desde donde descargar el archivo del Asesor Experto o del robot, pensé que podía especificar la ruta como se hace habitualmente, pero como señalas arriba es imposible.
Según tengo entendido hay programas de este tipo, pero solo funcionan con archivos, pero si es un documento de texto, no se copia el contenido y no se sustituyen los archivos, quizás no he encontrado un programa normal. Me parece mal que los desarrolladores no hayan tenido en cuenta la posibilidad de establecer la ruta desde donde obtener el archivo del robot o del experto. Pensé que sería posible establecer la ruta como se hace habitualmente, pero como has señalado arriba no es posible.
Observa en este post las palabras "Todos los terminales tienen carpetas compartidas".
Esto no es posible. Foro sobre el comercio, los sistemas de comercio automatizados y las pruebas de las estrategias de comercio
¿Qué debo hacer si quiero utilizar un producto del Mercado?
Sergey Tabolin, 2019.11.23 08:17
¿De verdad crees que no sé cómo y dónde instalar? )))
Todos los terminales tienen carpetas comunes
He descargado un indicador gratuito del mercado. Se une al hardware.
¿Por qué funciona en un hardware, pero no en el otro?
Conclusión obvia: está ligado, al menos no sólo al hardware...
Busca información sobre cómo se hace y ya está... Esto se llama enlace de carpetas.