Estrategia de comercio de productos básicos de la pesca de fondo adaptativa ampliada de la CCI

El autor:¿ Qué pasa?, Fecha: 2023-12-21 14:30:03
Las etiquetas:

img

Resumen general

Esta estrategia se basa en el indicador del canal de productos básicos (CCI) y emplea niveles de entrada adaptativos dinámicos para determinar el momento de la reversión de la tendencia, al tiempo que utiliza un stop loss para bloquear las ganancias.

Estrategia lógica

El indicador principal es el CCI, utilizado para detectar zonas de sobreventa, lo que sugiere oportunidades de inversión de tendencia. Además, la extensión de las zonas de sobreventa del CCI varía según los diferentes instrumentos y entornos de mercado. Por lo tanto, esta estrategia adopta un enfoque "distante", examinando los niveles más bajos del CCI durante ciertos períodos de retroceso, para establecer dinámicamente el nivel de entrada de compra del CCI. Si el CCI más bajo en los últimos 40 días está por encima de -90, entonces -90 se convierte en el nuevo umbral de zona de sobreventa, y así sucesivamente. Este diseño adaptativo permite que los niveles de entrada se adapten dinámicamente a diferentes condiciones del mercado, buscando entradas más conservadoras durante tendencias bajistas fuertes mientras que entradas más agresivas durante los mercados de rango.

Específicamente, el nivel de señal de compra CCI predeterminado es -145. La estrategia luego comprueba las lecturas más bajas de CCI en los últimos 40 días, 50 días, etc. Si el CCI más bajo está por encima del siguiente nivel como -90, entonces -90 se convierte en el nuevo nivel de entrada. Y así sucesivamente, el nivel de entrada puede cambiar entre -145 / -90 / -70 / -50 / -4 / 0 / +25 / +50 / +70 dinámicamente. Una señal de entrada larga se activa cuando CCI cae por debajo del nivel correspondiente.

Además, se utiliza un stop loss para bloquear las ganancias, con el nivel de stop subiendo junto con el precio.

Análisis de ventajas

  • En este contexto, la Comisión considera que la medida no constituye una ayuda estatal.
  • El diseño adaptativo de los niveles de entrada permite que la estrategia se adapte automáticamente a diferentes entornos de mercado
  • El seguimiento del stop loss ayuda a fijar las ganancias de manera efectiva

En comparación con los niveles de entrada fijos, este diseño dinámico permite un tiempo de entrada optimizado. Perseguir entradas más conservadoras durante fuertes tendencias bajistas reduce el riesgo, mientras que entradas más bajas durante los mercados de rango permiten capturar más oportunidades. Esto mejora la adaptabilidad de la estrategia.

El CCI en sí es un indicador claro y fiable para identificar los niveles de sobrecompra/sobreventa. Se ha comprobado la lógica de juzgar las inversiones de tendencia basadas en el CCI. Combinado con el diseño dinámico de entrada, la ventaja general de esta estrategia es significativa.

Análisis de riesgos

  • El CCI no es perfecto y tiene algunos atributos rezagados.
  • El ajuste dinámico de los niveles de entrada tampoco puede corresponder perfectamente a los cambios en el entorno del mercado.
  • La alta volatilidad en los mercados de materias primas.

La lógica de detectar puntos de inversión de tendencia tiene algunos atributos rezagados. El momento de entrada puede no ser preciso durante aumentos repentinos de precios o caídas. Además, el mecanismo adaptativo puede no encajar perfectamente en el entorno actual del mercado, lo que lleva a entradas no óptimas. Por último, las altas fluctuaciones en los mercados de materias primas pueden causar grandes pérdidas si los parámetros de stop loss no se establecen correctamente.

Direcciones de mejora

  • Optimización de los parámetros de las CCI y de los períodos de suavizado, eficacia de las pruebas de las diferentes longitudes de las CCI
  • Prueba más tipos de niveles de entrada, encuentra mejores valores predeterminados o diseños adaptables
  • Prueba diferentes parámetros de stop loss, aumenta adecuadamente el rango de stop loss para que coincida con los atributos de alta volatilidad de los mercados de materias primas

En particular, el propio CCI, el diseño de nivel de entrada y los parámetros de stop loss pueden mejorarse.

Resumen de las actividades

Esta estrategia combina la lógica de usar CCI para detectar zonas de sobrecompra / sobreventa y el diseño dinámico de nivel de entrada adaptativo para capturar las reversiones de tendencia. En comparación con los parámetros fijos, los niveles de entrada dinámicos mejoran significativamente la adaptabilidad. Este modelo de captura de reversión de entrada con stop loss trasero puede aprovechar las oportunidades con un fuerte impulso y reducir las pérdidas a tiempo. Con parámetros configurados correctamente, esta estrategia demuestra viabilidad y robustez. Se pueden hacer mejoras adicionales optimizando los parámetros de CCI y las reglas de nivel de entrada para lograr una mayor estabilidad y rentabilidad.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Extended Adaptive CCI Entry Strategy for Commodities", shorttitle="Ext_Adaptive_CCI_Entry_Com", overlay=true)

// Inputs
cciLength = input(20, title="CCI Period")
defaultCCIEntryOversold = input(-145, title="Default CCI Entry Oversold Level")
adaptiveCCIEntryLevel90 = input(-90, title="Adaptive CCI Entry Level for 40 Days")
adaptiveCCIEntryLevel70_50Days = input(-70, title="Adaptive CCI Entry Level for 50 Days")
adaptiveCCIEntryLevel50 = input(-50, title="Adaptive CCI Entry Level for 60 Days")
adaptiveCCIEntryLevel4 = input(-4, title="Adaptive CCI Entry Level for 90 Days")
adaptiveCCIEntryLevel0 = input(0, title="Adaptive CCI Entry Level for 120 Days")
adaptiveCCIEntryLevel25 = input(25, title="Adaptive CCI Entry Level for 140 Days")
adaptiveCCIEntryLevel50_160Days = input(50, title="Adaptive CCI Entry Level for 160 Days")
adaptiveCCIEntryLevel70_180Days = input(70, title="Adaptive CCI Entry Level for 180 Days")
lookback40 = input(40, title="Lookback Period for -90 Level")
lookback50 = input(50, title="Lookback Period for -70 Level")
lookback60 = input(60, title="Lookback Period for -50 Level")
lookback90 = input(90, title="Lookback Period for -4 Level")
lookback120 = input(120, title="Lookback Period for 0 Level")
lookback140 = input(140, title="Lookback Period for +25 Level")
lookback160 = input(160, title="Lookback Period for +50 Level")
lookback180 = input(180, title="Lookback Period for +70 Level")

// Indicator Calculation
cci = ta.cci(close, cciLength)

// Determine adaptive entry level based on lookback periods
var float entryLevel = defaultCCIEntryOversold // Initialize with the default level
if ta.lowest(cci, lookback40) > adaptiveCCIEntryLevel90
    entryLevel := adaptiveCCIEntryLevel90
if ta.lowest(cci, lookback50) > adaptiveCCIEntryLevel70_50Days
    entryLevel := adaptiveCCIEntryLevel70_50Days
if ta.lowest(cci, lookback60) > adaptiveCCIEntryLevel50
    entryLevel := adaptiveCCIEntryLevel50
if ta.lowest(cci, lookback90) > adaptiveCCIEntryLevel4
    entryLevel := adaptiveCCIEntryLevel4
if ta.lowest(cci, lookback120) > adaptiveCCIEntryLevel0
    entryLevel := adaptiveCCIEntryLevel0
if ta.lowest(cci, lookback140) > adaptiveCCIEntryLevel25
    entryLevel := adaptiveCCIEntryLevel25
if ta.lowest(cci, lookback160) > adaptiveCCIEntryLevel50_160Days
    entryLevel := adaptiveCCIEntryLevel50_160Days
if ta.lowest(cci, lookback180) > adaptiveCCIEntryLevel70_180Days
    entryLevel := adaptiveCCIEntryLevel70_180Days

// Entry Condition
longCondition = cci < entryLevel

// Entry and Exit
if (longCondition)
    strategy.entry("Long", strategy.long, qty=1)
    alert("Long entry executed at " + str.tostring(close), alert.freq_once_per_bar)

trailOffset = input(10.0, title="Trailing Stop Offset in USD")
strategy.exit("Trailing Stop", "Long", trail_offset = trailOffset, trail_price = close)
if (close < entryLevel - trailOffset)
    alert("Long position closed at " + str.tostring(close), alert.freq_once_per_bar)

// Plotting
plot(series=cci, color=color.purple, title="CCI")
hline(price=defaultCCIEntryOversold, color=color.red, title="Default CCI Entry Oversold Level")
hline(price=adaptiveCCIEntryLevel90, color=color.orange, title="CCI -90 Level (40 Days)")
hline(price=adaptiveCCIEntryLevel70_50Days, color=color.yellow, title="CCI -70 Level (50 Days)")
hline(price=adaptiveCCIEntryLevel50, color=color.green, title="CCI -50 Level (60 Days)")
hline(price=adaptiveCCIEntryLevel4, color=color.blue, title="CCI -4 Level (90 Days)")
hline(price=adaptiveCCIEntryLevel0, color=color.purple, title="CCI 0 Level (120 Days)")
hline(price=adaptiveCCIEntryLevel25, color=color.aqua, title="CCI +25 Level (140 Days)")
hline(price=adaptiveCCIEntryLevel50_160Days, color=color.black, title="CCI +50 Level (160 Days)")
hline(price=adaptiveCCIEntryLevel70_180Days, color=color.gray, title="CCI +70 Level (180 Days)")


Más.