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
No hay problema, angevogeur
El código era originalmente este:
Simplemente lo he modificado a esto:
Como puedes ver, no cambié la "carne" de las funciones. Simplemente hice las modificaciones necesarias para ajustarse a la nueva funcionalidad. Una cosa que todavía tengo un poco confusa es el cambio de start() a OnStart() o OnTick(), lo que sea (lo he olvidado en este momento, pero sigo usando start() sin problemas. Debo mencionar que este es un indicador personalizado. Otra cosa de la que me quejo es de las limitaciones de lo que puedes usar dependiendo de si estás codificando un EA, un indicador o un script. Hay algunas cosas que tienen sentido (como no permitir que se implementen operaciones a menos que estés codificando un EA) y otras que no (como la prohibición de usar un MessageBox en un indicador). Otra cosa que realmente me molesta es no tener eventos disponibles para cosas como aperturas y cierres de operaciones. Esto sería muy útil para lo que estoy montando ahora mismo.
Un ejemplo de lo que estoy consiguiendo con mi última declaración es la siguiente: Quiero ser capaz de mostrar una señal de compra si se cumplen ciertos criterios, mostrar una señal de cierre de la operación de compra si se cumplen ciertos criterios, pero también quiero permitir que mi usuario sea capaz de cancelar la señal de compra y esperar a otra si lo desean y lo mismo para la señal de cierre. Si deciden cerrar la operación, quiero que las señales de Compra y Cierre desaparezcan y que el indicador esté pendiente de los criterios de entrada para otra operación. Las partes de cancelación funcionan perfectamente pero no puedo detectar los eventos de Apertura y Cierre porque MQL4 no proporciona la mensajería para ello.
Si has mirado mi perfil, habrás visto que no soy en absoluto un programador novato. El lenguaje simplemente no proporciona toda la funcionalidad que un profesional espera y necesita de una plataforma de desarrollo moderna. En otro orden de cosas, no consigo que la depuración funcione, lo cual es una queja importante. Seguí la documentación, pero cuando traté de poner en marcha el depurador obtuve un gráfico que hizo aparecer el diálogo de propiedades para inicializar mi indicador, pero cuando pulsé Okay para terminar la configuración del indicador, el gráfico desapareció y eso fue todo. Tal vez las cosas se pierden en la traducción del ruso al inglés y se me escapa algo o tal vez el "pastel" no está del todo cocido. Como profesional sé lo monumental que es la tarea de crear un lenguaje y un entorno de desarrollo como éste. Mis observaciones se refieren más a la naturaleza de las informaciones para el personal de desarrollo que a las quejas.
Prof
No hay problema, angevogeur
El código era originalmente este:
Prof
Si no has declarado las variables que estoy estableciendo y tampoco tienes los métodos que estoy llamando declarados y desarrollados, no compilará. No puede. Habría esperado que lo supieras. He posteado lo que creía que pedías, la solución que arreglaba mi problema. En cualquier caso, si usted está con MetaQuotes y está tratando de averiguar lo que está pasando con MetaTrader y solucionarlo, he publicado más abajo. Comentar el bloque if en init(), declarar MA_Display_Time_Frame globalmente como un entero y añadir estos métodos :
Dado que esto está destinado a ser un producto comercial que no es todo el código del indicador por cualquier medio, pero esto debe compilar y potencialmente causar el problema utilizando el original init() y deinit() métodos. Es suficiente para crear un par de etiquetas y botones. Como mencionó uno de los carteles, el fallo era intermitente. Sin embargo, estaba relacionado con cualquier acción que provocara la desinicialización del indicador, como cambiar las propiedades del indicador, cambiar los marcos temporales o detener y reiniciar el terminal. Si quiere probar a cambiar las propiedades, añada estos externos a los globales:
Si añades los externos, no es necesario comentar el bloque if que hace referencia a ellos.Eso debería ser suficiente para que compile e intente reproducir el problema. El problema no se ha producido desde que cambié las antiguas funciones de inicialización y desinicialización y pasé a las nuevas versiones. Si necesitas algo más házmelo saber. Estaré atento al hilo.
Tuve una situación similar, el indi funcionaba bien cuando se dejaba caer en el gráfico.
Funcionó bien después del cambio de parámetros, funcionó bien después del cambio de Tf.
Después de cerrar el MT4 y reiniciarlo, el indi no aparecía.
Estaba en la lista de indicadores del gráfico, pero no funcionaba.
Después de abrir la ventana de parámetros y hacer clic en el botón OK, el indi desapareció inmediatamente de la lista.
Intenté todos los trucos, incluyendo los descritos en los posts anteriores, pero nada funcionó.
Resultó ser el problema de la división por 0.
La simple condición: if(x!=0) resolvió el problema.
Sí, acabo de tener el mismo problema con otro indi.
Sin el "if" cada vez que se inicia la plataforma, el indi tiene el problema de la división por 0,
el nuevo MT4 parece no tener información almacenada hasta que se marque.
La otra solución sería usar el OnCalculate() en lugar de start() o OnStart(), supongo.
Pero, eso es algo para quejarse a MetaQuotes.
Hay que usar el truco del retorno (0).
Alguien va a elaborar un poco si hay interés.
Hay que usar el truco del retorno (0).
Alguien se explayará un poco si hay interés.
Bueno, los indicadores antiguos que se pueden encontrar en todas partes en el Internet no tienen su código modificado automáticamente.
Si alguien sabe retocar los códigos y entiende el problema, puede hacerlo por su cuenta.
Todos los demás están obligados a sentir la incomodidad de no ver sus indi's cada vez que abren la MT4.
Si tienen una plantilla, pueden usarla para restaurar el indi, pero eso significa hacer esto cada vez.
Las plantillas son otra historia, en el nuevo Built 625.
Chicos,
Todos ustedes están fuera de la marca. Lo que describís es un problema de sincronización que siempre ha sido un problema. Puedes solucionarlo de forma muy sencilla con esto:
Cualquier error de división por cero que puedas estar obteniendo se debe a que estás intentando hacer cálculos antes de que el servidor se haya asentado. Si estás haciendo cálculos en la función de inicialización - ¡NO! Pon el código anterior en tu start() o OnStart() y ENTONCES haz lo que necesites. Dadas, tratar de hacerlo tan simple como lo estás haciendo te va a morder a lo grande. Estás teniendo suerte con tu indi.
Cuando un indi desaparece, tienes un fallo de inicialización. Si miras tus logs verás "fallo de inicialización global". Tienes que averiguar por qué te sale eso y solucionarlo. Si no lo haces, todo lo que has hecho es poner una tirita en un corte que necesitaba puntos de sutura y se volverá contra ti.
Me parece que este error no tiene nada que ver con OnInit() y la descripción del error es engañosa.
Con una sola línea de código
Dará el error de matriz fuera de rango.
Cambia el marco temporal y obtendrá Global initialisation failed y el indicador será eliminado del gráfico