A estratégia de seguimento de tendências é uma estratégia de negociação de tendências baseada no cruzamento de médias móveis. Ela usa o cruzamento de uma média móvel exponencial (EMA) e uma média móvel Hull (HMA) para determinar a direção da tendência e gerar sinais de negociação em conformidade.
A estratégia emprega duas médias móveis com parâmetros diferentes: uma EMA mais rápida e uma HMA mais lenta.
Quando a EMA mais rápida cruza acima da HMA mais lenta, ela é vista como o início de uma tendência de alta, e a estratégia colocará uma ordem longa no preço de mercado na próxima barra aberta.
Para otimizar o tempo de entrada, a estratégia incorpora uma opção Heikin-Ashi. Quando ativada, os sinais de compra e venda serão baseados em barras Heikin-Ashi em vez de velas normais.
A estratégia também emprega uma configuração de stop loss. Quando a perda da posição atinge a porcentagem de stop loss pré-definida, a posição será fechada ao preço de mercado, limitando a perda máxima por negociação.
As vantagens desta estratégia incluem:
A utilização do cruzamento entre a EMA e a HMA para determinar as tendências pode tirar partido de diferentes médias móveis de períodos e melhorar a precisão.
A negociação baseada em tendências evita agitar oscilações menores e reduz os negócios desnecessários.
A opção Heikin-Ashi otimiza o tempo de entrada filtrando sinais falsos.
O stop loss móvel limita efetivamente a perda máxima por negociação.
Os parâmetros personalizáveis permitem a otimização para diferentes produtos e prazos.
Os riscos desta estratégia incluem:
Como um sistema que segue a tendência, apresenta um desempenho inferior durante os mercados de gama.
Pode incorrer em grandes perdas quando ocorre uma inversão da tendência.
A configuração inadequada de stop loss pode causar paradas desnecessárias ou aumentar as perdas.
A má regulação dos parâmetros pode levar a excesso de negociação ou inatividade.
Os períodos de EMA e HMA necessitam de otimização para diferentes produtos e prazos.
Heikin-Ashi não pode evitar completamente o risco de falhas.
A estratégia pode ser melhorada pelos seguintes aspectos:
Utilize mais indicadores como MACD, KDJ para melhorar a precisão da tendência.
Adicionar mais filtros, como volume, ATR para reduzir falhas.
Otimizar os parâmetros das médias móveis com base em produtos e prazos.
Ajustar a percentagem de stop loss para um melhor comportamento de stop loss.
Considere as características de captação de lucro, como a parada de transferência de lucro e a captação parcial de lucro.
Teste formas alternativas de calcular a base de custos de posição para otimização.
A estratégia de seguimento de tendências identifica tendências usando cruzamento de médias móveis e otimiza o desempenho por meio de Heikin-Ashi e stop loss móvel. É adequado para negociação de tendências de médio a longo prazo e pode ser melhorado através de ajuste de parâmetros e expansão de recursos. Mas os usuários devem estar cientes dos riscos de reversões e stop loss inadequados.
/*backtest start: 2022-10-30 00:00:00 end: 2023-11-05 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("𝐉𝐔𝐈𝐂𝐘 𝐓𝐑𝐄𝐍𝐃", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=15) //Heikin Ashi Option ha = input(true, title = "Heikin Ashi Source") src = ha ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, barmerge.gaps_off, barmerge.lookahead_off) : close usestoploss = input(true, title="Stop Loss") //EMA len1 = input.int(9, minval=1, title="EMA Length") ema = ta.ema(src, len1) emaline = plot(ema, title="EMA", color=color.blue, linewidth=2) //HMA len2 = input.int(69, minval=1, title="HMA Length") hma = ta.wma(2*ta.wma(src, len2/2)-ta.wma(src, len2), math.floor(math.sqrt(len2))) hmaline = plot(hma, title="HMA", color=color.purple, linewidth=2) fillcolor = hma < ema ? color.blue : color.purple fill(emaline, hmaline, title="EMA Fill", color=color.new(fillcolor, 80), editable=true) //Stop Loss Conditions stoplosspercent = input.float(title="Stop Loss (%)", defval=-6.5, minval=-50, maxval=0, step=.1) / 100 stoploss = strategy.position_avg_price * (1 + stoplosspercent) stop = stoploss > close and stoploss[1] < close[1] and strategy.position_size > 0 and usestoploss //Buy Sell Conditions buy = hma < ema sell = hma > ema //Trades and Alerts if buy strategy.entry("Long Position", strategy.long, comment="BUY") // alert("{\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar) if sell and strategy.openprofit > 0 strategy.close("Long Position", comment="SELL") // alert("{\n\"action\": \"close_at_market_price\",\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar) if stop strategy.close("Long Position", comment="STOP") // alert("{\n\"action\": \"close_at_market_price\",\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar) //Alternate Labels var pos = 0 if buy and pos <= 0 pos := 1 if sell and pos >= 0 pos := -1 buylabel = pos == 1 and (pos != 1)[1] selllabel = pos == -1 and (pos != -1)[1] //Plot Labels plotshape(buylabel, style=shape.labelup, location=location.belowbar, color=color.blue, text="BUY", textcolor=color.white, size=size.tiny) plotshape(selllabel, style=shape.labeldown, location=location.abovebar, color=color.purple, text="SELL", textcolor=color.white, size=size.tiny) plotshape(stop, style=shape.labeldown, location=location.abovebar, color=color.yellow, text="STOP", textcolor=color.white, size=size.tiny)