Discusión sobre el artículo "Un Gestor de Órdenes Virtuales para rastrear órdenes dentro del entorno centrado en posiciones de MetaTrader 5" - página 2

 
phampton:

Así es, wackena. Lo que has hecho es ir directamente al servidor a con una orden convencional, por lo que no hay ninguna orden virtual abierta. Tendrías que utilizar el VirtualOrderManagerTester para emitir una orden virtual manual.

Debería haber dejado claro en el artículo que si se introduce un EA VOM en un símbolo concreto, entonces todos los demás EAs que operen con ese símbolo también deben estar habilitados para VOM. Esto se debe al código SL de protección contra desastres del VOM.

Paul

Gracias Paul.

¿Se puede utilizar el VirtualOrderManager.mqh en el MT-5 Strategy Tester? En caso afirmativo, ¿cómo se debe configurar el EA con VOM?

 
wackena:

Gracias, Paul.

¿Se puede utilizar el VirtualOrderManager.mqh en el MT-5 Strategy Tester? En caso afirmativo, ¿cómo debe configurarse el EA con VOM?

Sí, mis pruebas muy limitadas en el ST indican que funciona sin alteraciones, aunque lentamente porque hay que procesar cada tick.
 

He estado trabajando con VOM en un EA de tipo Martingala. Con múltiples operaciones de venta abiertas, del mismo tipo y par de divisas, esta función CloseAllOrders parece que sólo cierra la última operación, dejando las operaciones anteriores aún abiertas.

VOM.CloseAllOrders(_Symbol,VIRTUAL_ORDER_TYPE_SELL);

Con múltiples, mismo tipo y par de divisas, órdenes virtuales (vo) abiertas, ¿debería este código de función iniciar el cierre de una orden vo o debería la función cerrar todas las órdenes vo abiertas?

VOM.OrdersTotal() hace un buen seguimiento del número de órdenes vo abiertas.

 
wackena:

He estado trabajando con VOM en un EA de tipo Martingala. Con múltiples operaciones de venta abiertas, mismo tipo y par de divisas, esta función CloseAllOrders parece que sólo cierra la última operación, dejando las operaciones anteriores todavía abiertas.

Con múltiples, mismo tipo y par de divisas, órdenes virtuales (vo) abiertas, debe este código de función iniciar el cierre de una orden vo o debe la función cerrar todas las órdenes vo abiertas.

VOM.OrdersTotal() hace un buen seguimiento del número de órdenes vo abiertas.

Hola wackena,

Acabo de añadir un botón Cerrar todo a VirtualOrderManagerTester, ver adjunto. Funciona bien, aunque admito que es una manera torpe de cerrar todas las órdenes virtuales - una mejor manera sería sumarlos y emitir una orden de servidor único, y voy a mirar a hacer eso en la próxima versión.

Siéntase libre de enviarme una copia de un registro LOG_VERBOSE EA para que pueda ver mejor lo que está pasando.

Paul

Archivos adjuntos:
 
phampton:

Hola wackena,

Acabo de añadir un botón Cerrar todo a VirtualOrderManagerTester, ver adjunto. Funciona bien, aunque admito que es una manera torpe de cerrar todas las órdenes virtuales - una mejor manera sería sumarlos y emitir una orden de servidor único, y voy a mirar a hacer eso en la próxima versión.

Siéntase libre de enviarme una copia de un registro LOG_VERBOSE EA para que pueda ver mejor lo que está pasando.

Paul

Adjunto el archivo log.
Archivos adjuntos:
 
wackena:
Adjunto el archivo de registro.

Gracias - de lo que puedo decir en el registro, las únicas llamadas a OrderClose se producen cuando un takeprofit virtual ha sido golpeado, es decir, cualquier código que tiene que cerrar explícitamente órdenes (como un CloseAllOrders) no se está alcanzando o se está alcanzando cuando no hay órdenes izquierda para cerrar.

 

Actualización de los apéndices del artículo:

La documentación, la guía del usuario y los comentarios del código fuente de la biblioteca Virtual Order Manager están ahora disponibles en ruso.

 

Hay un problema importante con esta librería. Las operaciones abiertas con VOM y cerradas manualmente se ven abiertas por VOM.

Más que eso, cuando en VOM intento cerrar estas operaciones, VOM abrirá operaciones en la dirección opuesta.

Por ejemplo:

- Abro 5 ordenes de compra con VirtualOrderManagerTester y esta bien

- Cierro manualmente las 5 órdenes: en MT5 no veo ninguna orden y en el gráfico(VOM) 5 órdenes abiertas

- Cierro las 5 ordenes desde VirtualOrderManagerTester: Veo 5 ordenes de venta en MT5 y ninguna en VOM(VirtualOrderManagerTester)

En mi opinión esto es un gran problema porque si las órdenes de mi EA son cerradas por el broker u otro EA, cuando mi EA intente cerrarlas usando VOM, abrirá órdenes en sentido contrario.

¿Hay alguna solución para este problema?

Archivos adjuntos:
vom_test.jpg  188 kb
 
mbt22:

Hay un problema importante con esta biblioteca. Las operaciones abiertas con VOM y cerradas manualmente se ven abiertas por VOM.

Más que eso cuando en VOM trato de cerrar estas operaciones, VOM abrirá operaciones en la dirección opuesta.

Por ejemplo:

- Abro 5 ordenes de compra con VirtualOrderManagerTester y esta bien

- Cierro manualmente las 5 órdenes: en MT5 no veo ninguna orden y en el gráfico(VOM) 5 órdenes abiertas

- Cierro las 5 ordenes desde VirtualOrderManagerTester: Veo 5 órdenes de venta en MT5 y ninguna en VOM(VirtualOrderManagerTester)

En mi opinión esto es un gran problema porque si las órdenes de mi EA son cerradas por el broker u otro EA, cuando mi EA intente cerrarlas usando VOM, abrirá órdenes en sentido contrario.

¿Hay alguna solución para este problema?

Hola mbt22

lo que destacas es sin duda una limitación de esta librería - todos los EAs que se ejecuten en una cuenta deben utilizar el VOM, y eso incluye las operaciones manuales.

Ten en cuenta sin embargo que esta limitación de sociabilidad de los EAs VOM es probable que se vea en muchos EAs MQL5. En otras palabras, estos EAs también pueden fallar en caso de operaciones manuales u otros EAs de cualquier tipo operando sobre el mismo símbolo.

He aquí un ejemplo de fallo de sociabilidad de un EA no VOM. Supongamos que las operaciones (manuales y/o generadas por el EA) externas a ese EA suman 1,0 lotes cortos, y el EA emite una orden de compra de 0,1 lotes con un stop de 50 pips.No recuerdo exactamente cómo funcionaría la función OrderSend en el EA (si se completa o devuelve un error de stop), pero lo que es seguro es que el stop no puede aplicarse 50 pips por debajo del tamaño de posición resultante de 0,9 lotes cortos.

El EA de prueba es capaz de gestionar operaciones manuales utilizando el VOM, pero si la situación llega a las órdenes de cierre del broker, entonces el VOM ha perdido el control y sería necesaria una evaluación cuidadosa de la cuenta.

Una de las principales razones por las que el VOM no es sociable con actividades ajenas al VOM es su gestión del stop de protección ante desastres, que es una gestión de riesgos absoluta esencial en cualquier proceso de cierre de operaciones basado en el cliente.

Paul

 
phampton:

Hola mbt22,

lo que usted destaca es definitivamente una limitación de esta biblioteca - todos los EAs que se ejecutan en una cuenta debe utilizar el VOM, y que incluye las operaciones manuales.

Ten en cuenta sin embargo que esta limitación de sociabilidad de los EAs VOM es probable que se vea en muchos EAs MQL5. En otras palabras, estos EAs también pueden fallar en caso de operaciones manuales u otros EAs de cualquier tipo operando en el mismo símbolo.

He aquí un ejemplo de fallo de sociabilidad de un EA no VOM. Supongamos que las operaciones (manuales y/o generadas por el EA) externas a ese EA suman 1,0 lotes cortos, y el EA emite una orden de compra de 0,1 lotes con un stop de 50 pips.No recuerdo exactamente cómo funcionaría la función OrderSend en el EA (si se completa o devuelve un error de stop), pero lo que es seguro es que el stop no puede aplicarse 50 pips por debajo del tamaño de posición resultante de 0,9 lotes cortos.

El EA de prueba es capaz de gestionar operaciones manuales utilizando el VOM, pero si la situación llega a las órdenes de cierre del broker, entonces el VOM ha perdido el control y sería necesaria una evaluación cuidadosa de la cuenta.

Una de las principales razones por las que el VOM no es sociable con actividades ajenas al VOM es su gestión del stop de protección frente a catástrofes, que es una gestión de riesgos absoluta esencial en cualquier proceso de cierre de operaciones basado en el cliente.

Paul


De acuerdo.

Gracias por su rápida respuesta.