Estratégia de acompanhamento de tendências com rompimentos de preços de médias móveis


Data de criação: 2024-01-26 15:18:29 última modificação: 2024-01-26 15:18:29
cópia: 0 Cliques: 554
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendências com rompimentos de preços de médias móveis

Visão geral

Esta estratégia é baseada no cruzamento de preços com médias móveis para gerar sinais de compra e venda. Ela fornece vários tipos de médias móveis e um parâmetro de tolerância para filtrar brechas falsas. A estratégia visa capturar os pontos de inflexão da tendência de preços para permitir o acompanhamento da tendência.

Princípio da estratégia

A estratégia baseia-se no preço de fechamento e calcula uma média móvel de N comprimentos. Tipicos tipos de média móvel são a média móvel simples (SMA), a média móvel indexada (EMA), a média móvel ponderada (WMA) e assim por diante. Em seguida, define um nível de tolerância, por exemplo, 5%, e calcula a média móvel superior (MPA) (1,05 vezes a média móvel superior) e a média móvel inferior (MPA) (0,95 vezes a média móvel inferior). Quando o preço de fechamento se aproxima do preço de fechamento, um sinal de compra é gerado; quando o preço de fechamento se aproxima do preço de fechamento, um sinal de venda é gerado.

Vantagens estratégicas

  • Utilizando a característica de acompanhamento de tendências das médias móveis, é possível acompanhar de forma eficaz os movimentos dos preços
  • Fornece vários tipos de médias móveis com combinações flexíveis
  • Parâmetros de arbitragem podem filtrar brechas falsas e evitar transações desnecessárias
  • Só pode ser usado para fazer um curto-circuito, para seguir uma tendência de queda

Risco estratégico

  • As médias móveis têm um atraso e podem perder pontos de inflexão
  • Não aplicável a situações de liquidação por flutuação de preços
  • A configuração incorreta dos parâmetros de tolerância pode filtrar parte do sinal válido
  • O risco é maior, mas é preciso ter cuidado.

Direção de otimização

  • Optimizar o tipo e o comprimento dos parâmetros das médias móveis
  • Testar diferentes configurações de parâmetros de tolerância
  • Combinação com outros indicadores de filtragem
  • Aumentar estratégias de gestão de posições

Resumir

A estratégia em geral é uma estratégia de acompanhamento de tendências mais típica. Ela usa a relação entre o preço e a média móvel para julgar a tendência e oferece uma certa flexibilidade. Com otimização de parâmetros e filtragem de sinal apropriada, ela pode ser uma estratégia quantitativa de bom desempenho.

Código-fonte da estratégia
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © RafaelPiccolo

//@version=4
strategy("Price X MA Cross", overlay=true)

typ = input("HMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"])
len = input(100, minval=1, title="Length")
src = input(close, "Source", type=input.source)
tol = input(0, minval=0, title="Tolerance (%)", type=input.float)
shortOnly = input(false, "Short only")

tema(src, len)=>
    ema1 = ema(src, len)
    ema2 = ema(ema1, len)
    ema3 = ema(ema2, len)
    return = 3 * (ema1 - ema2) + ema3

getMAPoint(type, len, src)=>
    return = type == "SMA" ? sma(src, len) : type == "EMA" ? ema(src, len) : type == "WMA" ? wma(src, len) : type == "HMA" ? hma(src, len) : type == "VWMA" ? vwma(src, len) : type == "RMA" ? rma(src, len) : tema(src, len)

ma = getMAPoint(typ, len, src)
upperTol = ma * (1 + tol/100)
lowerTol = ma * (1 - tol/100)

longCondition = crossover(close, upperTol)
shortCondition = crossunder(close, lowerTol)

if (shortCondition)
    strategy.entry("Short", strategy.short)

if (longCondition)
    if (shortOnly)
        strategy.close("Short")
    else
        strategy.entry("Long", strategy.long)

plot(ma, "Moving Average", close > ma ? color.green : color.red, linewidth = 2)
t1 = plot(tol > 0 ? upperTol : na, transp = 70)
t2 = plot(tol > 0 ? lowerTol : na, transp = 70)
fill(t1, t2, color = tol > 0 ? color.blue : na)