La estrategia es una estrategia de negociación cuantitativa basada en la interacción de indicadores relativamente fuertes (RSI) y oscilladores dinámicos (AO). La estrategia se basa principalmente en la captura de señales asociadas a la ruptura del RSI de la línea del 50 con el AO en la zona negativa para identificar oportunidades potenciales de hacer más. La estrategia utiliza un mecanismo de detención de pérdidas por porcentaje para gestionar el riesgo, utilizando el 10% de los fondos de la cuenta para operar por defecto.
La lógica central de la estrategia se basa en la colaboración de dos indicadores tecnológicos: 1. Indicador RSI: utiliza un indicador RSI de 14 ciclos para monitorear la movilidad de los precios, y cuando el RSI rompe el eje central de 50, se considera que se ha establecido una potencia alcista. 2. Indicador AO: calcula la movilidad de los precios comparando una media móvil de 5 y 34 ciclos, indicando que el mercado está en una zona de sobreventa cuando el AO es negativo. 3. Condiciones de entrada: Cuando el RSI rompe 50 y el AO es negativo, se abre más, lo que significa que se captura una señal de reversión del precio en la zona de sobreventa. 4. Condiciones de salida: Se utiliza un 2% de stop loss y un 1% de stop loss para asegurar una relación razonable de riesgo y beneficio por operación.
Es una estrategia de seguimiento de tendencias que combina indicadores RSI y AO para realizar múltiples operaciones mediante la captura de señales de reversión en zonas de sobreventa. La estrategia está diseñada de manera razonable, el control del riesgo está en su lugar, pero todavía hay espacio para la optimización. Se recomienda a los operadores que hagan una revisión histórica adecuada antes de su uso en el mercado real y que ajusten los parámetros de configuración de acuerdo con la situación real del mercado.
/*backtest start: 2024-10-01 00:00:00 end: 2024-10-31 23:59:59 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="🐂 BUY Only - RSI Crossing 50 + AO Negative", shorttitle="🐂 AO<0 RSI+50 Strategy", overlay=true) // ----------------------------- // --- User Inputs --- // ----------------------------- // RSI Settings rsiPeriod = input.int(title="RSI Period", defval=14, minval=1) // AO Settings aoShortPeriod = input.int(title="AO Short Period", defval=5, minval=1) aoLongPeriod = input.int(title="AO Long Period", defval=34, minval=1) // Strategy Settings takeProfitPerc = input.float(title="Take Profit (%)", defval=2.0, minval=0.0, step=0.1) stopLossPerc = input.float(title="Stop Loss (%)", defval=1.0, minval=0.0, step=0.1) // ----------------------------- // --- Awesome Oscillator (AO) Calculation --- // ----------------------------- // Calculate the Awesome Oscillator ao = ta.sma(hl2, aoShortPeriod) - ta.sma(hl2, aoLongPeriod) // Detect AO Crossing Zero aoCrossOverZero = ta.crossover(ao, 0) aoCrossUnderZero = ta.crossunder(ao, 0) // ----------------------------- // --- Relative Strength Index (RSI) Calculation --- // ----------------------------- // Calculate RSI rsiValue = ta.rsi(close, rsiPeriod) // Detect RSI Crossing 50 rsiCrossOver50 = ta.crossover(rsiValue, 50) rsiCrossUnder50 = ta.crossunder(rsiValue, 50) // ----------------------------- // --- Plotting Arrows and Labels --- // ----------------------------- // Plot AO Cross Over Arrow (AO+) plotshape(series=aoCrossOverZero, location=location.belowbar, color=color.green, style=shape.labelup, title="AO Crosses Above Zero", text="AO+", textcolor=color.white, size=size.small) // Plot AO Cross Under Arrow (AO-) plotshape(series=aoCrossUnderZero, location=location.abovebar, color=color.red, style=shape.labeldown, title="AO Crosses Below Zero", text="AO-", textcolor=color.white, size=size.small) // Plot RSI Cross Over Arrow (RSI Up) plotshape(series=rsiCrossOver50, location=location.belowbar, color=color.blue, style=shape.labelup, title="RSI Crosses Above 50", text="RSI Up", textcolor=color.white, size=size.small) // Plot RSI Cross Under Arrow (RSI Down) plotshape(series=rsiCrossUnder50, location=location.abovebar, color=color.orange, style=shape.labeldown, title="RSI Crosses Below 50", text="RSI Down", textcolor=color.white, size=size.small) // ----------------------------- // --- Buy Signal Condition --- // ----------------------------- // Define Buy Signal: AO is negative and previous bar's RSI > 50 buySignal = (ao < 0) and (rsiValue[1] > 50) // Plot Buy Signal plotshape(series=buySignal, location=location.belowbar, color=color.lime, style=shape.triangleup, title="Buy Signal", text="BUY", textcolor=color.black, size=size.small) // ----------------------------- // --- Strategy Execution --- // ----------------------------- // Entry Condition if buySignal strategy.entry("Long", strategy.long) // Exit Conditions // Calculate Stop Loss and Take Profit Prices if strategy.position_size > 0 // Entry price entryPrice = strategy.position_avg_price // Stop Loss and Take Profit Levels stopLevel = entryPrice * (1 - stopLossPerc / 100) takeProfitLevel = entryPrice * (1 + takeProfitPerc / 100) // Submit Stop Loss and Take Profit Orders strategy.exit("Exit Long", from_entry="Long", stop=stopLevel, limit=takeProfitLevel)