Esta estrategia integra el indicador de Supertrend y el Índice del Canal de Productos Básicos (CCI) para realizar un seguimiento de tendencias de múltiples marcos de tiempo y generación de señales comerciales. La idea principal es usar el indicador CCI para juzgar la dirección de la tendencia a corto plazo mientras se combina el indicador Supertrend para determinar la dirección de la tendencia a mediano y largo plazo.
El indicador CCI puede identificar escenarios de sobrecompra y sobreventa. Un cruce ascendente de la línea 0 es una señal alcista mientras que una descendente es una señal bajista.
cci_period = input(28, "CCI Period")
cci = cci(source, cci_period)
ML = input(0, "CCI Mid Line pivot")
El código anterior define el período del CCI y la posición media.
TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up
TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn
Este código comprueba si cci cruza por encima/por debajo de la línea 0 para actualizar la banda superior/inferior de Supertrend.
El indicador de Supertrend combina ATR con el precio para determinar las tendencias a medio y largo plazo.
La Supertrend se calcula como:
Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
Donde el factor y Pd son parámetros ajustables.
La variable tendencia determina la dirección actual de la super tendencia:
Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1)
Al integrar CCI y Supertrend, esta estrategia realiza el juicio de tendencias de varios marcos de tiempo.
Cuando las direcciones coinciden, se generan señales comerciales más confiables.
isLong = st_trend == 1
isShort = st_trend == -1
Entradas cuando corto y mediano plazo alinearse, salidas cuando las direcciones no están de acuerdo.
Integra indicadores a corto y medio plazo para señales más fiables.
El factor de supertendencia y el período del CCI pueden ajustarse a las condiciones del mercado.
Lógica simple y fácil de entender, genial para principiantes.
Aplicable a acciones, divisas, criptomonedas por ajuste de parámetros.
Muchas señales falsas pueden ocurrir cuando los precios fluctúan violentamente.
Combine los indicadores de impulso para rastrear las tendencias aceleradas.
Se añadirá el stop loss basado en el ATR para el control de riesgos.
Ajustar los parámetros para diferentes mercados.
Combina con el MACD, KDJ, etc. para capturar movimientos de impulso fuertes.
Utilice métodos de IA y conjunto para optimizar parámetros y reglas.
Esta estrategia combina con éxito Supertrend y CCI para el seguimiento de tendencias de múltiples marcos de tiempo. Lógica simple, buen potencial de recompensa y personalización. Puede mejorar aún más a través de la puesta a punto de parámetros, stop loss y aprendizaje automático para convertirse en un sistema de negociación sólido.
/*backtest start: 2024-01-10 00:00:00 end: 2024-01-17 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //@author=Daveatt StrategyName = "Best Supertrend CCI Strategy" ShortStrategyName = "Best Supertrend CCI Strategy" strategy(title=StrategyName, shorttitle=ShortStrategyName, overlay=true ) ////////////////////////// //* COLOR CONSTANTS *// ////////////////////////// AQUA = #00FFFFFF BLUE = #0000FFFF RED = #FF0000FF LIME = #00FF00FF GRAY = #808080FF DARKRED = #8B0000FF DARKGREEN = #006400FF GOLD = #FFD700 WHITE = color.white // Plots GREEN_LIGHT = color.new(color.green, 40) RED_LIGHT = color.new(color.red, 40) BLUE_LIGHT = color.new(color.aqua, 40) PURPLE_LIGHT = color.new(color.purple, 40) source = input(close) /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////// CCI ///////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// cci_period = input(28, "CCI Period") cci = cci(source, cci_period) //UL = input(80, "Upper level") //LL = input(20, "Lower Level") ML = input(0, "CCI Mid Line pivot") /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// ///////////////////////////// SUPERTREND ///////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// Factor=input(3,title="[ST] Factor", minval=1,maxval = 100, type=input.float) Pd=input(3, title="[ST] PD", minval=1,maxval = 100) /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////// SUPERTREND DETECTION ////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// f_supertrend(Factor, Pd) => Up=hl2-(Factor*atr(Pd)) Dn=hl2+(Factor*atr(Pd)) TrendUp = 0.0 TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up TrendDown = 0.0 TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn Trend = 0.0 Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1) Tsl = Trend==1? TrendUp: TrendDown [Trend, Tsl] [st_trend, st_tsl] = f_supertrend(Factor, Pd) // Plot the ST linecolor = close >= st_tsl ? color.green : color.red plot(st_tsl, color = linecolor , linewidth = 3,title = "SuperTrend", transp=0) isLong = st_trend == 1 isShort = st_trend == -1 longClose = isLong[1] and isShort shortClose = isShort[1] and isLong strategy.entry("Long", 1, when=isLong) strategy.close("Long", when=longClose ) strategy.entry("Short", 0, when=isShort) strategy.close("Short", when=shortClose )