Esta estrategia es un sistema de negociación cuantitativo basado en el indicador RSI y los principios de reversión media. Identifica las oportunidades de reversión del mercado mediante la detección de condiciones de sobrecompra y sobreventa, combinadas con el análisis del rango de precios y la posición de cierre del precio. El concepto central es capturar las oportunidades de reversión media después de condiciones extremas del mercado, gestionando el riesgo a través de criterios de entrada estrictos y mecanismos dinámicos de stop-loss.
La estrategia emplea múltiples mecanismos de filtrado para determinar las señales de negociación: primero, el precio debe alcanzar un mínimo de 10 períodos, lo que indica una condición de mercado de sobreventa; segundo, el rango de precios del día debe ser el más grande en los últimos 10 días de negociación, lo que sugiere una mayor volatilidad del mercado; finalmente, confirma las posibles señales de reversión comprobando si el precio de cierre está en el cuartil superior del rango del día. La entrada se ejecuta a través de la confirmación de la ruptura, yendo largo si el precio se rompe por encima del máximo anterior dentro de los 2 días posteriores a que se cumplan las condiciones comerciales.
Esta es una estrategia de reversión media bien estructurada con lógica clara. A través del filtrado de múltiples condiciones y la gestión dinámica de stop-loss, la estrategia captura eficazmente las oportunidades de rebote de sobreventa del mercado mientras controla el riesgo. Aunque tiene algunas limitaciones, el rendimiento general se puede mejorar a través de una optimización y un refinamiento razonables. Se aconseja a los inversores que ajusten los parámetros en función de las características específicas del mercado y su tolerancia al riesgo al aplicar la estrategia en el comercio en vivo.
/*backtest start: 2024-11-04 00:00:00 end: 2024-12-04 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Larry Conners SMTP Strategy", overlay=true, margin_long=100, margin_short=100) // --- Inputs --- // Corrected the input type declaration by removing 'type=' tickSize = input.float(0.01, title="Tick Size (e.g., 1/8 for stocks)") // --- Calculate conditions --- // 1. Today the market must make a 10-period low low10 = ta.lowest(low, 10) is10PeriodLow = low == low10 // 2. Today's range must be the largest of the past 10 bars rangeToday = high - low maxRange10 = ta.highest(high - low, 10) isLargestRange = rangeToday == maxRange10 // 3. Today's close must be in the top 25 percent of today's range rangePercent = (close - low) / rangeToday isCloseInTop25 = rangePercent >= 0.75 // Combine all buy conditions buyCondition = is10PeriodLow and isLargestRange and isCloseInTop25 // --- Buy Entry (on the next day) --- var float buyPrice = na var bool orderPending = false var float stopLoss = na // Initialize stopLoss at the top level to avoid 'Undeclared identifier' errors if (buyCondition and strategy.position_size == 0) buyPrice := high + tickSize stopLoss := low orderPending := true // Condition to place buy order the next day or the day after if orderPending and ta.barssince(buyCondition) <= 2 strategy.entry("Buy", strategy.long, stop=buyPrice) orderPending := false // --- Stop-Loss and Trailing Stop --- if (strategy.position_size > 0) stopLoss := math.max(stopLoss, low) // Move stop to higher lows (manual trailing) strategy.exit("Exit", from_entry="Buy", stop=stopLoss) // --- Plotting --- // Highlight buy conditions bgcolor(buyCondition ? color.new(color.green, 50) : na) //plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy Setup") // Plot Stop-Loss level for visualization //plot(strategy.position_size > 0 ? stopLoss : na, color=color.red, linewidth=2, title="Stop-Loss Level")