Acceder

Sistema con objetivos adaptables

En anteriores artículos les hemos hablado de diferentes métodos para aplicar stops de pérdidas dinámicos a sus sistemas automáticos. Para complementar esto, en el presente artículo, expondremos una nueva idea en la que veremos cómo diseñar objetivos de beneficios adaptables a cada movimiento del activo.
 
Desarrollaremos esta idea partiendo de una estrategia en Visual Chart que utilizará como herramienta de trabajo el indicador MACD. El diseño del sistema lo haremos usando la Plataforma de Diseño Visual.
 

La estrategia de ejemplo

El sistema que vamos a diseñar es muy sencillo: Simplemente, se fijará en el cruce del MACD con la banda cero y operará a corto o a largo en función del cruce bajista o alcista. Quedaría así:
sistemas
La idea es desarrollar un sistema que opere a favor de tendencia. Y el MACD es un indicador bastante seguro aunque, como consecuencia, entra con cierto retardo. Como el sistema ofrece momentos de entrada fiables, el principal inconveniente es que no aprovecha los impulsos favorables, ya que espera a la señal contraria para deshacer posición:
 
sistema
De modo que le vamos a añadir un objetivo de un 0.2% que nos permita sacarle mayor rentabilidad a cada negocio:

sistema3

La idea no está mal, si bien no supone un cambio sustancial en los resultados del sistema, debido a que no todos los impulsos detectados nos van a permitir recuperar un 0.2% del nominal. ¿Podría mejorarse? Se nos ocurre una idea para ello, la cual expondremos a continuación.
 

Aplicación de Objetivos Adaptables

Como decimos, cuando detectamos un nuevo impulso (ya sea alcista o bajista) con el MACD, el problema que nos encontramos es que no todos los impulsos tendrán la suficiente fuerza como para alcanzar el objetivo esperado. Podríamos reducir el margen de ganancia a buscar, si bien al hacer esto, perderemos la oportunidad de aprovechar aquellos impulsos que sí tengan bastante recorrido.
 
Por tanto, lo ideal sería poder contar con un objetivo de beneficios que se adaptara a la fuerza de cada impulso en el que tengamos posiciones abiertas.
 
¿Puede medirse esto? Obviamente, no se tiene una conciencia cierta de la proyección de un movimiento, si bien existen algunas pautas que nos pueden dar pistas de las características del mismo.
 
Una de ellas sería la siguiente: en el gráfico que mostramos a continuación, el MACD marca una nueva tendencia bajista. El último impulso alcista se inició en el punto A, por lo que cabe esperar que la bajada cubra al menos el espacio que queda hasta dicho punto. Aunque luego la tendencia bajista ha llegado hasta el punto C, podemos decir que el recorrido mínimo esperado de esta tendencia sería el retroceso entre el punto B y el punto A. 
sistema
Suponiendo esto, podriamos tomar como precio objetivo el punto extremo de dicho recorrido mínimo, puesto que este valor irá variando en función del movimiento generado en cada momento, que es, de hecho, lo que pretendemos buscar.
 
A continuación, veremos cómo desarrollar esta idea mediante el lenguaje de programación. Lo primero que necesitamos es una función o funciones que nos permitan detectar automáticamente esos puntos A, B o C. En Visual Chart disponemos de dos funciones que nos aportan este dato, que son las funciones GetSwingHigh y GetSwingLow. Si las aplicamos al gráfico, la información que ofrecen es la siguiente:
sistema
De modo que cuando queramos detectar un nivel de soporte o resistencia haremos uso de estas funciones. Las funciones se añaden pinchando con el botón derecho sobre la carpeta Funcion y seleccionando Añadir:
sistema
Para determinar cuándo se produce un nuevo impulso, vamos a usar el propio indicador MACD. Si en lugar de usar el MACD usáramos otro oscilador o bien medias móviles, entonces sería la correspondiente herramienta la que determinaría la aparición de un nuevo movimiento. La regla que debemos incorporar al código del sistema sería la siguiente:
  1. Si se inicia un nuevo proceso alcista, guardamos el último mínimo generado (es decir, le preguntamos a la función GetSwingLow).
  2. Si se inicia un nuevo proceso bajista, guardamos el último máximo generado (es decir, le preguntamos a la función GetSwingHigh).
Estos datos van a equivaler al punto A del anterior ejemplo. Como debemos almacenar dicha información en algún lado, creamos dos nuevas variables que llamaremos Top y Bottom. El proceso quedaría de la siguiente manera:
sistema
Como ahora tenemos almacenado el inicio del impulso previo al actual, podemos determinar el punto final del recorrido mínimo (siempre y cuando haya habido una operación previa).  El último paso será cambiar las órdenes de salida, de modo que el precio de dichas órdenes venga determinado por las variables Top y Bottom:
sistema
Si se fijan, nos aseguramos que, previamente a lanzar la orden de salida, hayamos asignado algún valor a las variables. 
Hecho esto, ya tendríamos añadido el objetivo adaptable y podemos proceder a aplicarlo sobre un gráfico para ver los resultados.
 

Resultados obtenidos

Tras realizar la modificación, aplicamos el sistema sobre un gráfico, desde donde podemos ver cómo actúa el sistema:
sistema
Si empezamos comentando el negocio a corto del punto b, podemos ver cómo su objetivo queda lejos, ya que lo marca el mínimo previo a la entrada del punto a. La operación acaba en negativo y seguidamente se produce una nueva entrada a largo. El objetivo ahora lo marca el máximo previo al punto b, como vemos, mucho más corto que el de la anterior entrada.
 
Lo mismo sucede con la entrada del punto d, cerrando ambas en positivo pero con una ganancia no muy alta (como consecuencia de la poca volatilidad). El movimiento bajista del punto d se prolonga más allá del mínimo esperado, pero como no podemos preveer esta situación, no lo podemos aprovechar. Sin embargo, cuando entra el negocio a largo del punto e, sí que tenemos en cuenta el aumento de la volatilidad y por eso el objetivo está más alejado. Esto mismo sucede en el punto f, punto donde queda reflejado, de forma más patente, cómo se adapta el objetivo a cada nuevo movimiento.
 

Últimas conclusiones

En este caso hemos visto un ejemplo aplicado al indicador MACD. Como hemos comentado, en realidad, esta idea puede ser aprovechada con cualquier clase de herramienta de análisis, siempre y cuando ésta sea una herramienta de detección de tendencias. 
 
Oscar Cuevas
Visual Chart Group
 
 
 

 

¿Buscas un bróker?

Logo de IGIG

Gran cantidad de subyacentes, con acceso a más de 17.000 mercados

Ver más
Logo de AvaTradeAvaTrade

Importante oferta de futuros y opciones financieras

Ver más
Logo de EToroEToro

Dispone de más de 5.000 productos de inversión entre acciones, ETFs y criptomonedas

Ver más
  1. en respuesta a Gatocosmico
    -
    #4
    28/07/14 23:33

    Buenos días/tardes/noches

    el mínimo de las tres últimas barras es el GLI de 3 periodos. Esto se parece al huevo de Colón, ¿no?

    Un saludo

  2. en respuesta a Oscar Cuevas
    -
    #3
    25/07/14 17:14

    Gracias, aprovecho para agradecerte este blog, es muy interesante para aquellos que damos primeros pasos con PDV, si pudieses anotar también alguna entrada donde explicar la utilidad práctica de los bucles sería estupendo, pues trato de usarlos pero hay algo que no debo entender bien en su funcionamiento, estuve buscando en entradas pasadas pero no vi ninguna que lo tratase.

    Gracias de nuevo.

  3. en respuesta a Gatocosmico
    -
    #2
    25/07/14 08:21

    Estimado amigo. Es posible hacerlo, pero no hay una función que nos facilite este dato directamente, por lo que hay que calcularlo (no necesariamente con bucles). Anotaré la idea y en un próximo artículo explicamos cómo sería el proceso para conocimiento de todos los usuarios.

  4. #1
    24/07/14 21:58

    Interesante, ¿pero se puede programar en VC con PDV tomar como stop el mínimo de las tres últimas barras de un valor?, ojo no el mínimo(3) sino el valor mínimo que haya marcado en las últimas tres sesiones
    Supongo que sí pero no con esta función, ¿hay alguna función que pueda hacer esto o son necesarios el uso de bucles?

    Gracias y un saludo

Definiciones de interés