Discusión sobre el artículo "Experto comercial universal: Modelo de eventos y prototipo de estrategia comercial (Parte 2)" - página 2
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
Hola,
He intentado compilar tu código (Agent.mq5) y me da el siguiente error. Compilación 1274
Error interno del compilador Agent.mq5 1 1
También hay un pequeño error tipográfico en la línea 388 de Dictionary.mqh
/| Returns previous object. The current object becomes previous|En la compilación 1241, el código está compilando bien, así que traté de ejecutar un backtest. No toma ninguna operación.
Después de cavar un poco
he encontrado que es debido al modo de llenado. El modo permitido en el broker/símbolo que estoy usando es ORDER_FILLING_IOC. Su clase TradeCustom establece el modo de llenado por defecto a ORDER_FILLING_FOK. ¿Cómo puedo cambiar este modo de llenado para que el EA Agent.mq5 pueda operar? Podría buscar, pero me llevaría mucho tiempo.
Ese es el problema con este tipo de herramientas, muy similar a MQL5 asistente EA de Metaquotes, es casi inutilizable para cualquier persona que no conoce todos los detalles de las clases. Una vez que te enfrentas a un problema que no fue proporcionado por el autor se convierte en un verdadero dolor para arreglarlo o modificar / añadir a la misma. No veo ninguna diferencia real entre tu solución y la de Metaquotes (asistente).
De todas formas, enhorabuena por el enorme trabajo. Es un gran trabajo de programación.
Vasily, como "guía para la aplicación de OOP en el comercio" tus trabajos son muy informativos y útiles, pero como "motor de trabajo en el comercio" son muy pobres. En particular, me refiero a la variedad de "funciones administrativas".
Hoy en día, MT5 está cerca de MT4 en términos de accesibilidad y fidelidad de los traders (se ha añadido el hedge trading). A lo largo de los años, MT4 ha acumulado una funcionalidad administrativa bastante rica en acceso libre:
* cierre parcial de posiciones (me refiero al control de este proceso por el motor de negociación);
* variedad de cálculos de STOP;
* STOPs dinámicos;
* STOPs virtuales;
* MM profesional (se trata del control sobre la distribución de fondos entre estrategias). El resultado final, y más importante, del trading sostenible no depende de la correcta entrada y salida en el mercado (aunque es importante), sino de la correcta inversión;
* negociación virtual;
* creación de redes. Es decir, la interconexión de una serie de órdenes unidas por una única lógica de formación del tamaño del lote para cada posición de la serie.
* deja mucho que desear y la implementación de la gestión de excepciones al realizar órdenes comerciales (recotizaciones, error #130 [MT4], STOPLEVEL, FREEZELEVEL, etc., etc.).
La pregunta que surge es: "¿Desarrollarán más su motor en acceso libre?".
Vasily, como "guía para la aplicación de OOP en el comercio" tus trabajos son muy informativos y útiles, pero como "motor de trabajo en el comercio" son muy pobres. En particular, me refiero a la variedad de "funciones administrativas".
Hoy en día, MT5 está cerca de MT4 en términos de accesibilidad y fidelidad de los traders (se ha añadido el hedge trading). A lo largo de los años, MT4 ha acumulado una funcionalidad administrativa bastante rica en acceso libre:
* cierre parcial de posiciones (me refiero al control de este proceso por el motor de negociación);
* variedad de cálculos de STOP;
* STOPs dinámicos;
* STOPs virtuales;
* MM profesional (se trata del control sobre la distribución de fondos entre estrategias). El resultado final, y sobre todo sostenible, del trading, no depende de la correcta entrada y salida en el mercado (aunque es importante), sino de la correcta inversión;
* negociación virtual;
* creación de redes. Es decir, la interconexión de una serie de órdenes unidas por una única lógica de formación del tamaño del lote para cada posición de la serie.
* deja mucho que desear y la implementación de la gestión de excepciones al realizar órdenes comerciales (recotizaciones, error #130 [MT4], STOPLEVEL, FREEZELEVEL, etc., etc.).
Surge la pregunta: "¿Van a seguir desarrollando libremente su motor?".
Sí, está previsto seguir desarrollando el motor. Y siempre seguirá siendo libre.
Sobre el resto de lo que ha enumerado - escriba sus paradas, MM y "funciones administrativas" dentro de CStrategy. Nadie lo prohíbe.
Siempre ha habido control de errores - use la clase CTrade y sus respuestas para controlar errores.
Sí, está previsto que continúe el desarrollo del motor. Y siempre seguirá siendo gratuito.
En cuanto al resto de lo que ha enumerado - escriba sus paradas, MM y "funciones administrativas" dentro de CStrategy. Nadie lo prohíbe.
El control de errores siempre ha estado ahí - utilice la clase CTrade y sus respuestas para controlar los errores.
Un simple usuario no necesita pensar en los errores devueltos por el servidor de comercio. El motor de negociación debe garantizar que en cualquier circunstancia (excepto en horas no laborables) una orden de negociación (apertura, cierre, modificación) se genere correctamente y luego se ejecute. ¿O estoy exigiendo demasiado al motor de negociación?
P.D. ¿Qué esperar (qué funcionalidad) en el próximo artículo?
Un usuario normal no necesita pensar en los errores devueltos por el servidor de operaciones. El motor de negociación debe garantizar que, en cualquier circunstancia (salvo fuera de horario), una orden de negociación (apertura, cierre, modificación) se genere y ejecute correctamente. ¿O estoy exigiendo demasiado al motor de negociación?
¿Qué cree que debería hacer el motor de negociación si la orden de apertura de la operación tiene el SL demasiado cerca del precio de apertura?
- No abrir la operación;
- ajustar el stop a la distancia mínima permitida y abrir la operación (y si hay noticias y el stop apalancado es de 50 puntos de cuatro dígitos, también?)
- ajustar el stop como en el punto anterior, ajustar proporcionalmente el lote (para que el riesgo siga siendo el mismo), y abrir la operación. Si el lote llega a ser inferior al lote mínimo admisible
- cancele la entrada para no violar la gestión de riesgos,
- entrar con el lote mínimo.
- ajustar stop loss y todas las órdenes pendientes que estén al mismo nivel (si se trata de una parrilla);
- ajuste el stop loss y el take profit proporcionalmente;
- ...
¿Se da cuenta de que, dependiendo de la estrategia, debe utilizar diferentes opciones?Sí, se puede hacer un ajuste elemental de la distancia mínima (como opción), pero no existe una receta absolutamente universal.
Un usuario normal no necesita pensar en los errores devueltos por el servidor de operaciones. El motor de negociación debe garantizar que, en cualquier circunstancia (salvo fuera de horario), una orden de negociación (apertura, cierre, modificación) se genere y ejecute correctamente. ¿O estoy exigiendo demasiado al motor de negociación?
P.D. ¿Qué debo esperar (qué funcionalidad) en el próximo artículo?
La tarea del motor de negociación es proporcionar un entorno conveniente para la estrategia, así como garantizar la integridad y coherencia de los datos presentados. El motor de negociación no tiene otras tareas. Pero en ningún caso debe "operar" por la propia estrategia. Así que si la estrategia ha cometido un error, el motor no corregirá sus errores, de lo contrario será un favor bajista. Se debe hacer todo lo posible para evitar el error. Pero si ha sucedido, no tiene sentido cambiar la lógica de negociación del Asesor Experto sobre la marcha. Usted debe sentarse y arreglar el código de la estrategia. No hay otra opción.
Un ejemplo de la práctica. Si solicita cualquier precio en CStrategy, por ejemplo, así:
Usted está garantizado para obtener un precio del instrumento ya normalizado, que puede ser utilizado directamente en las órdenes comerciales. No puede decirse lo mismo si utiliza una consulta del sistema. Es decir, CStrategy hace todo lo posible para evitar que aparezcan errores técnicos, por ejemplo, cuando los precios no están normalizados. Sin embargo, no hará el trabajo por el usuario. Y si sustituye este precio por una orden pendiente, puede que no funcione.
¿Qué cree que debería hacer el motor de negociación si en la orden de apertura de una operación el SL está demasiado cerca del precio de apertura?
- no abrir la operación;
- ajustar el stop a la distancia mínima permitida y abrir la operación (y si hay noticias y el stop apalancado es de 50 puntos de cuatro dígitos, también?)
- ajustar el stop como en el punto anterior, ajustar proporcionalmente el lote (para que el riesgo siga siendo el mismo), y abrir la operación. Si el lote llega a ser inferior al lote mínimo admisible
- cancele la entrada para no violar la gestión de riesgos,
- entrar con el lote mínimo.
- ajuste el stop loss y todas las órdenes pendientes que estén al mismo nivel (si se trata de una parrilla);
- ajuste el stop loss y el take profit proporcionalmente;
- ...
¿Se da cuenta de que, dependiendo de la estrategia, debe utilizar diferentes opciones?Sí, puedes hacer un ajuste elemental de la distancia mínima (como opción), pero no hay una receta absolutamente universal.
La tarea del motor de negociación es proporcionar un entorno cómodo para la estrategia, así como garantizar la integridad y coherencia de los datos presentados. El motor de negociación no tiene otras tareas. Pero en ningún caso debe "operar" por la propia estrategia. Así que si la estrategia ha cometido un error, el motor no corregirá sus errores, de lo contrario será un favor bajista. Se debe hacer todo lo posible para evitar el error. Pero si ha sucedido, no tiene sentido cambiar la lógica de negociación del Asesor Experto sobre la marcha. Usted debe sentarse y arreglar el código de la estrategia. No hay otra opción.
Un ejemplo de la práctica. Si solicita cualquier precio en CStrategy, por ejemplo, así:
Usted está garantizado para obtener un precio del instrumento ya normalizado, que puede ser utilizado directamente en las órdenes comerciales. No puede decirse lo mismo si utiliza una consulta del sistema. Es decir, CStrategy hace todo lo posible para evitar los errores técnicos que aparecen, por ejemplo, cuando los precios no están normalizados. Sin embargo, no hará el trabajo por el usuario. Y si sustituye este precio por una orden pendiente, puede que no funcione.
Es inútil discutir aquí. Se trata de un enfoque puramente personal. Pero no me permito recibir tales mensajes en el registro:
El motor debería encargarse de ello.Es inútil discutir aquí. Es un planteamiento puramente personal. Pero no me permito recibir tales mensajes en el registro:
Es algo de lo que debería ocuparse el motor.