Estratégia de negociação de tendência de média móvel dinâmica

Autora:ChaoZhang, Data: 2023-11-15 17:45:13
Tags:

img

Resumo

Esta estratégia é baseada no indicador de média móvel dinâmica, combinado com bandas de Bollinger e RSI para filtragem de sinais de comércio. Implementa uma tendência seguindo uma estratégia de longo prazo. A estratégia julga a tendência calculando a mudança do preço de fechamento da média móvel dinâmica de Heiken Ashi e a compara com bandas de Bollinger para gerar sinais de comércio. Com o filtro RSI, pode identificar efetivamente pontos explosivos de tendência para rastreamento de tendência.

Estratégia lógica

O núcleo desta estratégia é calcular a mudança do preço de fechamento de Heiken Ashi. Especificamente, ele calcula a diferença entre o MA da barra atual e o MA de duas barras anteriores, em seguida, multiplica por um coeficiente de sensibilidade para obter o valor preciso de mudança do MA.

Em seguida, esse valor de mudança é comparado com a diferença entre a banda superior e a banda inferior das Bandas de Bollinger. Se a mudança de MA for maior do que a diferença BB, ela é considerada uma explosão de tendência. Quando a explosão é positiva, ou seja, a mudança de MA é positiva, ela gera um sinal longo e uma barra verde. Quando a explosão é negativa, ou seja, a mudança de MA é negativa, ela gera um sinal de fechamento e uma barra vermelha.

Além disso, esta estratégia possui um filtro RSI que só permite sinais longos quando o RSI é superior a um limiar, evitando o risco de reversão da tendência.

Vantagens

  • O MA dinâmico para acompanhar eficazmente as alterações de tendência
  • BB como indicador dinâmico combinado com MA para uma melhor identificação da explosão de tendência
  • Filtro RSI evita sinais falsos de rebotes baixos
  • Só adequado para um mercado de alta persistente
  • Parâmetros flexíveis e ajustáveis para diferentes produtos e prazos

Riscos

  • Long só não pode lucrar com a tendência de queda
  • Excessiva dependência da otimização de parâmetros para diferentes produtos e prazos
  • Incapacidade de captar a inversão de tendência de forma eficaz, pode levar a grandes perdas
  • Configurações incorretas do filtro RSI podem perder oportunidades de negociação
  • A alta sensibilidade pode gerar trocas ruidosas

Os métodos de controlo do risco incluem: ajustamento adequado dos parâmetros de robustez, combinação de outros indicadores para avaliar a inversão da tendência, utilização apenas em tendências claras a longo prazo, etc.

Orientações de otimização

Há algum espaço para a otimização adicional:

  • Tente diferentes fontes de preços como fechamento, médias móveis, etc para melhor suavização

  • Ajustar os parâmetros dos períodos MA e BB para otimização em diferentes produtos

  • Tente relação de relação em vez de coeficiente de sensibilidade para um valor de indicador mais intuitivo

  • Adicionar outros filtros como linhas de tendência, volume, etc para melhorar a qualidade do sinal

  • Desenvolver uma estratégia curta baseada em padrões de indicadores

  • Incorporar mecanismos de stop loss para um melhor controlo dos riscos

Conclusão

No geral, esta é uma tendência relativamente estável após a estratégia. Ele usa média móvel dinâmica para determinar a direção da tendência, BB para identificar pontos explosivos, RSI para filtrar sinais falsos, realizando um sistema de tendência longo. Mas também tem alguns riscos, exigindo ajuste de parâmetros para diferentes produtos e prazos e incapacidade de lucrar com tendências de queda. Há espaço para melhorias adicionais como melhorar a qualidade do sinal, desenvolver uma estratégia curta, adicionar stop loss etc. para alcançar um melhor desempenho.


/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

///////////Original Script Courtesy of Lazy_Bear.... Absolute Legend\\\\\\\\\\\\\\\

strategy('SmoothedWaddah', overlay=false, initial_capital=1)
sensitivity = input(150, title='Sensitivity')
fastLength = input(20, title='MacD FastEMA Length')
slowLength = input(40, title='MacD SlowEMA Length')
channelLength = input(20, title='BB Channel Length')
mult = input(1.5, title='BB Stdev Multiplier')
RSI14filter = input(40, title='RSI Value trade filter')

////////////MacD Calculation of price//////////////////////////////
calc_macd(source, fastLength, slowLength) =>
    fastMA = ta.ema(source, fastLength)
    slowMA = ta.ema(source, slowLength)
    fastMA - slowMA

/////////BolingerBand Calculation of Price///////////////////////
calc_BBUpper(source, length, mult) =>
    basis = ta.sma(source, length)
    dev = mult * ta.stdev(source, length)
    basis + dev

calc_BBLower(source, length, mult) =>
    basis = ta.sma(source, length)
    dev = mult * ta.stdev(source, length)
    basis - dev

//////heinkenashi chart call for closing price "smoothing mechanism"\\\\\\\\\\\\\\\\\\\\\\\\\\\
point = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close)

////////////////////T1 is change in MacD current  candle from previous candle Sensitivy amplifies calculation/////////////////////
t1 = (calc_macd(point, fastLength, slowLength) - calc_macd(point[1], fastLength, slowLength)) * sensitivity
//////////////////////T2 is  T1 from two candles prior\\\\\\\\\\\\\\\\\\\\\\\\\\\
t2 = (calc_macd(point[2], fastLength, slowLength) - calc_macd(point[3], fastLength, slowLength)) * sensitivity

////////////////E1 is difference in bolinger band upper and lower...E2 is E1 from one candle prior not needed//////////////
e1 = calc_BBUpper(ohlc4, channelLength, mult) - calc_BBLower(ohlc4, channelLength, mult)
//e2 = (calc_BBUpper(close[1], channelLength, mult) - calc_BBLower(close[1], channelLength, mult))

//////signal bar printing.. Up if MacD positive .. Down if MacD negative//////////
trendUp = t1 >= 0 ? t1 : 0
trendDown = t1 < 0 ? -1 * t1 : 0

///////plots difference in macD*Sensitivity, color change if increasing or decreasing. 
//////color is green/lime if explosion is up \ color is red/orange if explosion is down/////////
plot(trendUp, style=plot.style_columns, linewidth=1, color=trendUp < trendUp[1] ? color.new(color.lime,45) : color.new(color.green,45), title='UpTrend')
plot(trendDown, style=plot.style_columns, linewidth=1, color=trendDown < trendDown[1] ? color.new(color.orange,45) : color.new(color.red,45), title='DownTrend')
plot(e1, style=plot.style_line, linewidth=2, color=color.new(#A0522D, 0), title='ExplosionLine')


////////////Entry conditions and Concept/////////////////////
////////////Long Only System. T1 is measuring the distance between MACD EMA's. This is Multiplied
////////////by the sensitivity so that it can be compared to the difference between BollingerBand. 
/////////////{this could have been a ratio maybe i will work with that in a different script.} 
/////////////I found that 135-175 sensitivy allows for values to be compared on most charts.....
////////////If the (difference between the EMA)*(Sensitivity) is greater than (BB upper line- BB lower line)
////////////it is considered an explosion in either the downside or the upside.The indicator will print
///////////a bar higher than the trigger line either green or red (up or down respectively)//////////////////

longCondition = trendUp > e1 and ta.rsi(close, 14) > RSI14filter
if longCondition
    strategy.entry('up', strategy.long)

strategy.close('up', trendDown > e1)



Mais.