Errores, fallos, preguntas - página 1669
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
¿El programa MQ5 siempre realiza automáticamente el IndicatorRelease de todas las manijas que creó después de la ejecución?
¿O es posible ejecutar el indicador a través de IndicatorCreate por un script, y luego pasar su mango a través de variables globales para el trabajo posterior con el indicador?
https://www.mql5.com/ru/docs/basis/preprosessor/compilation
Constante
Tipo
Descripción
indicador_de_prueba
cadena
Nombre del indicador personalizado en el formato "nombre_del_indicador.ex5".Los indicadores necesarios para las pruebas se determinan automáticamente a partir de la llamada a la funcióniCustom(), si el parámetro correspondiente se especifica como una cadena constante. Para otros casos (uso de la funciónIndicatorCreate() o uso de una cadena no constante en el parámetro que especifica el nombre del indicador) esta propiedad debe ser
IndicatorCreate - casi (sin restricciones en el número de parámetros de entrada) rudimento?
¿Qué es el contador?
Si intentas crear un código que contenga IndicatorRelease, pero que no llame al propio indicador, no lo compilarás, porque tienes que pasar un handle a IndicatorRelease, pero si no llamas al indicador desde el programa, no obtendrás el handle.
BlackTomcat:
Вчера обсуждали, страница 1687. :) Но читать лучше вот с этого сообщения на 1686-й странице: https://www.mql5.com/ru/forum/1111/page1686#comment_2790746 Кстати, человек на Ваш же вопрос отвечал. Просто получается, что схема такая. Запрос на вызов индикатора попадает в Терминал. Т.е. советник или скрипт не вызывают индикатор напрямую, терминал выступает посредником. В терминале происходит проверка, существует ли уже такой индикатор с указанными параметрами. Если да, то он возвращает программе, вызвавшей индикатор, хэндл (ссылку) на уже существующий индикатор. А в своих терминальных недрах помечает в счётчике, что был ещё один вызов на данный индикатор. Т.е. он ведёт учёт, сколько хэндлов на данный индикатор вернул. Когда кто-то делает IndicatorRelease, это не значит, что остальным, кто вызвал этот же индикатор с такими же параметрами, этот индикатор больше не нужен. Поэтому Терминал уменьшает счётчик на единицу, но оставляет индикатор активным, потому-что им ещё кто-то пользуется.
Gracias. Esto resulta ser un gran ahorro.
Si intentas crear un código que contenga IndicatorRelease, pero que no contenga la llamada del propio indicador, creo que no lo compilarás, porque necesitarás pasar el handle a IndicatorRelease, y si el indicador no ha sido llamado desde el programa, no obtendrás el handle.
Puedo pasar la manija a través de variables globales. Por lo tanto, es muy posible utilizarlo.Y tú no. :) O, al menos, no llame a IndicatorRelease() para un manejador obtenido de esta manera. Si lo hace, será un error suyo, pero no un fallo de la lengua, ¿está de acuerdo?
Y escribiré una pestaña mala para el Mercado libre, que en un momento dado se limitará a recorrer todo el rango de int positivos y a probar IndicatorRelease para cada uno.
Dicho script cubrirá todos los Asesores Expertos e indicadores del terminal que utilizaron iCustom sin ChartIndicatorAdd.
De nuevo, esa sería su acción deliberada, no un error del lenguaje. ¿Por qué escribiste eso?
Por cierto, esta conversación comenzó con tu pregunta sobre cómo comprobar el mango del indicador antes de usarlo. Bueno, no se puede comprobar, pero al intentar usar un handle de un indicador cerrado, se obtendrá el error 4807 - sólo hay que rastrearlo después de cada llamada de CopyBuffer(), si devuelve -1.
Puedo pasar el mango a través de variables globales. Así que es muy posible utilizarlo.
Error de ejecución: 'acceso de puntero no válido' (*)