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.
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.
Se trata de una estrategia de cobertura de alta frecuencia relativamente estable y fiable, cuyas principales ventajas son:
Los principales riesgos a tener en cuenta son:
Los riesgos pueden reducirse mediante:
Todavía hay mucho espacio para optimizar esta estrategia, principalmente:
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())