Errores, fallos, preguntas - página 2930
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
Traducir un indicador de mt4 a mt5
El problema está en el tamaño deDRAW_HISTOGRAM
Cuando pongo "1" o "2" el tamaño cambia, pero "3" o "4" = el tamaño sigue siendo "2".
¿Por qué todo funciona en MT4, pero hay tal problema con MT5?
Resultado en mt4
Resultado en mt5, muestra sólo "2" de espesor, aunque tengo "3" en la configuración
Además, establecer la propiedad en OnInit() no ayuda
PlotIndexSetInteger(0,PLOT_LINE_WIDTH, 3);
Error crítico durante la depuración:
Resultado:
La última versión beta por el momento¿Alguien ha encontrado una manera de conseguir que el indicador se muestre en la ventana principal o en la subventana? Me refiero a los indicadores personalizados que se crean con IndicatorCreate y luego se pueden añadir al gráfico con ChartIndicatorAdd.
Probablemente podría meter el indicador en OBJ_CHART y ver dónde se encuentra.
¿Alguien ha encontrado una manera de obtener una propiedad de visualización de un indicador en la ventana principal o subventana? Me refiero a los indicadores personalizados que se crean con IndicatorCreate y luego se pueden añadir al gráfico con ChartIndicatorAdd a petición del usuario.
hizo algo similar.
El código busca en todos los gráficos abiertos un indicador por su mango. Devuelve el símbolo, el marco temporal, el identificador del gráfico, la subventana y el nombre del indicador.Aquí hay uno que encontré. No recuerdo si funciona o no. Por favor, compruébalo.
Supongo que podrías poner el indicador en OBJ_CHART y ver dónde se encuentra.
Lo probaré, de momento he tenido que hacer la opción de especificarlo por el usuario.
hizo algo similar.
A juzgar por el código, busca en todos los gráficos abiertos un indicador por su mango. Devuelve el símbolo, el marco temporal, el identificador del gráfico, la subventana y el nombre del indicador.Aquí hay uno que encontré. No recuerdo si funciona o no. Por favor, compruébalo.
No se ajusta a su pregunta: los indicadores creados por IndicatorCreate no se colocan en ninguna ventana, sino que se "asientan" dentro de ella, y la tarea consiste en colocar dicho indicador por su asa en la ventana. Ahora, MQL5 permite añadir un manejador arbitrario a la ventana principal o a la subventana utilizando la función ChartIndicatorAdd, independientemente de las "propiedades" del indicador (¡sin errores!), y el resultado se ve muy extraño cuando la adición no se realiza como se pretende.
Hay un problema mayor con los indicadores.
Algunos de ellos implementan el manejador OnCalculate según la versión simplificada con un array de entrada, y para ellos se puede seleccionar el tipo de precio para el cálculo. ¿Cómo sabe el programa MQL5 de terceros que el indicador espera este tipo de precio, que debe pasarse después de todos los parámetros durante la creación del indicador? Parece que no hay manera. Y si no lo hace, el indicador es dibujado por la #propiedad indicator_applied_price a la que no se puede acceder desde el exterior. Aquí hay un simple Asesor Experto que añade el indicador/AMA al gráfico de forma programada:
Si después cambiamos el timeframe del gráfico, obtenemos 2 indicadores AMA: uno a precio de cierre (creado programáticamente) y el segundo a precio de apertura (generado debido al cambio de timeframe y a la #propiedad indicator_applied_price PRICE_OPEN; tampoco está claro por qué esta propiedad no se recoge en iCustom).
Para seguir con el tema de los indicadores, adjunto el Expert Advisor que utilicé para descubrir y evitar el problema con los parámetros MqlParam.
La tarea del Asesor Experto es añadir el indicador "Examples/Price_Channel" al gráfico, si aún no está allí, con los mismos parámetros.
Para ello, creamos una instancia mediante iCustom/IndicatorCreate, obtenemos un array de sus parámetros a través de IndicatorParameters, y luego llamamos en el bucle IndicatorParameters a los indicadores que ya existen en el gráfico: si no hay coincidencia de los parámetros del array, el indicador se añade al gráfico, si hay coincidencia, el nuevo manejador simplemente se destruye.
El problema es que la igualdad de parámetros no siempre funciona como se espera. En particular, existe un caso de prueba de seguridad. Colocamos el Asesor Experto en cualquier gráfico vacío y hacemos clic - se crea la primera instancia del indicador. A continuación, cambiamos a cualquier otro marco temporal del gráfico (el antiguo indicador permanece) y hacemos clic de nuevo. Extrañamente, se crea la segunda instancia del indicador.
Del análisis de la ejecución y del registro se desprende que esto se debe a la equiparación errónea de las cadenas del nombre del indicador en los parámetros. Las cadenas tienen 260 caracteres, pero el terminal 0 se encuentra mucho antes. Después hay información de servicio o basura. Así que la comparación de cadenas "==" o StringCompare tiene en cuenta esta "basura" y obtenemos la desigualdad de las cadenas.
Si convertimos las cadenas en una matriz de caracteres, las matrices se convierten en una coincidencia completa. Si conviertes a una matriz corta, obtienes basura. En definitiva, un comportamiento poco coherente que no se describe en la documentación.
No estoy seguro de cuál es el error exactamente, si está en el principio del procesamiento de cadenas en MQL o en otra cosa.
Si alguien conoce los matices, por favor que me dé una pista.
Si alguien conoce los matices, por favor, que me dé un consejo.
Este es el tipo de característica que, aunque la conozcas, tienes que volver a plantear toda la capa en tu cabeza.
Aquí se hizo la definición de autodisponibilidad. Parece que funciona al cambiar de TF.