Estrategia de trading multi-temporal basada en los indicadores Supertrend y CCI


Fecha de creación: 2024-01-18 15:09:33 Última modificación: 2024-01-18 15:09:33
Copiar: 2 Número de Visitas: 855
1
Seguir
1617
Seguidores

Estrategia de trading multi-temporal basada en los indicadores Supertrend y CCI

Descripción general

Esta estrategia combina el indicador de tendencia súper y el índice de canales de mercancías (CCI) para lograr un seguimiento de tendencias y la generación de señales de transacción en un marco de tiempo múltiple. La idea principal de la estrategia es usar el indicador CCI para determinar la dirección de la tendencia a corto plazo, mientras que la combinación del indicador de tendencia súper para determinar la dirección de la tendencia a medio y largo plazo.

Principio de estrategia

Indicadores del CCI para determinar tendencias a corto plazo

El indicador CCI puede determinar el fenómeno de sobrecompra y sobreventa, cuando el indicador CCI cruza el eje 0 de abajo hacia arriba, es una señal de más cabeza, en cambio, es una señal de cabeza vacía. Esta estrategia utiliza esta característica para determinar la dirección de la tendencia a corto plazo.

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 y la posición del eje central del indicador CCI.

TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up 
TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn

Esta parte del código determina si la curva cc está en el eje 0 y si es así, actualiza la trayectoria superior de la tendencia súper y la trayectoria inferior actualiza la trayectoria inferior.

Indicadores de tendencia súper para determinar tendencias a medio y largo plazo

El indicador de tendencia súper puede determinar la dirección de la tendencia a medio y largo plazo mediante la combinación del indicador ATR con el precio. Cuando el precio rompe la tendencia súper, la señal ascendente es una señal múltiple y la baja es una señal de cabeza hueca.

La fórmula de cálculo para los indicadores de tendencia súper en esta estrategia es la siguiente:

Up=hl2-(Factor*atr(Pd)) 
Dn=hl2+(Factor*atr(Pd))

Donde Factor y Pd son los parámetros ajustables.

La variable de tendencia determina la dirección actual de la tendencia:

Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1)

Integración del CCI y las supertendencias

Mediante la integración del indicador CCI y el indicador de tendencia súper, la estrategia permite la determinación de tendencias en marcos temporales múltiples. El indicador CCI captura tendencias a corto plazo, mientras que el indicador de tendencia súper capta tendencias a medio y largo plazo.

Cuando ambas direcciones coinciden, se produce una señal de negociación más confiable.

isLong  = st_trend == 1
isShort = st_trend == -1

El tiempo de entrada es para el corto plazo y el medio plazo, y el tiempo de salida es para el corto plazo y el medio plazo.

Ventajas estratégicas

El juicio de los marcos de tiempo múltiples

La estrategia integra indicadores de tendencia a corto y medio plazo para que las señales de negociación sean más fiables.

Parámetros ajustables

Los parámetros Factor en el indicador de tendencia súper y el cici_period en el indicador CCI se pueden ajustar según el mercado, lo que hace que la estrategia sea más flexible.

Sencillo y claro

La estructura de la estrategia es simple y clara, fácil de entender y implementar, muy adecuada para los principiantes en el comercio cuantitativo.

Amplio alcance

Se puede aplicar a mercados como acciones, divisas, criptomonedas, etc., y se puede ajustar según los parámetros para diferentes variedades.

Riesgos estratégicos y soluciones

Los precios han cambiado mucho.

Cuando los precios fluctúan fuertemente, se producen muchas señales falsas. Se puede aumentar adecuadamente el parámetro Factor de la tendencia súper, reduciendo la frecuencia de negociación de la estrategia.

No es suficiente.

La supertendencia por sí sola no es suficiente para seguir la fuerza, se puede considerar la combinación con un indicador de dinámica para seguir la tendencia en la fase de aceleración de la tendencia.

Estrategias para detener el daño

Esta estrategia no tiene un límite de pérdidas, se puede combinar con el tamaño del indicador ATR para establecer trails.

Dirección de optimización de la estrategia

Relevancia del mercado

Ajustar los parámetros de la tendencia súper y el CCI según las características de los diferentes mercados para mejorar la estabilidad de la estrategia.

Combinación de indicadores de movimiento

Combinado con indicadores de dinámica como MACD, KDJ, se puede obtener un mayor rendimiento al seguir la tendencia en la fase de aceleración de la tendencia.

Aprendizaje integrado

Optimización de los parámetros de la estrategia y las reglas de negociación utilizando métodos de aprendizaje automático y aprendizaje integrado.

Resumir

Esta estrategia combina con éxito las supertendencias y el indicador CCI, lo que permite la determinación de tendencias en marcos temporales múltiples. La estrategia es simple y fácil de entender, los parámetros son ajustables y el potencial de ganancias es alto. Se puede optimizar aún más mediante la modulación, el stop loss y el aprendizaje integrado, para que sea una estrategia de negociación confiable, estable y eficiente.

Código Fuente de la Estrategia
/*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 )