Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1266
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
¡Que os vaya bien a todos!
Tengo una pregunta sobre la función ResultDeal() en la clase CTrade.
El caso es que en el Probador de Estrategias esta función devuelve el ticket de la operación sin ningún problema, pero al lanzar el EA en el Gráfico siempre devuelve "cero", a pesar de que la función ResultRetcode() siempre devuelve "TRADE_RETCODE_DONE".
Ejemplo de código:
Registro de ejecución en el Probador:
Registro de ejecución en la Carta:
¿Qué estoy haciendo mal? ¿Cómo puedo obtener un billete de comercio en tiempo real?
Y la segunda pregunta (de menor importancia), ¿por qué inmediatamente después de la ejecución de una operación la función PositionsTotal() devuelve "cero"? Y muestra datos fiables con el siguiente tick. ¿Es posible obtener esta información de inmediato?
¡Que os vaya bien a todos!
Tengo una pregunta sobre la función ResultDeal() en la clase CTrade.
El caso es que en el Probador de Estrategias esta función devuelve el ticket de la operación sin ningún problema, pero al lanzar el EA en el Gráfico siempre devuelve "cero", a pesar de que la función ResultRetcode() siempre devuelve "TRADE_RETCODE_DONE".
Ejemplo de código:
Registro de ejecución en el Probador:
Registro de ejecución en la Carta:
¿Qué estoy haciendo mal? ¿Cómo puedo obtener un billete de comercio en tiempo real?
Y la segunda pregunta (de menor importancia), ¿por qué inmediatamente después de la ejecución de una operación la función PositionsTotal() devuelve "cero"? Y muestra datos fiables con el siguiente tick. ¿Es posible obtener esta información de inmediato?
Hmm... De repente los datos que necesito en tiempo real son devueltos por la función ResultOrder() de la misma claseCTrade, aunque no he utilizado órdenes pendientes...
Mi pregunta es la misma: ¿Qué estoy haciendo mal?
Hay una macro como esta.
Yo lo uso así.
Warning"Warnig сработал. ");
Pregunta: ¿Qué hay que corregir en la definición de la macro para poder utilizarla así?
Warning("Warnig сработал. ");
es decir, con un paréntesis entre Warning y "Warnig worked. "Intento de utilizar un paréntesis en la definición de la macro
pero el compilador no me deja usar un paréntesis.
Hmm... De repente, la función ResultOrder() de la misma claseCTrade devuelve los datos que necesito en tiempo real, aunque no he utilizado órdenes pendientes...
La pregunta es la misma: ¿Qué estoy haciendo mal?
Sólo hay que entender el sistema de órdenes de MT5, orden - operación - posición.
ResultOrder es la orden de apertura. La posición será con POSITION_IDENTIFIER igual al ticket de esta orden.
Todas las operaciones se pueden encontrar en el historial por el identificador de posición. No hay que confundir con el billete de la posición, puede cambiar, y el identificador es constante.
s.s. El probador se diferencia en que no hay retraso en la ejecución de la orden y la operación se crea inmediatamente. En la vida real, el tiempo pasa y en el momento de la creación exitosa de una orden todavía no hay ningún acuerdo, tiene que ser capturado en los eventos OnTradeHay una macro como esta.
Yo lo uso así.
Pregunta: ¿Qué hay que corregir en la definición de la macro para poder utilizarla así?
es decir, con un paréntesis entre Warning y "Warnig worked. "Intento de utilizar un paréntesis en la definición de la macro
pero el compilador no te deja usar un paréntesis.
quiere utilizar una forma paramétrica, pero ha especificado una forma no paramétrica. debería ser así
No lo he explicado bien. Empecemos por el principio. Ahora estoy usando la macro así:
Warning,"Warnig сработал. i=",i);
Aquí está la macro en sí:
En la llamada a la macro entre "Aviso" y ");" Un número arbitrario de parámetros de tipos arbitrarios. Todo esto se consigue recargando repetidamente la función deescritura.
Pregunta. Qué debo corregir en la macro para poder llamarla así:
Warning("Warnig сработал. i=",i);
No lo he explicado bien. Empecemos por el principio. Ahora estoy usando la macro así:
Aquí está la macro en sí:
En la llamada a la macro entre "Aviso" y ");" Un número arbitrario de parámetros de tipos arbitrarios. Todo esto se consigue recargando repetidamente la función deescritura.
Pregunta. Qué debería corregirse en la macro para permitir su llamada así:
Respuesta: también recargar repetidamente la macro)
Pero es mejor usar el operador + para cadenas y convertir todo en cadenas, entonces no necesitas una versión de función (y macro) con muchos parámetros
Sólo hay que entender el sistema de órdenes de MT5, orden - operación - posición.
ResultOrder es la orden de apertura. La posición será con POSITION_IDENTIFIER igual al ticket de esta orden.
Todas las operaciones se pueden encontrar en el historial por el identificador de posición. No hay que confundir con el billete de la posición, puede cambiar, y el identificador es constante.
s.s. El probador es diferente en cuanto a que no hay retraso en la ejecución de la orden e inmediatamente nace una operación. En el comercio real el tiempo pasa y en el momento de la creación de la orden con éxito no hay ningún acuerdo todavía, tiene que ser capturado en los eventos OnTrade.¿Cómo puedo acceder a las propiedades de los indicadores desde un EA? Por ejemplo, quiero cambiar el color de la línea de un EA si conozco el mango del indicador. Lo he buscado y no lo he encontrado, ¿quizás estoy buscando demasiado?
Un indicador para esto debe tener un parámetro de color de entrada. Es decir, debe ser un indicador personalizado.