Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1374
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
Alguien te enseñó mal. La variable _LastError almacenará el valor hasta que se produzca el siguiente error.
Pues mira, al principio del código principal se produce el siguiente error
ERR_INVALID_DATETIME
4010
Fecha y/o valor de la hora incorrectos
Y entonces el código crea un objeto y _LastError se reescribe como
ERR_OBJECT_NOT_FOUND
4202
Objeto gráfico no encontrado
Si la comprobación de _LastError está al final del código, como suelo hacer, obtendré 4202 y lo ignoraré. Es decir, el error 4010 pasará desapercibido. ¿En qué me equivoco?
Es un requisito del mercado que no se reciban errores de ejecución desde el servidor del corredor.
Gracias, no lo sabía, pensaba que todos los errores estaban prohibidos.
Pues mira, al principio del código principal, por ejemplo, se produce el siguiente error:
ERR_INVALID_DATETIME
4010
Fecha y/o valor de la hora incorrectos
Y entonces el código crea un objeto y _LastError se reescribe como
ERR_OBJECT_NOT_FOUND
4202
Objeto gráfico no encontrado
Si la comprobación de _LastError está al final del código, como suelo hacer, obtendré 4202 y lo ignoraré. Es decir, el error 4010 pasará desapercibido. ¿En qué me estoy equivocando?
Gracias, no lo sabía, pensaba que todos los errores estaban prohibidos.
Exactamente. No te equivocas...
Hola, alguien puede darme una pista.
Estoy escribiendo los valores de tiempo de cada barra específicamente en un array. Hay un límite de 3000 barras en el gráfico.
La tarea:
- Para desplazar la matriz de valores en cada nueva barra.
No puedo ajustarlo para que funcione correctamente.
¿Estoy desplazando correctamente el array en una nueva barra si (this.m_rt-this.m_pc)=1?
Hola, alguien puede darme una pista.
Estoy escribiendo los valores de tiempo de cada barra específicamente en un array. Hay un límite de 3000 barras en el gráfico.
La tarea:
- Para desplazar la matriz de valores en cada nueva barra.
No puedo ajustarlo para que funcione correctamente.
¿Estoy en lo cierto al desplazar la matriz en una nueva barra si (this.m_rt-this.m_pc)=1?
Es decir, el tamaño del array debe ser exactamente 3000 y en la formación de una nueva barra se debe sobrescribir primero el índice cero ......... y al final escribir el nuevo valor?
Si lo he entendido bien, ¿qué sentido tiene el bucle? Sólo hay que copiar el propio array en el índice nulo empezando por el primero, y luego escribir el nuevo valor en el último índice.
Si no se encuentra ningún objeto, este es el error de búsqueda de objetos...
ERR_OBJECT_NOT_FOUND
4202
Objeto gráfico no encontrado
No es necesario alertarlo...
Hice un par de pruebas... Esto es lo que tengo en mente. En MQL5, no es necesario utilizar ObjectFind() cuando se crean objetos.
El objeto puede ser creado sin ninguna comprobación previa de su existencia (simplemente usando ObjectCreate). Incluso dentro del OnTick tal código no causará ningún error _LastError.
No sé cómo se implementa en las profundidades del código del sistema MQL5, tal vez hay alguna comprobación ya cargado allí que el objeto se creará sólo si aún no está presente. Pero resulta que al menos cuando se crea un objeto dentro de MQL5, ObjectFind( ) no es necesario. Y todas sus propiedades se actualizan invariablemente en cada tick.
Esto no puede decirse de MQL4. La creación de un objeto sobre uno existente provocará un error 4200 ("El objeto ya existe"). Significa que el uso deObjectFind() es obligatorio para su creación.Esto me deja una posibilidad sencilla de cerrar sus propiedades de las actualizaciones constantes sin generar errores _LastError.
Por favor, confirme mis conclusiones.
Es decir, el tamaño de la matriz debe ser exactamente 3000 y cuando se forme una nueva barra, el índice cero debe sobrescribirse primero ......... y el nuevo valor debe añadirse al final?
Si he entendido bien, ¿por qué necesito un bucle? Simplemente, el propio array debe copiarse en el índice nulo empezando por el primero, y luego el nuevo valor debe añadirse al último índice.
Bueno, sí, está claro, pero si hay una pausa, por ejemplo, un retraso, aparecieron dos compases, los escribo.
Muchas gracias, lo entiendo, lo intentaré a través de CopyTime.
Hice un par de pruebas... Esto es lo que ocurre. En MQL5, no es necesario utilizar ObjectFind() cuando se crean objetos.
El objeto puede ser creado sin ninguna comprobación previa de su existencia (simplemente usando ObjectCreate). Incluso dentro del código OnTick este código no causará ningún error _LastError.
No sé cómo se implementa en las profundidades del código del sistema MQL5, tal vez hay alguna comprobación ya cargado allí que el objeto se creará sólo si aún no está presente. Pero resulta que al menos cuando se crea un objeto dentro de MQL5, ObjectFind( ) no es necesario. Y todas sus propiedades se actualizan invariablemente en cada tick.
Esto no puede decirse de MQL4. La creación de un objeto sobre uno existente provocará un error 4200 ("El objeto ya existe"). Significa que el uso deObjectFind() es obligatorio para su creación.Esto me deja una posibilidad sencilla de cerrar sus propiedades de las actualizaciones constantes sin generar errores _LastError.
Por favor, confirme mis conclusiones.
Pues sí, parece claro, pero si hay una interrupción, por ejemplo, retraso, aparecieron dos compases, los apunto.
Gracias, lo entiendo, lo intentaré a través de CopyTime.
Bueno, si lo haces a través de CopyTime, no hay ningún problema. Sólo hay que copiar desde las 3000 barras actuales y ya está.
¿Cómo puedo establecer el nivel del trailing stop regular en el código del programa cuando se coloca una orden pendiente o se abre una posición desde el mercado?
Está claro cómo se hace esto manualmente. Los programas para trailing stops no estándar no son interesantes.
Gracias de antemano.
¿Por qué no funciona ese diseño? Dónde está el error... (el registro está vacío)
Y el yen, también vacío.