Estrategia de negociación de ruptura baja de apertura alta de cierre

El autor:¿ Qué pasa?, fecha: 2024-02-02 12:03:45
Las etiquetas:

img

Resumen general

La estrategia de trading de breakout abierto alto cerrado bajo es una estrategia de seguimiento de tendencias. Identifica la dirección de tendencia a corto plazo comprobando la relación entre los precios de apertura y cierre en los gráficos de velas. Cuando una tendencia comienza, se ingresan posiciones largas o cortas para capturar el impulso rápidamente.

Estrategia lógica

La lógica básica es verificar si el precio abierto es igual al precio más bajo o más alto del candelabro. Una señal larga se activa cuando el precio abierto es igual al bajo. Una señal corta se activa cuando el precio abierto es igual al alto. Esto tiene como objetivo detectar breakouts que sugieren una tendencia a corto plazo.

Una vez que se activa una señal, se abrirá una posición de tamaño fijo de inmediato. El stop loss se establece en función del indicador ATR para rastrear la volatilidad del mercado. El nivel de toma de ganancias es un múltiplo de RR fijo de la distancia de stop loss desde el precio de entrada. Cuando el precio alcanza el stop loss o take profit, la posición se cerrará en consecuencia.

La estrategia también aplana todas las posiciones en una hora de corte diaria definida por el usuario, como 30 minutos antes del cierre del mercado estadounidense.

Análisis de ventajas

Las principales ventajas son:

  1. Usando precios de apertura/cierre para identificar rápidamente las señales de ruptura.

  2. Señales de entrada claras que sean fáciles de implementar.

  3. Detener pérdidas y obtener ganancias oportunas para asegurar las ganancias y limitar las pérdidas.

  4. Posiciones planas en el límite diario para evitar el riesgo de brecha durante la noche.

  5. Neutral en el mercado, se aplica a divisas, acciones, criptomonedas, etc.

Análisis de riesgos

Algunos riesgos a considerar:

  1. Frecuente stop loss con ATR en mercados agitados.

  2. Sobreajuste a instrumentos específicos y sesiones sin filtros adicionales.

  3. El nivel de utilidad fija puede ser inferior en tendencias fuertes.

  4. El mal momento en las posiciones de aplanamiento podría perder tendencias o causar pérdidas innecesarias.

Áreas de mejora

Algunas maneras de optimizar aún más:

  1. Experimentar con varias técnicas de stop loss para diferentes condiciones de mercado.

  2. Añadir filtros con indicadores de impulso, etc. para evitar señales falsas.

  3. Ajuste dinámico de los niveles de toma de ganancias basado en la volatilidad del mercado.

  4. Optimizar el tiempo de corte diario para varios instrumentos y sesiones de negociación.

Conclusión

La estrategia de breakout Open High Close Low ofrece una forma sencilla de impulsar el comercio. Reglas claras de entrada y salida lo hacen fácil de implementar y administrar. Pero las optimizaciones adicionales en parámetros como stop loss, take profit, filtros mejorarían su robustez en más condiciones de mercado.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Open-High-Low strategy

strategy('Strategy: OLH', shorttitle="OLH", overlay=true)

// Inputs
slAtrLen = input.int(defval=14, title="ATR Period for placing SL", group="StopLoss settings")
showSLLines = input.bool(defval=false, title="Show SL lines in chart", tooltip="Show SL lines also as dotted lines in chart. Note: chart may look untidy.", group="Stolploss settings")
// Trade related
rrRatio = input.float(title='Risk:Reward', step=0.1, defval=2.0, group="Trade settings")
endOfDay = input.int(defval=1500, title="Close all trades, default is 3:00 PM, 1500 hours (integer)", group="Trade settings")
mktAlwaysOn = input.bool(defval=true, title="Markets that never closed (Crypto, Forex, Commodity)", tooltip="Some markers never closes. For those cases, make this checked.", group="Trade settings")
lotSize = input.int(title='Lot Size', step=1, defval=1, group="Trade settings")


// Utils
green(open, close) => close > open ? true : false
red(open, close) => close < open ? true : false
body(open, close) => math.abs(open - close)
lowerwick = green(open, close) ? open - low : close - low
upperwick = green(open, close) ? high - close : high - open
crange = high - low
crangep = high[1] - low[1] // previous candle's candle-range
bullish = close > open ? true : false
bearish = close < open ? true : false


// Trade signals
longCond = barstate.isconfirmed and (open == low)
shortCond = barstate.isconfirmed and (open == high)

// For SL calculation
atr = ta.atr(slAtrLen)
highestHigh = ta.highest(high, 7)
lowestLow = ta.lowest(low, 7)
longStop = showSLLines ? lowestLow - (atr * 1) : na
shortStop = showSLLines ? highestHigh + (atr * 1) : na
plot(longStop, title="Buy SL", color=color.green, style=plot.style_cross)
plot(shortStop, title="Sell SL", color=color.red, style=plot.style_cross)

// Trade execute
h = hour(time('1'), syminfo.timezone)
m = minute(time('1'), syminfo.timezone)
hourVal = h * 100 + m
totalTrades = strategy.opentrades + strategy.closedtrades
if (mktAlwaysOn or (hourVal < endOfDay))
    // Entry
    var float sl = na
    var float target = na
    if (longCond)
        strategy.entry("enter long", strategy.long, lotSize, limit=na, stop=na, comment="Enter Long")
        sl := longStop
        target := close + ((close - longStop) * rrRatio)
        alert('Buy:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar)
    if (shortCond)
        strategy.entry("enter short", strategy.short, lotSize, limit=na, stop=na, comment="Enter Short")
        sl := shortStop
        target := close - ((shortStop - close) * rrRatio)
        alert('Sell:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar)

    // Exit: target or SL
    if ((close >= target) or (close <= sl))
        strategy.close("enter long", comment=close < sl ? "Long SL hit" : "Long target hit")
    if ((close <= target) or (close >= sl))
        strategy.close("enter short", comment=close > sl ? "Short SL hit" : "Short target hit")
else if (not mktAlwaysOn)
    // Close all open position at the end if Day
    strategy.close_all(comment = "Close all entries at end of day.")



Más.