Curso de Programación. PROBLEMAS Y EJERCICIOS. BLOQUE 3.

Todas las semanas plantearemos un ejercicio relacionado con lo visto durante el seminario. La resolución de los mismos se hará de forma conjunta cada cierto tiempo.

Si necesitan más aclaraciones o quieren comentar algo relativo al ejercicio, pueden contactar con nosotros a través del correo sistemas@visualchart.com.

Ejercicio 9.3. Gestión objetivo en Max/Min

Partiendo de la estrategia CCI con Objetivo, cambiar el objetivo de ganancias en función del último máximo o mínimo relevante:

Proceso:

- Quitar parámetros TaketProfit y PtosOPcte, ya que ahora no los vamos a usar.

- Añadir parámetro Length (100) para determinar el tamaño de los precios máximos y mínimos a considerar.

- Modificar las órdenes de salida limitadas:
1) Si estamos a Largo, orden objetivo = GetHighest(PriceHigh, Length).
2) Si estamos a Corto, orden objetivo = GetLowest(PriceLow, Length).

Ejercicio 9.2. Salida a Mercado

Partiendo de la estrategia Stop Loss CCI, cambiar las órdenes en STOP por órdenes de salida a mercado:



Proceso:

- Quitar las órdenes de salida en stop y realizar la siguiente comprobación:
1) Si estamos abiertos a Largo, si Cierre() < PrecioSTOP entonces cerrar a mercado.
2) Si estamos abiertos a Corto, si Cierre() > PrecioSTOP entonces cerrar a mercado.

Ejercicio 9.1. Añadir Horario

Partiendo del sistema Ruptura Bandas CCI, sólo permitir operar entre las 8:00 y las 16:00 horas:


Proceso:

- Añadir parámetros HoraInicio y HoraFin para que el usuario pueda elegir el intervalo de operativa.

- Añadir control de operativa en función del horario:
1) Si (Time() >= HoraInicio Y Time() < HoraFin) entonces permitir operar.
2) Si (Time() < HoraInicio O Time() >= HoraFin) entonces no permitir.
La función Time() devuelve la hora de cada barra en formato militar (hhmm), de ahí que los intervalos horarios los definamos como números enteros.

Si estamos fuera del intervalo y tenemos posiciones abiertas, cerrar a mercado.

Ejercicio 8.2. Sistema Precio en Cruce

Partiendo del sistema Sop/Res en función del ROC del tema 8, cambiar el precio de entrada para que sea estático, de modo que sólo coja el valor calculado para la barra del momento de cruce del ROC sobre su Banda Central:



Proceso:

- Añadir variables PCompra y PVenta. Estas variables nos van a servir para almancenar los precios calculados para el momento exacto del cruce.

- Cuando el ROC  cruce al alza a la banda, actualizamos ambas variables:
1) PCompra = Maxima + (1 x ROC).
2) PVenta = 0.

- Cuando el ROC cruce a la baja a la banda, actualizamos otra vez las variables:
1) PVenta = Minima - (1 x ROC).
2) PCompra = 0.

Siempre y cuando no valgan cero, enviaremos órdenes de entrada a largo y a corto en función de dichas variables.

Al inicializar las variables a cero, cancelamos el envío de órdenes en uno u otro sentido, de modo que sólo se enviarán órdenes de entrada a largo cuando el ROC esté por encima de su banda y lo mismo en el otro sentido.

Ejercicio 8.1. Estrategia Dos Series Inversa

Partiendo del sistema Dos Series del tema 8, diseñar un sistema que actúe en sentido contrario, es decir, que entre a largo cuando el original entra a corto y viceversa.



Proceso:
- Añadir parámetro Inverso (0). Este parámetro nos servirá para elegir entre operar en sentido inverso o según el sistema original.
- Control entrada según si es inverso: 
1) Si MOM(0,1) > BandaCompra entonces Entrar a Corto.
2) Si MOM(0,1) < BandaVenta entonces Entrar a Largo.

- Cambiar tipo de órdenes de salida: Las órdenes en STOP pasan a ser LIMITADAS. Esto se hace para que los momentos de salida también sean diametralmente opuestos.

Ejercicio 7.2. Utilizar el ADX-R

Partiendo del sistema Direccional, aplicar la siguiente regla para filtrar entradas:
- Si el ADX actual es menor que el ADX Promedio, no permitir entrar.



Para conseguir esto, compararemos las líneas 3 y 4 del indicador Directional Movement.

Si previamente había un negocio abierto, cambiaremos el tipo de orden por una orden de cierre (ExitLong o ExitShort) para deshacer la posición abierta previa.

Ejercicio 7.1. Gestión de Salida usando el ADX

En el sistema MACD con Filtro ADX, hemos visto que cada negocio va asociado con un crecimiento del ADX por encima de su banda. Además, especificábamos que sólo teníamos en cuenta movimientos con un ADX creciente.

En el siguiente ejercicio, vamos a plantear una regla de salida para salir de posición una vez consideremos que el impulso ha perdido fuerza. Para ello, la condición que debe cumplirse será la siguiente:

- Si el ADX retrocede X puntos desde su valor más alto, salir de posición:


Para conseguir este propósito, seguiremos los siguientes pasos:
1) Crear un parámetro llamado Retroceso (por defecto 20 puntos).
2) Crear una variable llamada TopeADX donde iremos guardando el valor más alto alcanzado. TopeADX se reinicia cada vez que se produce el cruce alcista del ADX con su banda.
3) Actualizar TopeADX con cada valor del ADX mayor.
4) Comprobar si la diferencia entre ADX y su TopeADX es mayor que Retroceso. En tal caso, cerrar posición.

Comentarios

Entradas populares de este blog

Como consultar el GAP % de un conjunto de valores

Bollinger Volatility Oscillator N

Estudio de las divergencias en el RSI