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
Posibles usos para esta herramienta son:

Cerrar todas las órdenes abiertas o pendientes con software SMC sobre un activo.

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.


Cerrar absolutamente todas las órdenes abiertas o pendientes.

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

Cerrar todas las órdenes pendientes.

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

Cerrar todas las órdenes perdedoras.

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

Cerrar todas las órdenes de compra de un activo.

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

Galería de Imágenes