La mejor estrategia de negociación para el CCI Multi Timeframe de Supertrend

El autor:¿ Qué pasa?, Fecha: 2024-01-18 15:09:33
Las etiquetas:

img

Resumen general

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.

Estrategia lógica

Indicador del CCI para la tendencia a corto 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.

Supertendencia para la tendencia a medio y largo plazo

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)  

Integrar el CCI y el Supertrend

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.

Ventajas

El juicio de varios marcos de tiempo

Integra indicadores a corto y medio plazo para señales más fiables.

Parámetros personalizables

El factor de supertendencia y el período del CCI pueden ajustarse a las condiciones del mercado.

Sencillo y claro

Lógica simple y fácil de entender, genial para principiantes.

Amplia aplicación

Aplicable a acciones, divisas, criptomonedas por ajuste de parámetros.

Riesgos y soluciones

Precio de la herramienta

Muchas señales falsas pueden ocurrir cuando los precios fluctúan violentamente.

El retraso en los movimientos fuertes

Combine los indicadores de impulso para rastrear las tendencias aceleradas.

No hay pérdida de parada

Se añadirá el stop loss basado en el ATR para el control de riesgos.

Direcciones de optimización

Correlación con el mercado

Ajustar los parámetros para diferentes mercados.

Combinación de impulso

Combina con el MACD, KDJ, etc. para capturar movimientos de impulso fuertes.

Aprendizaje automático

Utilice métodos de IA y conjunto para optimizar parámetros y reglas.

Conclusión

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 )


Más.