Uma estratégia de inversão de tendência baseada em médias móveis, padrões de preços e volume

Autora:ChaoZhang, Data: 2024-01-17 17:48:40
Tags:

img

Resumo

Esta estratégia combina médias móveis, padrões de preços e volume para identificar pontos de reversão de tendência em potencial no mercado. Ela fica longa quando a média móvel rápida cruza acima da média móvel lenta, um padrão de engulfamento alcista aparece, o nível de resistência quebra e o volume de negociação aumenta. Ela fica curta quando ocorrem as condições opostas.

Princípios

A ideia central desta estratégia é usar uma combinação de médias móveis, padrões de ação de preços e volume como sinais para reversões futuras. Especificamente, cruzes de ouro e cruzes de morte de médias móveis podem indicar mudanças na tendência. Padrões de engulfamento de alta / baixa geralmente implicam reversões de curto prazo.

Em termos lógicos, a estratégia primeiro calcula médias móveis rápidas e lentas. Em seguida, define condições para identificar padrões de engolimento de alta/baixa. Os níveis de suporte e resistência são incorporados junto com a expansão de volume como condições adicionais. Os sinais de compra são acionados quando o MA rápido cruza acima do MA lento, um padrão de alta aparece, a resistência quebra e o volume aumenta. As condições opostas acionam sinais de venda.

Vantagens

A maior vantagem desta estratégia é usar uma combinação de vários sinais para confirmar reversões, o que ajuda a evitar falsos sinais. Confiar apenas em um único indicador, como médias móveis ou padrões de velas, tende a produzir negociações errôneas.

Além disso, essa estratégia utiliza conceitos de tendência e reversão. As reversões são buscadas apenas após uma tendência existente. Em outras palavras, a estratégia só procura retracements de contra-tendência dentro dos mercados de tendência. Isso ajuda a reduzir a aleatoriedade e aumenta a lucratividade.

Riscos

O maior risco desta estratégia são reversões fracassadas, onde o preço continua se movendo contra a direção do comércio após os sinais de entrada.

As soluções incluem o ajuste de períodos de média móvel para definir melhores tendências, o uso de stop losses mais amplos e a incorporação de mais fatores de confirmação antes de negociação de sinais de reversão.

Melhorias

Os possíveis caminhos de otimização para esta estratégia incluem:

  1. Ajuste dos períodos de média móvel para identificar as tendências ótimas a longo/curto prazo.

  2. Testar diferentes métodos de cálculo de suporte/resistência, como Pivot Points.

  3. Tentei outros indicadores de volume como Chaikin Fluxo de Dinheiro, oscilador de volume.

  4. Incorporar mais fatores de confirmação de reversão como padrões de gráficos de longo prazo, enormes picos de volume, etc.

  5. Usando futuros de índices de ações para verificar sinais entre mercados.

Através de testes rigorosos de combinações de parâmetros, podem ser alcançadas melhorias no desempenho.

Conclusão

Esta estratégia combina perfeitamente as médias móveis, a ação dos preços e o volume de reversões de negociação apenas em mercados de tendência.


/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Profit Table Strategy", overlay=true)

// Input parameters
fastLength = input(10, title="Fast MA Length")
slowLength = input(20, title="Slow MA Length")
takeProfitPercent = input(1, title="Take Profit (%)") / 100
stopLossPercent = input(1, title="Stop Loss (%)") / 100
trailingStopPercent = input(1, title="Trailing Stop (%)") / 100

// Price action conditions
bullishEngulfing = close > open and close > open[1] and open < close[1] and open[1] > close[1]
bearishEngulfing = close < open and close < open[1] and open > close[1] and open[1] < close[1]

// Support and resistance levels
supportLevel = input(100, title="Support Level")
resistanceLevel = input(200, title="Resistance Level")

// Volume conditions
volumeCondition = volume > ta.sma(volume, 20)

// Calculate moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)

// Buy condition
buyCondition = (fastMA > slowMA) and (close > resistanceLevel) and bullishEngulfing and volumeCondition

// Sell condition
sellCondition = (fastMA < slowMA) and (close < supportLevel) and bearishEngulfing and volumeCondition

// Strategy logic
strategy.entry("Buy", strategy.long, when=buyCondition)
strategy.close("Buy", when=sellCondition)

// Calculate take profit, stop loss, and trailing stop levels
takeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercent)
stopLossLevel = strategy.position_avg_price * (1 - stopLossPercent)
trailingStopLevel = strategy.position_avg_price * (1 - trailingStopPercent)

// Plotting levels on the chart
plot(supportLevel, color=color.blue, style=plot.style_line, linewidth=2, title="Support Level")
plot(resistanceLevel, color=color.purple, style=plot.style_line, linewidth=2, title="Resistance Level")
plot(takeProfitLevel, color=color.green, style=plot.style_line, linewidth=2, title="Take Profit Level")
plot(stopLossLevel, color=color.red, style=plot.style_line, linewidth=2, title="Stop Loss Level")
plot(trailingStopLevel, color=color.orange, style=plot.style_line, linewidth=2, title="Trailing Stop Level")

// Plotting buy and sell signals on the chart
plotshape(series=buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(series=sellCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)


Mais.