Estrategia de impulso entre ciclos contenidos

El autor:¿ Qué pasa?, Fecha: 2023-09-20 14:59:37
Las etiquetas:

Resumen general

La idea central de esta estrategia es determinar la dirección de la tendencia utilizando el patrón de vela contenido entre ciclos y usarlo como señal de entrada. Cuando aparece un patrón contenido entre ciclos que contiene la vela anterior, podemos inferir que este es un punto en el que la tendencia se está revirtiendo, momento en el que podemos ir largo en una ruptura por encima del máximo anterior o ir corto en una ruptura por debajo del mínimo anterior, con la configuración adecuada de stop loss y take profit.

Estrategia lógica

  1. Compruebe si se produce el patrón contenido entre ciclos. La lógica específica es: el máximo de la vela actual es menor que el máximo de la vela anterior, y el mínimo de la vela actual es mayor que el mínimo de la vela anterior.

  2. Determine si la vela anterior fue alcista o bajista. Si el cierre fue mayor que el abierto, fue alcista. Si el cierre fue menor que el abierto, fue bajista.

  3. Si la vela anterior fue alcista y se produce el patrón contenido, coloque una orden de compra en el máximo de la vela anterior más el 10% de su rango.

  4. Si la vela anterior fue bajista y se produce el patrón contenido, coloque una orden de parada de venta en el mínimo de la vela anterior menos el 10% de su rango.

  5. Una vez que se activa la orden de stop y se abre la posición, se establece el stop loss y se obtiene ganancia.

  6. Si se forma otro patrón dentro de la barra, cierre primero las posiciones existentes y luego coloque nuevas órdenes pendientes.

Análisis de ventajas

Las ventajas de esta estrategia incluyen:

  1. Utiliza la lógica inherente de las velas y proporciona un tiempo de entrada preciso.

  2. Las reglas son simples y fáciles de seguir para el comercio real.

  3. El stop loss y el take profit basados en el rango de las velas anteriores ayudan a controlar el riesgo.

  4. Las nuevas órdenes pendientes se colocan cada vez que aparece un patrón calificado, lo que nos permite seguir la nueva tendencia.

Análisis de riesgos

También hay algunos riesgos:

  1. El patrón contenido no siempre resulta en la inversión de tendencia o aceleración.

  2. La distancia de stop loss puede ser demasiado pequeña para soportar grandes fluctuaciones en el mercado.

  3. El objetivo de obtener ganancias puede ser demasiado amplio, impidiendo obtener ganancias oportunas.

  4. La estrategia se basa más en las tendencias de los mercados.

  5. La alta frecuencia de las operaciones conduce a altos costes de transacción.

Soluciones:

  1. Añadir otros indicadores para confirmar las señales y reducir las falsas señales.

  2. Ampliar ligeramente el stop loss, pero no más del 50% del rango de las velas anteriores.

  3. Acortar el objetivo de obtener ganancias a alrededor del 50% del rango de las velas anteriores.

  4. Optimizar la gestión de capital, reducir el tamaño de las posiciones individuales para diferentes mercados.

  5. Relajar los criterios de entrada para reducir la frecuencia de las operaciones.

Direcciones de optimización

Algunas maneras de optimizar la estrategia:

  1. Añadir un indicador de tendencia como el MACD para determinar la dirección de la tendencia, evitando los golpes durante la consolidación.

  2. Utilice técnicas de stop loss más avanzadas como el stop de seguimiento o el stop loss de protección de ganancias.

  3. Prueba diferentes índices de stop loss y toma ganancias para encontrar los parámetros óptimos.

  4. Añadir la lógica de reentrada para capturar la tendencia de nuevo después de la parada de pérdida.

  5. Optimizar el tamaño de las posiciones en función de la volatilidad del mercado.

  6. Optimizar la gestión del capital, como el tamaño de la posición fraccionaria fija.

  7. Prueba la estrategia en diferentes productos y plazos.

Conclusión

En resumen, esta es una estrategia que utiliza el patrón contenido entre ciclos para determinar los puntos de inflexión de la tendencia y colocar órdenes pendientes para capturar las reversiones de la tendencia. Tiene las ventajas de señales de entrada claras, reglas simples y riesgos controlables, pero también tiene algunos riesgos de señal falsa y espacio para la optimización. Podemos mejorar aún más su estabilidad y rentabilidad combinando filtros de tendencia, optimizando paradas, ajustando tamaños de posición, etc. Es más adecuado para mercados de tendencia, y necesita ser optimizado y probado para diferentes condiciones de mercado antes de su uso real para maximizar su efectividad.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

// Inside Bar Momentum Strategy
// As defined on Babypips.com
// https://www.babypips.com/trading/forex-inside-bar-20170113

// strategy("Babypips: Inside Bar Momentum Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=5)

From_Year  = input(defval = 2018, title = "From Year")
From_Month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
From_Day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
To_Year    = input(defval = 9999, title = "To Year")
To_Month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
To_Day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
Start  = timestamp(From_Year, From_Month, From_Day, 00, 00)  // backtest start window
Finish = timestamp(To_Year, To_Month, To_Day, 23, 59)        // backtest finish window
Window = true

Stop_Buy_Perc  = input(10, "Stop Buy Order Percentage From Previous Candle's Range")/100
Stop_Loss_Perc = input(20, "Stop Loss Distance from High/Low of Previous Candle")/100
Take_Prof_Perc = input(80, "Take Profit Distance from High/Low of Previous Candle")/100

Risk = input(2, "Percentage Of EQUITY to risk per trade", step=0.1, minval=0, maxval=100)/100

Inside_Bar = high[1] > high[0] and low[1] < low[0]
Prev_Range = high[1] - low[1]
Bullish = open[1] < close[1]
Bearish = open[1] > close[1]

// Get Key Levels 
Long_Stop_Buy_Level   = high[1] + (Prev_Range * Stop_Buy_Perc)
Short_Stop_Buy_Level  = low[1]  - (Prev_Range * Stop_Buy_Perc)
Long_Stop_Loss_Level  = high[1] - (Prev_Range * Stop_Loss_Perc)
Short_Stop_Loss_Level = low[1]  + (Prev_Range * Stop_Loss_Perc)
Long_Take_Prof_Level  = high[1] + (Prev_Range * Take_Prof_Perc)
Short_Take_Prof_Level = low[1]  - (Prev_Range * Take_Prof_Perc)

// Position Sizing
long_qty = floor((strategy.equity * Risk) / (Long_Stop_Buy_Level - Long_Stop_Loss_Level))
short_qty = floor((strategy.equity * Risk) / (Short_Stop_Loss_Level - Short_Stop_Buy_Level))

// -------------------------- LONG CONDITIONS --------------------------------//
// The first candlestick must be bullish (green or white) and if the second 
// candlestick is completely contained by the first, set a buy stop order at 
// the first candle’s high plus 10% of its range (high minus low).

// Place the stop loss at the first candle’s high minus 20% of its range 
// and set the target at the first candle’s high plus 80% of its range

// If another inside bar pattern forms, the current position should be closed 
// or the pending buy/sell order must be canceled and entry orders must be 
// updated to the latest candles.

Long_Condition = Window and Inside_Bar and Bullish
if (Long_Condition)
    // Incase we still have a buy stop order in the market
    strategy.cancel_all()
    // Close any existing positions according to the rules
    strategy.close_all()
    strategy.entry("Bullish IB", strategy.long, stop=Long_Stop_Buy_Level)
    strategy.exit("Bullish Exit","Bullish IB", stop=Long_Stop_Loss_Level, limit=Long_Take_Prof_Level)
    
// -------------------------- SHORT CONDITIONS -------------------------------//
// The first candlestick must be bearish (red or black) and if the second 
// candlestick is completely contained by the first, set a sell stop order at 
// the first candle’s low minus 10% of its range (high minus low).

// Place the stop loss at the first candle’s low plus 20% of its range and 
// set the target at the first candle’s low minus 80% of its range.

// If another inside bar pattern forms, the current position should be closed 
// or the pending buy/sell order must be canceled and entry orders must be 
// updated to the latest candles.

Short_Condition = Window and Inside_Bar and Bearish
if (Short_Condition)
    // Incase we still have a buy stop order in the market
    strategy.cancel_all()
    // Close any existing positions according to the rules
    strategy.close_all()
    strategy.entry("Bearish IB", strategy.short, stop=Short_Stop_Buy_Level)
    strategy.exit("Bearish Exit","Bearish IB", stop=Short_Stop_Loss_Level, limit=Short_Take_Prof_Level)
    
// ----------------------------- PLOTTING ------------------------------------//
plotshape(Inside_Bar, style=shape.arrowdown, location=location.abovebar, color=purple)


Más.