Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 850
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Corregir el indicador de la curva. Puede dibujar una línea sólo en el recálculo completo, que se realiza mediante un comando del menú contextual.
También hay uno en mql4.
Gracias.
Lo resolvió con una muleta). Necesitaba actualizar el indicador después de arrastrar manualmente una línea vertical, de la que toma el tiempo. He utilizado la función de arrastrar un objeto y he puesto en ella la función de cambiar de TF con un retorno a la inicial. Pero por alguna razón la actualización se retrasa, unos segundos. La función de cambio de TF es demasiado lenta, no la entiendo.
Esta función es asíncrona. Sólo devuelve el resultado del comando en la cola de eventos.
Para actualizar inmediatamente, es necesario ejecutar el comando ChartRedraw() después del comando de cambio de gráfico
Este es, por supuesto, un enfoque equivocado. Si desea actualizar el gráfico sólo después de la finalización del desplazamiento de la línea, el bucle de recálculo del indicador debe ser llamado no desde OnCalculate() sino desde ChartEvent() - el desplazamiento de la línea es capturado - se llama a la función de recálculo del indicador, que ejecutará todo el ciclo de recálculo de la línea con los nuevos datos (la línea es necesaria para algunos datos, ¿no?).
¿O simplemente el indicador no está hecho correctamente y no actualiza la barra de cero en los datos actuales, y tú lo has pateado?
¿Puede alguien ayudar a arreglar el código de EA en MT5?
He leído los manuales, pero no puedo superar 2 barnices al compilar.
la declaración de 'xxxx ' oculta la declaración global
и
posible pérdida de datos debido a la conversión de tipos
Sólo he arreglado estúpidamente los nombres de las variables globales y he hecho coincidir los tipos.
Son 10.000.000 que puedes cobrar - por superar tu pereza.
Sólo he corregido los nombres de las variables globales y he alineado los tipos.
Me debes 10 000 000 por superar tu pereza.
Muchas gracias.
Me da vergüenza mostrar cómo lo he arreglado)
int CountTrades(long PositionID1)
Esta función es asíncrona. Sólo devuelve el resultado del comando en la cola de eventos.
Para actualizar inmediatamente debe ejecutar el comando ChartRedraw() después del comando de cambio de gráfico
Este es, por supuesto, un enfoque equivocado. Si necesita actualizar el gráfico sólo después de la finalización del desplazamiento de la línea, el bucle de recálculo del indicador debe ser llamado no desde OnCalculate() sino desde ChartEvent() - el desplazamiento de la línea es capturado - se llama a la función de recálculo del indicador, que realizará el ciclo completo de recálculo de la línea con los nuevos datos (la línea es necesaria para algunos datos, ¿no?).
¿O tal vez el indicador simplemente se hizo incorrecto y no actualiza la barra cero en los datos actuales y usted lo jodió?
El indicador cuenta las últimas barras no calculadas. Y después de arrastrar la vertical, debería recalcular completamente después de leer el nuevo tiempo de la vertical. Escribí sobre ello aquí y añadí capturas de pantalla de cómo funciona.
Gracias, intentaré poner en práctica tu idea. En general no soy muy bueno con los indicadores, me he manejado con Asesores Expertos principalmente.
Esta función es asíncrona. Sólo devuelve el resultado del comando en la cola de eventos.
Para actualizar inmediatamente, es necesario ejecutar el comando ChartRedraw() después del comando de cambio de gráfico
Este es, por supuesto, un enfoque equivocado. Si desea actualizar el gráfico sólo después de la finalización del desplazamiento de la línea, el bucle de recálculo del indicador debe ser llamado no desde OnCalculate() sino desde ChartEvent() - desplazamiento de la línea - llamar a la función de recálculo del indicador, que ejecutará todo el ciclo de recálculo de la línea con los nuevos datos (la línea es necesaria para algunos datos, ¿verdad?).
¿O tal vez el indicador no está hecho correctamente y no actualiza la barra de cero en los datos actuales, y usted lo pateó?
Hice lo que me aconsejó. Todo ha funcionado perfectamente. Ahora, instantáneamente, después de arrastrar el indicador se redibuja completamente. Gracias de nuevo.
Hice lo que me aconsejó. Todo ha funcionado perfectamente. Ahora, inmediatamente después de arrastrar el indicador se redibuja completamente. Gracias de nuevo.
De nada. Pero debería dibujarse en OnCalculate(), ¿o no?
Cuando se arrastra en un gráfico, el indicador no está al tanto de los cambios de la línea, pero debe dibujar la línea.
De nada. ¿Pero debería dibujarse en OnCalculate(), o no?
Cuando se aplica a un gráfico, no está al tanto de los movimientos de la línea, pero debe dibujar la línea.
Cuando el indicador se adjunta al gráfico, se crea una línea vertical en init() y se establece inicialmente un tiempo para ella, por ejemplo Time[10]. He duplicado el código enOnChartEvent() y OnCalculate(). Sólo en OnChartEvent recalculo por todas las barras.
Cuando se instala el indicador en el gráfico en init() se crea una línea vertical e inicialmente se fija en algún tiempo, por ejemplo Time[10]. He duplicado el código en OnChartEvent() y OnCalculate(). Sólo en OnChartEvent recalculo por todas las barras.
¿No sería mejor crear simplemente la función Refresh(), por ejemplo, con los parámetros formales necesarios, y llamarla cuando sea necesario?
Y por cierto, al obtener el rates_total en el indicador más allá de OnCalculate() usando Bars() con un rango de fechas, se puede coger un cuelgue del indicador:
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Análogo de iBarShift
Nikolai Semko, 2018.04.05 23:47
Hasta aquí esta variante, pero ahora quiero añadirla para evitar este fallo de cuelgues de la función Bars, sobre el que ya he escrito a servicedesk.
La esencia de este error es que si en la función Bars tantostart_time comostop_time están dentro de una barra o están en el futuro (a la derecha de la barra cero), entonces esta función se cuelga durante más de 10 segundos.
Quizá más adelante haga una versión adecuada más rápida pero más engorrosa.