Esta estratégia combina os sinais bilaterais de negociação da ETI e indicadores CCI melhorados e adota uma abordagem de cobertura para posições abertas e fechadas com frequência, visando obter lucros contínuos mais estáveis. A lógica chave é a cruz de ouro e a cruz morta das médias rápidas e lentas do indicador ETI, combinadas com os sinais de compra e venda do indicador HMACCI para determinar a direção do mercado. Os riscos são controlados limitando as condições de abertura, enquanto são definidas as lógicas de stop loss e take profit.
A estratégia baseia-se principalmente na combinação dos indicadores da ETI e do HMACCI.
O indicador TSI contém uma média móvel rápida e uma lenta para determinar os sinais de negociação. Quando a linha rápida quebra a linha lenta para cima, é um sinal de compra, e vice-versa para os sinais de venda. Isso pode capturar mudanças nas tendências do mercado de forma mais sensível.
O indicador HMACCI baseia-se no indicador CCI tradicional que utiliza a média móvel do casco em vez do preço em si, o que pode filtrar algum ruído e avaliar as zonas de sobrecompra e sobrevenda.
A lógica fundamental da estratégia consiste em combinar os julgamentos destes dois indicadores e estabelecer certas condições adicionais para filtrar sinais falsos, tais como examinar o preço de fechamento das barras anteriores e os preços máximos e mínimos em vários períodos para controlar a qualidade dos sinais de reversão.
Para as posições de abertura, se as condições estiverem preenchidas, as ordens de mercado são colocadas cada vez que a barra se fecha, indo longas e curtas.
Para obter lucro e parar de perda, stop loss flutuante e fechar todas as ordens quando atingir o lucro alvo são definidos.
Trata-se de uma estratégia relativamente estável e fiável de cobertura de alta frequência, cujas principais vantagens são:
Os principais riscos a ter em conta são:
Os riscos podem ser reduzidos através de:
Ainda há muito espaço para otimizar esta estratégia, principalmente:
Em geral, esta estratégia é uma estratégia de hedge estável e confiável com alta tolerância a falhas. Combina indicadores de tendência e reversão, obtendo retornos constantes através de frequentes negociações bidirecionais. Além disso, a própria estratégia tem um forte potencial de otimização e representa uma idéia de negociação de alta frequência que vale a pena pesquisar ainda mais.
/*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())