Estrategia de seguimiento de tendencias basada en el indicador CCI


Fecha de creación: 2023-11-24 10:53:07 Última modificación: 2023-11-24 10:53:07
Copiar: 0 Número de Visitas: 745
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencias basada en el indicador CCI

Descripción general

La estrategia es una estrategia de seguimiento de tendencias basada en el indicador CCI. Utiliza dos indicadores CCI de diferentes períodos para generar señales de negociación. En concreto, monitorea si un indicador CCI de un período más corto rompe con un indicador CCI de un período más largo y decide sobre o en contra de la dirección de la ruptura.

Principio de estrategia

La lógica central de esta estrategia es la siguiente:

  1. Definir dos indicadores de CCI, ci1 es de 14 ciclos y ci2 es de 56 ciclos
  2. Cuando el ci1 se acerca al ci2, se hace más.
  3. Cuando ci1 hacia abajo se rompe con ci2, hacer espacio
  4. Después de la emisión de la señal de negociación, la posición en blanco se determina por los valores de ci1 y ci2

Las reglas específicas para hacer más son:

  1. ci1 sobre el ci2, es decir, el CCI de período corto sobre el CCI de período largo
  2. Condiciones de parada: ci1<-50 y tasa de variación o ci1 por debajo de 100

Las reglas específicas para hacer vacío son:

  1. Ci1 bajo el perforacici2, es decir, el CCI de período corto bajo el CCI de período largo
  2. Condiciones de parada: ci1>100 y tasa de variación>0 o ci2 sobre el desgaste de 100

Se puede ver que la estrategia aprovecha la sensibilidad de los CCI de períodos más cortos y la estabilidad de los CCI de períodos más largos para identificar y seguir tendencias.

Ventajas estratégicas

La estrategia tiene las siguientes ventajas:

  1. Utiliza el CCI para identificar las tendencias
  2. El diseño de doble CCI puede filtrar algunas transacciones de ruido
  3. Control del riesgo a la vez que se sigue la tendencia a través de una combinación de indicadores CCI a largo y corto plazo
  4. Las reglas de la estrategia son simples, claras, fáciles de entender y de implementar
  5. Es altamente configurable, con ciclos CCI y condiciones de parada personalizadas

Riesgo estratégico

La estrategia también tiene sus riesgos:

  1. El índice CCI tiene poca capacidad de reconocimiento de trayectorias de horizontal y oscilante
  2. El CCI de largo y corto plazo puede desviarse y causar señales de comercio erróneas
  3. La configuración inadecuada de las condiciones de parada puede causar grandes pérdidas
  4. La configuración incorrecta de los parámetros también puede tener un gran impacto en los ingresos de la estrategia

Resolvemos el riesgo:

  1. Se puede combinar con otros indicadores para evaluar el comportamiento y evitar el comercio en situaciones de crisis
  2. Aumentar las condiciones de filtración para evitar señales erróneas causadas por el desvío de CCI en períodos largos y cortos
  3. Optimización y prueba de diferentes condiciones de pérdida
  4. Selección de la combinación adecuada de parámetros mediante retroalimentación y optimización de parámetros

Dirección de optimización de la estrategia

Las áreas en las que la estrategia puede ser optimizada son:

  1. Añadir otros indicadores para formar un sistema de transacciones más SYSTEM
  2. Prueba de la diferencia de ganancias entre días de semana y sesiones
  3. Buscar los mejores parámetros combinando métodos de aprendizaje automático
  4. Ajuste de parámetros según las características de las diferentes variedades
  5. Optimización de las condiciones de apertura y negociación de las posiciones

Resumir

Esta estrategia en su conjunto es una estrategia de seguimiento de tendencias sencilla basada en brechas en el indicador CCI a largo y corto plazo. Es capaz de identificar la dirección de la tendencia y seguirla de manera efectiva. Al mismo tiempo, controla el riesgo mediante medios como el stop loss.

Código Fuente de la Estrategia
/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="my work",calc_on_order_fills=true,currency=currency.USD, default_qty_type=strategy.percent_of_equity,commission_type=strategy.commission.percent)


source = close
shortlength=input(14)
longlength=input(56)
aa=input(2)
Ss=input(75)

//Cci part
ci1=cci(source,shortlength)   //4시간봉의 기본 cci
ci2=cci(source,longlength)   //4시간봉에서 12시봉의 cci 무빙측정

//오린간 선생님의 WT + ichimoku
len = input(10)
lenTurn = input(9)
lenStd = input(26)

wtm_e(so, l) =>
    esa = ema(so, l)
    d = ema(abs(so - esa), l)
    ci = (so - esa) / (0.015 * d)
    ema(ci, l*2+1)

alh(len) => avg(lowest(len), highest(len))
alh_src(src, len) => avg(lowest(src, len), highest(src, len))

wt = wtm_e(close,len)
turn = alh_src(wt, lenTurn)
std = alh_src(wt, lenStd)

cnt = 0
if wt > turn
    cnt:=cnt+1
if wt > std
    cnt:=cnt+1


//100,-100선
h0 = hline(100)
h1 = hline(-100)

//plot(ci,color=green)
// plot(k,color=green)
// plot(d,color=red)
plot(ci1,color=green)
plot(ci2,color=red)

plot(0,color=black)
plot(100,color=black)
plot(-100,color=black)

fill(h0,h1,color=purple,transp=95)

bgcolor(cnt==0 ? red : cnt==1 ? blue : cnt == 2 ? green : na, transp = Ss)

//기간조정

Fromday = input(defval=1, title="from day", minval=1, maxval=31)
FromMonth = input(defval=1, title="from month", minval=1, maxval=12)
FromYr = input(defval=2019, title="from yr", minval=1970)

Today = input(defval=13, title="to day", minval=1, maxval=31)
ToMonth = input(defval=12, title="to month", minval=1, maxval=12)
ToYr = input(defval=2019, title="to yr", minval=1970)

startDate = timestamp(FromYr, FromMonth, Fromday, 00, 00)
finishDate = timestamp(ToYr, ToMonth, Today, 00, 00)
Time_cond = true


/////롱

if  crossover(ci1,ci2) and change(ci2)>0 and Time_cond
    strategy.entry("go", strategy.long, comment="go")
    
strategy.close("go", (ci2<0 and ci1 <-50 and change(ci1)<0) or (crossunder(ci1,-100) and strategy.openprofit<0) and change(cnt)<0)



/////숏

if  (crossunder(ci1,ci2) and change(ci2)<0 and falling(ci1,aa)) and Time_cond
    strategy.entry("die", strategy.short, comment="die")
    
strategy.close("die", (ci2>0 and ci1 > 100 and change(ci1)>0) or (crossover(ci2,100) and strategy.openprofit<0) and change(cnt)>0)