Estrategia de cobertura de tendencias basada en indicadores de ETI y HMACCI

El autor:¿ Qué pasa?, Fecha: 2024-01-23 11:26:14
Las etiquetas:

img

Resumen general

Esta estrategia combina las señales de negociación bilaterales de la ETI y los indicadores CCI mejorados, y adopta un enfoque de cobertura para posiciones abiertas y cerradas con frecuencia, con el objetivo de obtener ganancias continuas más estables. La lógica clave es la cruz dorada y la cruz muerta de los promedios móviles rápidos y lentos del indicador ETI, combinados con las señales de compra y venta del indicador HMACCI para determinar la dirección del mercado. Los riesgos se controlan limitando las condiciones de apertura, mientras que se establecen las lógicas de stop loss y take profit.

Principio de la estrategia

La estrategia se basa principalmente en la combinación de los indicadores de la ETI y HMACCI.

El indicador TSI contiene una media móvil rápida y una media móvil lenta para determinar las señales comerciales. Cuando la línea rápida rompe la línea lenta hacia arriba, es una señal de compra, y viceversa para las señales de venta. Esto puede capturar los cambios en las tendencias del mercado de manera más sensible.

El indicador HMACCI se basa en el indicador CCI tradicional que utiliza la media móvil del casco en lugar del precio en sí mismo, que puede filtrar algo de ruido y juzgar las zonas de sobrecompra y sobreventa.

La lógica clave de la estrategia consiste en combinar los juicios de estos dos indicadores y establecer ciertas condiciones adicionales para filtrar las señales falsas, tales como examinar el precio de cierre de las barras anteriores y los precios máximo y mínimo durante varios períodos para controlar la calidad de las señales de reversión.

Para las posiciones de apertura, si se cumplen las condiciones, las órdenes de mercado se colocan cada vez que se cierra la barra, yendo tanto largo como corto.

Para obtener ganancias y detener pérdidas, se establecen stop loss flotantes y se cierran todas las órdenes cuando se alcanza el beneficio objetivo.

Ventajas de la estrategia

Se trata de una estrategia de cobertura de alta frecuencia relativamente estable y fiable, cuyas principales ventajas son:

  1. La combinación de dos indicadores puede evitar de manera eficaz las falsas señales
  2. Las operaciones de cobertura frecuentes de cada barra conducen a fluctuaciones más estables en las ganancias y pérdidas
  3. La lógica de apertura estricta y las condiciones de stop loss pueden controlar los riesgos
  4. La combinación de juicios de tendencia e inversión conduce a una mayor tolerancia a fallas
  5. Sin sesgo direccional, adecuado para diversas condiciones de mercado
  6. Gran espacio de parámetros ajustable, puede ser optimizado para diferentes productos

Análisis de riesgos

Los principales riesgos a tener en cuenta son:

  1. Más pérdidas de comisiones causadas por el comercio de alta frecuencia
  2. Impossibilidad de evitar perfectamente estar encerrado en un seto
  3. Entrada demasiado agresiva si los parámetros no se establecen correctamente
  4. Dificultad para soportar pérdidas enormes a corto plazo

Los riesgos pueden reducirse mediante:

  1. Ajustar la frecuencia de apertura adecuadamente para reducir el impacto de las tarifas
  2. Optimizar los parámetros del indicador para garantizar la calidad de la señal
  3. Aumentar la amplitud de las pérdidas de detención pero sufrir más pérdidas de cobertura
  4. Parámetros de ensayo en diferentes productos

Direcciones de optimización

Todavía hay mucho espacio para optimizar esta estrategia, principalmente:

  1. Optimización de parámetros como el período, la longitud, etc. a través de pruebas
  2. Intentar diferentes combinaciones de indicadores, por ejemplo, MACD, BOLL, etc.
  3. Modificar la lógica de apertura, establecer filtros más estrictos
  4. Optimización de las estrategias de toma de ganancias y stop loss, por ejemplo, dinámicas, breakout stops
  5. Usando métodos de aprendizaje automático para encontrar rangos de parámetros más estables
  6. Pruebas en diferentes productos comerciales y plazos
  7. Combinar la detección de tendencias para evitar operaciones excesivamente agresivas en mercados de rango

Conclusión

En general, esta estrategia es una estrategia de cobertura estable y confiable con una alta tolerancia a fallas. Combina indicadores de tendencia y reversión, obteniendo retornos constantes a través de operaciones frecuentes bidireccionales. Además, la estrategia en sí tiene un fuerte potencial de optimización y representa una idea de comercio de alta frecuencia que vale la pena investigar más.


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

// This source code is subject to the terms of the suns bipolarity
//©SeaSide420
//@version=4
strategy(title="TSI HMA CCI", default_qty_type=strategy.cash,default_qty_value=1000,commission_type=strategy.commission.percent,commission_value=0.001)
long = input(title="TSI Long Length", type=input.integer, defval=25)
short = input(title="TSI Short Length", type=input.integer, defval=25)
signal = input(title="TSI Signal Length", type=input.integer, defval=13)
length = input(33, minval=1, title="HMACCI Length")
src = input(open, title="Price Source")
ld = input(50, minval=1, title="Line Distance")
CandlesBack = input(8,minval=1,title="Candles Look Back")
StopLoss= input(3000,minval=1, title="Stop Loss")
TargetProfitAll= input(3000,minval=1, title="Target Profit Close All")
FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12)
FromDay=input(defval=1,title="FromDay",minval=1,maxval=31)
FromYear=input(defval=2020,title="FromYear",minval=2020)
ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12)
ToDay=input(defval=1,title="ToDay",minval=1,maxval=31)
ToYear=input(defval=9999,title="ToYear",minval=2017)
start=timestamp(FromYear,FromMonth,FromDay,00,00)
finish=timestamp(ToYear,ToMonth,ToDay,23,59)
window()=>true
ul = (ld)
ll = (ld-ld*2)
ma = hma(src, length)
cci = (src - ma) / (0.015 * dev(src, length))
price = close
double_smooth(src, long, short) =>
	fist_smooth = ema(src, long)
	ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)*10
tsi_value2=ema(tsi_value/10, signal)*10
cc = color.white
ct = color.new(color.gray, 90)
if cci<ll or cci[1]<ll
    cc:=color.red
if cci>ul or cci[1]>ul
    cc:=color.green
if cci<ul and cci>ll
    cc:=color.new(color.yellow, 90)
ccc = color.white
if cci>ul
    ccc:=color.green
if cci<cci[1] and cci<ul and cci>ll
    ccc:=color.red
if cci<ll
    ccc:=color.red
if cci>cci[1] and cci>ll and cci<ul
    ccc:=color.green
tsiplot= plot(tsi_value, color=color.lime)
tsiplot2=plot(tsi_value2, color=color.red)    
colorchange2 =tsi_value>tsi_value2?color.lime:color.orange
fill(tsiplot, tsiplot2, color=colorchange2, title="TSIBackground", transp=50)
band1 = hline(ul, "Upper Band 1", color=ct, linestyle=hline.style_dashed)
band0 = hline(ll, "Lower Band 1", color=ct, linestyle=hline.style_dashed)
fill(band1, band0, color=cc, title="MidBandBackground", transp=0)
band2 = hline(ul, "Upper Band 2", color=ct, linestyle=hline.style_dashed)
band3 = hline(ll, "Lower Band 2", color=ct, linestyle=hline.style_dashed)
cciplot2 = plot(cci, "CCIvHMA 2", color=color.black, transp=0, linewidth=5)
cciplot = plot(cci, "CCIvHMA", color=ccc, transp=0, linewidth=3)
hline(0, title="Zero")
hline(420, title="420")
hline(-420, title="-420")
fill(cciplot, cciplot2, color=ccc, title="CCIBackground", transp=0)
LongCondition=cci>cci[1] and cci>ll and src>src[CandlesBack] and tsi_value>tsi_value2
ShortCondition=cci<cci[1] and cci<ul and src<src[CandlesBack] and tsi_value<tsi_value2
plotshape(LongCondition, title="BUY", style=shape.circle, location=location.top, color=color.green)
plotshape(ShortCondition, title="SELL", style=shape.circle, location=location.top, color=color.red)
if  strategy.openprofit>TargetProfitAll
    strategy.close_all(when=window(),comment="close all profit target")
if LongCondition and strategy.openprofit>-1
    strategy.order("BUY", strategy.long,when=window())
if ShortCondition and strategy.openprofit>-1
    strategy.order("SELL", strategy.short,when=window())
strategy.exit("SL exit a sell", "SELL", loss = StopLoss,when=window())     
strategy.exit("SL exit a buy", "BUY", loss = StopLoss,when=window()) 

Más.