Funcionalidad
Este script se puede usar para cerrar órdenes de forma masiva, bien del activo sobre el que se ejecute el script o de cualquier activo. Es importante indicar, que para cerrar cualquier orden de un activo, su mercado debe estar abierto. Si todo es correcto, se abrirá una pantalla de «verificación de orden», que debe ser Aceptada para que se ejecute.
Se puede indicar si el cierre se quiere por completo (100%) o si se quiere cerrar sólo un porcentaje de la operación, cambiando la variable percentToClose.
Se pueden seleccionar qué ordenes cerrar a través de los siguientes filtros:
- Por número magic. Se puede seleccionar si cerrar todas las órdenes independiente del número magic, o sólo cerrar órdenes con un número magic concreto. Si se usa 0, sólo cerrará órdenes abiertas manualmente, o aquellas abiertas automáticamente con magic 0
- Por activos. Se puede seleccionar si cerrar sólo órdenes del activo de la ventana donde se ejecuta, o cerrar órdenes de cualquier activo
- Por tipo de operación. Se puede configurar si se quieren cerrar órdenes de compra, venta y/o pendientes
- Por pérdida o ganancia acumulada. Se puede configurar cerrar órdenes que estén ganando y/o perdiendo dinero
Parámetros de entrada
magicOrder Filtro para especificar el identificador interno de aplicación de las órdenes a cerrar. Por defecto está configurado el identificador común a todas las órdenes abiertas con software SMC. Para cerrar órdenes abiertas manualmente especificar en este filtro el valor 0
percentToClose Porcentaje a cerrar de cada orden. Si se indica 100 se cerrarán por completo. Un número menor cerrará sólo un parte de cada orden
closeAllMagics Si se activa esta propiedad, cerrará órdenes no sólo del magic especificado en la propiedad magicOrder, sino de cualquier magic que cumpla el resto de filtros
closeAllSymbols Si se activa esta propiedad, cerrará órdenes no sólo del activo de la ventana sobre la que se ejecuta, sino de cualquier activo que cumpla el resto de filtros
applyBuyOrders Para cerrar órdenes de compra abiertas, esta propiedad debe estar activada. Si se desactiva no se cerrará ninguna orden de compra abierta
applySellOrders Para cerrar órdenes de venta abiertas, esta propiedad debe estar activada. Si se desactiva no se cerrará ninguna orden de venta abierta
applyPendingBuyOrders Para cerrar órdenes de compra pendientes, esta propiedad debe estar activada. Si se desactiva no se cerrará ninguna orden de compra pendiente
applyPendingSellOrders Para cerrar órdenes de venta pendientes, esta propiedad debe estar activada. Si se desactiva no se cerrará ninguna orden de venta pendiente
applyWiningOrders Para cerrar órdenes que están ganando dinero (sin tener en cuenta comisiones), esta propiedad debe estar activada. Si se desactiva no se cerrará ninguna orden en ganancias
applyLosingOrders Para cerrar órdenes que están perdiendo dinero (sin tener en cuenta comisiones), esta propiedad debe estar activada. Si se desactiva no se cerrará ninguna orden en pérdidas
generateGif Si se activa esta propiedad, se generará una imagen gif de la ventana sobre la que se ejecuta el script, una vez haya cerrado cada orden, y para cada orden que cierra. La imagen se guardará en el directorio de MT4 MQL4\Files\SMC_Images con el formato: <activo de la orden cerrada>_<id_orden>_<fecha>_<hora>_<timeframe del gráfico>_1_<operación realizada>
Extra
Sólo queremos cerrar las órdenes que hayamos abierto con software SMC (magic por defecto=150802000) del activo abierto en la ventana donde se ejecuta el script. Es decir, si queremos que el activo sea EURUSD, debemos ejecutar el script en una ventana donde esté cargado EURUSD. Si hubiese abierto manualmente más órdenes, al no tener el magic de software SMC, no las cerraría. De igual forma, si hubiese abierto más órdenes con otro software que no usase el magic de software SMC, tampoco las cerraría.
Habría que configurar las propiedades:
magicOrder = 150802000
closeAllMagics=false
closeAllSymbols=false
applyBuyOrders=true
applySellOrders=true
applyPendingBuyOrders=true
applyPendingSellOrders=true
applyWiningOrders=true
applyLosingOrders=true
generateGif=true
Lo importante es el magicOrder indicado, que no se intente cerrar todos los activos (sólo el de la ventana donde se ejecuta closeAllSymbols=false) y que no cierre todos los magics (sólo el indicado en magicOrder closeAllMagics=false). Todo lo demás debe estar activado para que cierre todo tipo de órdenes, e independientemente de si están ganando o perdiendo dinero.
En este caso lo que queremos es cerrar absolutamente todo. Habría que configurar las propiedades:
magicOrder = 150802000
closeAllMagics=true
closeAllSymbols=true
applyBuyOrders=true
applySellOrders=true
applyPendingBuyOrders=true
applyPendingSellOrders=true
applyWiningOrders=true
applyLosingOrders=true
generateGif=true
Hay que activar absolutamente todos los filtros, especial importancia en closeAllMagics=true y closeAllSymbols=true
En este caso lo que queremos es cerrar todo lo pendiente, sin tocar ninguna orden ya en mercado. Habría que configurar las propiedades:
magicOrder = 150802000
closeAllMagics=true
closeAllSymbols=true
applyBuyOrders=false
applySellOrders=false
applyPendingBuyOrders=true
applyPendingSellOrders=true
applyWiningOrders=true
applyLosingOrders=true
generateGif=true
Hay que activar absolutamente todos los filtros menos applyBuyOrders y applySellOrders. Especial importancia en closeAllMagics=true y closeAllSymbols=true
En este caso lo que queremos es cerrar sólo lo que nos está haciendo perder dinero. Habría que configurar las propiedades:
magicOrder = 150802000
closeAllMagics=true
closeAllSymbols=true
applyBuyOrders=true
applySellOrders=true
applyPendingBuyOrders=false
applyPendingSellOrders=false
applyWiningOrders=false
applyLosingOrders=true
generateGif=true
Hay que activar absolutamente todos los filtros menos applyWiningOrders (no queremos cerrar operaciones en ganancias), applyPendingBuyOrders (las órdenes pendientes no las quiero borrar) y applyPendingSellOrders (las órdenes pendientes no las quiero borrar). Especial importancia en closeAllMagics=true y closeAllSymbols=true
En este caso lo que queremos es cerrar sólo las órdenes de compra para un activo (en el de la ventana donde se ejecuta el script), independientemente de si se ha abierto con software SMC, a mano o con cualquier otro software. Habría que configurar las propiedades:
magicOrder = 150802000
closeAllMagics=true
closeAllSymbols=false
applyBuyOrders=true
applySellOrders=false
applyPendingBuyOrders=true
applyPendingSellOrders=false
applyWiningOrders=true
applyLosingOrders=true
generateGif=true
Hay que activar absolutamente todos los filtros menos closeAllSymbols (no queremos cerrar operaciones de otros activos), applySellOrders (no queremos cerrar ventas) y applyPendingSellOrders (no queremos cerrar ventas). Especial importancia en closeAllMagics=true y closeAllSymbols=false
Compártelo
Comparte este artículo en tus redes sociales