O recurso está a ser carregado... Carregamento...

Estratégia dinâmica de acompanhamento da tendência de onda

Autora:ChaoZhang, Data: 2024-12-20 16:17:27
Tags:EMASMAHLCMA

img

Resumo

Esta estratégia é um sistema de negociação quantitativo baseado no indicador WaveTrend e na tendência seguinte. Ele combina o indicador WaveTrend com médias móveis para formar uma estrutura de decisão de negociação completa. A estratégia utiliza EMA e SMA para calcular os valores da tendência da onda e as tendências gerais do mercado, identifica pontos de virada do mercado através de limiares de sobrecompra e sobrevenda e incorpora filtros de tendência para melhorar a precisão da negociação.

Princípio da estratégia

O núcleo da estratégia é implementado através das seguintes etapas:

  1. Calcular o preço médio do HLC (média dos preços de alta, baixa e de encerramento)
  2. Suavizar a média HLC utilizando a EMA para obter a linha ESA
  3. Calcular e suavizar o desvio entre a média HLC e a linha ESA utilizando a EMA
  4. Calcular o valor K com base no desvio e suave duas vezes com a EMA para obter a linha final TCI
  5. Usar a SMA para calcular a linha de tendência de longo prazo como filtro de tendência
  6. Gerar sinais de negociação quando a linha TCI ultrapassa os níveis de sobrecompra/supervenda e se alinha com a direção da tendência

Vantagens da estratégia

  1. Alta confiabilidade do sinal: reduz eficazmente os falsos sinais combinando o indicador WaveTrend e o filtro de tendência
  2. Controlo abrangente do risco: Limite claro de sobrecompra/supervenda para um stop-loss atempado
  3. Forte adaptabilidade: os parâmetros da estratégia podem ser ajustados de forma flexível às diferentes condições do mercado
  4. Lógica operacional clara: condições de entrada e saída explícitas, fáceis de executar
  5. Análise abrangente: considera flutuações a curto prazo e tendências a longo prazo, melhorando a estabilidade das trocas comerciais

Riscos estratégicos

  1. Risco de reversão da tendência: Possível atraso em mercados voláteis
  2. Sensibilidade dos parâmetros: diferentes combinações de parâmetros podem conduzir a resultados drasticamente diferentes
  3. Adaptabilidade do mercado: pode gerar trocas frequentes em mercados variados
  4. Gestão de capital: requer um controlo razoável das posições para lidar com a volatilidade do mercado
  5. Dependência técnica: a dependência de indicadores técnicos pode ignorar fatores fundamentais

Orientações para a otimização da estratégia

  1. Adicionar um filtro de volatilidade: ajustar os limiares de negociação durante períodos de alta volatilidade
  2. Incorporar análise de vários prazos: combinar sinais de diferentes prazos para melhorar a precisão
  3. Otimizar a adaptação dos parâmetros: ajustar dinamicamente os parâmetros dos indicadores com base nas condições do mercado
  4. Melhorar a gestão dos lucros/perdas: adicionar mecanismos dinâmicos de captação de lucros e stop-loss
  5. Adicionar confirmação de volume: Incorporar análise de volume para melhorar a confiabilidade do sinal

Resumo

A estratégia constrói um sistema de negociação robusto, combinando inteligentemente o indicador WaveTrend com filtros de tendência.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mojomarv

//@version=6
strategy("WaveTrend with Trend Filter", shorttitle="WaveTrend Trend", overlay=false, initial_capital = 100000)

// Inputs for the WaveTrend indicator
inputLength = input.int(10, title="Channel Length", minval=1)
avgLength = input.int(21, title="Average Length", minval=1)
obLevel = input.float(45, title="Overbought Level")
osLevel = input.float(-45, title="Oversold Level")
showSignals = input.bool(true, title="Show Buy/Sell Signals")

// Trend filter input
maLength = input.int(500, title="Trend MA Length", minval=1)

// Calculate WaveTrend values
hlc_avg = (high + low + close) / 3  // Renamed from hlc3 to hlc_avg
esa = ta.ema(hlc_avg, inputLength)
d = ta.ema(math.abs(hlc_avg - esa), inputLength)
k = (hlc_avg - esa) / (0.015 * d)
ci = ta.ema(k, avgLength)
tci = ta.ema(ci, avgLength)

// Moving average for trend detection
trendMA = ta.sma(close, maLength)

// Determine trend
bullishTrend = close > trendMA
bearishTrend = close < trendMA

// Generate signals with trend filter
crossUp = ta.crossover(tci, osLevel)
crossDown = ta.crossunder(tci, obLevel)

// Plot WaveTrend
plot(tci, title="WaveTrend Line", color=color.new(color.blue, 0), linewidth=2)
hline(obLevel, "Overbought", color=color.red, linestyle=hline.style_dotted)
hline(osLevel, "Oversold", color=color.green, linestyle=hline.style_dotted)
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_solid)

// Plot moving average for trend visualization
plot(trendMA, title="Trend MA", color=color.orange, linewidth=1)

// Plot buy and sell signals
plotshape(showSignals and crossUp, title="Buy Signal", location=location.belowbar, style=shape.labelup, color=color.new(color.green, 0), size=size.small)
plotshape(showSignals and crossDown, title="Sell Signal", location=location.abovebar, style=shape.labeldown, color=color.new(color.red, 0), size=size.small)

// Alerts
alertcondition(crossUp, title="Buy Alert", message="WaveTrend Buy Signal (Trend Confirmed)")
alertcondition(crossDown, title="Sell Alert", message="WaveTrend Sell Signal (Trend Confirmed)")
alertcondition(bullishTrend, title="bull", message="WaveTrend Sell Signal (Trend Confirmed)")
alertcondition(bearishTrend, title="bear", message="WaveTrend Sell Signal (Trend Confirmed)")

// Strategy logic
if crossUp and bullishTrend
    strategy.entry("Long", strategy.long)

if crossDown
    strategy.close("Long")

if crossDown and bearishTrend
    strategy.entry("Short", strategy.short)

if crossUp
    strategy.close("Short")

Relacionados

Mais.