Diseño de sistemas para novatos: aplicar un stop loss

Diseño de sistemas para novatos: aplicar un stop loss

Programación de sistemas 

En un artículo anterior de este mismo blog, comentamos que era posible diseñar un sistema automático (Expert Advisor) sin necesidad de tener grandes nociones de programación.
 
Como ejemplo, usamos la herramienta de diseño visual de Visual Chart, y desarrollamos un sistema de ejemplo basado en el indicador TRIX. En el presente artículo, vamos a retomar este tema para dar un paso más en la creación de sistemas: Cómo proceder para incorporar al sistema un stop de protección de pérdidas.
 

El sistema basado en el TRIX

Para explicar este procedimiento, me he permitido la licencia de usar de referencia el sistema basado en el indicador TRIX que realizamos en la anterior entrada.  No voy a entrar en detalles acerca de los pasos que hay que dar para iniciar la creación de dicho sistema puesto esto ya se explicó en su momento, por lo que partiré de la idea de que ya lo tenemos creado. 
 
A partir de este punto, consideramos que tenemos instalado el programa Visual Chart y que lo tenemos abierto y activo. Siendo así, podemos abrir el código del sistema accediendo a la siguiente opción del menú principal:
sistemas de trading
Buscamos el sistema Sistema TRIX  y a continuación lo abrimos. El aspecto de éste era el siguiente:
sistema trix
Este sistema compraba y vendía en función de unas condiciones asociadas al TRIX. Lo que ahora nos interesa de un sistema como éste, es que es un tipo de estrategia que siempre está dentro de mercado, ya que dobla la posición con cada nueva orden de entrada, como podemos ver a continuación:
sistemas automaticos de trading
Este tipo de estrategia está muy bien porque si la cotización se mueve a favor de la señal, dejamos correr las ganancias mientras dure la tendencia.  Sin embargo, como vemos en el gráfico, si la señal del TRIX concurre en fallo, también dejaremos correr las pérdidas, lo cual no es nada recomendable, ya que toda buena estrategia de trading que se precie debe llevar un seguro de protección de pérdidas.
 
Como consecuencia, consideraremos como indispensable aprender a construir un stop de pérdidas para poder diseñar de manera independiente nuestro propio sistema. Veamos a continuación cómo realizar esto usando, una vez más, la Plataforma Visual de Visual Chart.
 

Diseñando el Stop de pérdidas

El primer paso que debemos dar es decidir cómo debe ser nuestro stop de protección: ¿Dependerá de una cantidad fija de puntos? ¿Será una proporción del precio de entrada? ¿Vendrá dado por algún tipo de variable dinámica, como puede ser una media móvil? Las posibilidades son numerosas. 
 
Nosotros nos vamos a centrar en la idea de un stop porcentual, ya que es un método bastante extendido. Veamos un ejemplo concreto para tratar de entender mejor lo que debemos hacer. Consideremos la siguiente entrada A CORTOS que ha realizado el sistema:
stoploss
Ahora supongamos que no estoy dispuesto a perder más de un 5% del valor de entrada. Esto quiere decir, que si el subyacente sube hasta un 5% de 9897 (10392), liquidaremos la posición corta y quedaremos fuera de mercado.
colocacion stoploss
En caso de estar posicionados A LARGO, liquidaríamos cuando el precio del subyacente bajara hasta un 5% del precio de entrada.
Queda clara la idea ¿no?
Bien. Una vez explicado el proceso con un ejemplo, ahora consideremos todo esto de un modo más abstracto o genérico: Supongamos que en lugar de ser un valor fijo de 5% de pérdidas, tenemos un valor variable el cual podamos posteriormente optimizar. Llamaremos a este valor variable, por ejemplo, PCTSTOPLOSS (para hacer referencia a que se trata de un valor porcentual). Ahora, vamos a definir una función que calcule el precio del stop de pérdidas para cada negocio en función de su signo. 
 
Para los negocios a largo, la función del stop de pérdidas sería de la siguiente forma:
PRECIO STOP PERDIDAS LARGOS= PRECIO_ENTRADA  ×(1- PCTSTOPLOSS/100)
 
Para los negocios a corto, la función sería la siguiente:
PRECIO STOP PERDIDAS CORTOS= PRECIO_ENTRADA  ×(1+PCTSTOPLOSS/100)
 
¿Por qué necesitamos definir estas funciones? Porque para implementar el envío de las órdenes de stop de pérdidas desde la estrategia automática, tendremos que especificar a qué precio se van a lanzar dichas órdenes: Como dicho valor no es un valor fijo, si no que depende de cada uno de los negocios generados, en el campo donde se define el precio a lanzar deberemos escribir la función que corresponda aquí descrita.
 

Incorporando el Stop de pérdidas al sistema

Volvamos al panel de programación de Visual Chart. A la izquierda del lienzo en blanco del diseñador, encontramos una ventana con una serie de carpetas. Como en su momento comentamos, en dichas carpetas se almacenan los ingredientes o herramientas que van a entrar en juego. 
 
Lo primero que debemos hacer es añadir esa variable que identificaba el porcentaje de pérdidas que vamos a asumir a la que llamamos PCTSTOPLOSS. Si observan la ventana de herramientas, verán que existe una carpeta llamada Variables. Pinchamos sobre ella con el botón derecho y seleccionamos la opción Añadir.
sistema1
Nos aparecerá un formulario donde debemos describir la variable a crear:
sistema2
En dicho formulario especificamos:
  • El nombre de la variable.
  • El valor por defecto que va a usar.
  • Si la variable pasará a ser un parámetro del sistema automático.
Esto último nos va a permitir cambiarla desde el propio sistema y también optimizarla.
 
Hecho esto, pulsamos ACEPTAR y ya tenemos incluida la variable. Como decíamos, el precio de la orden de stop de protección vendrá determinado por las funciones anteriormente descritas. Lo primero que debemos observar es que dependiendo de si el negocio abierto es a largo o a corto, la función será una u otra. 
 
Siendo así, el sistema necesita saber cómo está posicionado para decidir qué función debe usar: Esto se va complicando ¿verdad? Veamos cómo solucionarlo. Lo primero que vamos a hacer para hacer el sistema más sencillo y que nos podamos centrar en lo que nos interesa, será olvidarnos del tema de ModoEntrada y quedarnos sólo con la regla de entrada en función de la banda del TRIX:
sistema3
He eliminado el resto de elementos seleccionándolos y pulsando a continuación la tecla [Supr].
 
El siguiente paso consistira en añadir una nueva variable a la que llamaré ULTIMO. Los pasos a dar serían los mismos que los vistos anteriormente (botón derecho sobre carpeta Variables y pulsar Añadir):
sistema4
Como vemos, dejamos el valor inicial a cero y no seleccionamos la opción Usar como Parámetro ya que sólo lo vamos a usar a nivel interno. Lo que vamos a hacer es cambiar el valor de Ultimo cada vez que hagamos un nuevo negocio, pasando a valer 1 o -1 según el signo del negocio. Para poder cambiar el valor de una variable, usamos el elemento Sentencia:
sistema5
Al pulsar Sentencia, veremos que el puntero del ratón cambia y pasa a ser una cruz. Pinchamos con dicha cruz sobre el lienzo y, sin soltar el botón, dibujamos un cuadrado:
sistema6
Automáticamente aparecerá un formulario donde podemos asignar valor a variables. En nuestro caso, ponemos el valor Ultimo = 1 y luego pulsamos Aceptar:
sistema6
Hecho esto, unimos el elemento COMPRA con esta nueva sentencia:
sistema8
¿Qué hemos conseguido con esto? Pues hacer que, cada vez que entremos a LARGO, el sistema cambie Ultimo a 1.
Repetimos los mismos pasos para las entradas a CORTO, sólo que en este caso Ultimo se iguala a -1:
sistema9
Una vez tenemos todo esto, vamos a incluir una segunda variable a la que llamaré PENTRADA. Esta variable va a almacenar el precio de entrada de cada negocio que ejecutemos. Es decir, si entramos a corto a 9897, pues PENTRADA valdrá 9897. Hacemos esto porque el precio de entrada es uno de los datos que debemos definir en la función para calcular el precio del stop de pérdidas. 
Los pasos son los mismos que hemos usado para crear la variable Ultimo. 
sistema10
Por tanto, creamos dos nuevas sentencias donde actualizar el valor de PENTRADA, asignándole el precio de cierre de la barra donde ejecutamos la orden de entrada de cada negocio:
sistema11
Ya estamos en disposición de poder elegir el tipo de función que vamos a usar, ¿Cómo? Pues según lo que valga la variable Ultimo.
 

El elemento Condición

El elemento Condición lo usábamos para realizar preguntas en los sistemas. En función de la respuesta, el sistema tomará una dirección u otra. Por tanto, usaremos este tipo de elemento para preguntar cual es el valor de la variable Ultimo.
 
Para ello, añadimos una nueva Condición:
condicion
El proceso para insertarla es exactamente el mismo que el que hemos descrito para la Sentencia. Una vez hemos dibujado el elemento sobre el lienzo, nos aparecerá un formulario donde debemos especificar lo siguiente:
condicion1
Cuando Ultimo valga 1, enviaremos la orden Stop de Pérdidas para los negocios COMPRADORES. Para especificar al sistema que queremos comprar o vender, usamos los objetos de Compra/Venta.
 
Insertamos uno de estos elementos, y en el formulario que aparece, definimos la orden stop cogiendo como referencia la función correspondiente:
condicion2
De donde cabe destacar que:
  • Elegimos como Orden la opción Cerrar Largo.
  • Elegimos como Tipo de Orden la opción STOP.
  • Escribimos como precio la función asociada a las operacines a LARGO.
Visual Chart distingue entre Ventas para crear un nuevo negocio y Ventas para liquidar un negocio comprador abierto. Si elegimos Orden = Venta, lo que hace el programa es DOBLARNOS LA POSICION, tal y como veíamos con el sistema original, mientras que con esta opción que hemos elegido, lo que hacemos es aclararle al sistema que lo que queremos es que nos cierre las posiciones abiertas.
 
Una vez creada la orden de salida, debemos enlazar los distintos elementos entre sí con las siguientes uniones:
sistema12
Ya tendríamos, llegados a este punto, el stop de protección para los negocios compradores. 
 
El proceso para crear el stop para los negocios vendedores sería exactamente el mismo, teniendo especial cuidado en cuanto a cómo debemos enlazar dicha orden con la parte que acabamos de ver. 
Además, deberemos elegir como orden Cerrar Corto y cambiar el precio de la orden por la función correspondiente. El proceso resultante sería el siguiente:
sistema13
Con esto ya habríamos terminado. ¡Ya tenemos añadidos los stops de protección!
 
El proceso ha sido largo pero creo que ha merecido la pena, ya que ahora podremos controlar las pérdidas del sistema TRIX. No obstante, antes de acabar y de ver el resultado de dicha modificación, es conveniente hacer un último cambio al código del sistema: Si queremos evitar que la estrategia genere más negocios de los que haría si no usáramos el stop de pérdidas, debemos impedir que vuelva a entrar en el mismo sentido en caso de que se ejecute el stop de protección.
Para ello, el último paso que habría que dar sería introducir las dos siguientes condiciones a las reglas de entrada:
sistema14

Resultado

Una vez tenemos el sistema montado, veamos cómo se comporta aplicado sobre el gráfico:
grafico15

 

Conclusiones

Obviamente, el diseño de stops de pérdidas supone una mayor complejidad de programación a lo visto anteriormente. No obstante, si entendemos esta idea y somos capaces de llevarla a cabo, habremos ganado mucho en cuanto a la autonomía que tendremos a la hora de desarrollar sistemas automáticos (al menos, a través del Diseñador Visual de Visual Chart).
 
 
Oscar Cuevas, desarrollador de estrategias e indicadores en Visual Chart Group
  1. en respuesta a Siames
    #6
    15/07/13 22:15

    A mí me parece interesante. Saludos

  2. #5
    12/07/13 08:32

    Gracias por dedicar tu tiempo en explicarnos con tanto detalle un procedimiento.

  3. en respuesta a Txuliren
    #3
    11/07/13 13:56

    juas

  4. en respuesta a Siames
    #2
    11/07/13 11:07

    Con corbata y tal hasta parecen algo...

  5. #1
    11/07/13 11:03

    Que enrevesada manera de perder dinero

Cookies en rankia.com

Utilizamos cookies propias y de terceros con finalidades analíticas y para mostrarte publicidad relacionada con tus preferencias a partir de tus hábitos de navegación y tu perfil. Puedes configurar o rechazar las cookies haciendo click en “Configuración de cookies”. También puedes aceptar todas las cookies pulsando el botón “Aceptar”. Para más información puedes visitar nuestra política de cookies.

Aceptar