Estratégia de rastreamento da média móvel

Autora:ChaoZhang, Data: 2023-10-20 17:02:52
Tags:

img

Resumo

A estratégia de rastreamento da média móvel é uma estratégia de seguimento de tendências baseada em média móvel simples. Ela usa uma média móvel simples de 200 dias para determinar a direção da tendência do preço. Quando o preço cruza acima da média móvel, ele vai longo. Quando o preço cruza abaixo da média móvel, ele vai curto. Esta estratégia rastreia a tendência para lucro.

Estratégia lógica

A estratégia baseia-se nos seguintes princípios:

  1. Utilize uma média móvel simples de 200 dias (slowMA) para determinar a tendência do preço.
  2. Quando o preço de fechamento (fechamento) cruza acima do slowMA, ele sinaliza uma tendência de alta, então vá longo.
  3. Quando o preço de fechamento (fechamento) cruza abaixo do slowMA, ele sinaliza uma tendência de queda, então vá curto.
  4. Use as variáveis last_long e last_short para registrar o último tempo de entrada longo e curto.
  5. Utilize a função de cruzamento para detectar a cruzação entre last_long e last_short para gerar sinais comerciais.
  6. No período de backtest, vá longo quando receber o sinal longo (long_signal), e vá curto quando receber o sinal curto (short_signal).

A estratégia rastreia a tendência movendo a direção média e realiza negociações reversas quando ocorre o cruzamento da MA, para lucrar com a tendência.

Análise das vantagens

A estratégia apresenta as seguintes vantagens:

  1. A lógica estratégica é simples e fácil de compreender e implementar.
  2. A média móvel de longo período filtra o ruído e bloqueia a tendência principal.
  3. Os negócios reversíveis oportunos podem capturar oscilações significativas de preços em torno de inversões de tendência.
  4. Utiliza apenas um indicador, evitando a complexidade de vários indicadores.
  5. Regras claras de entrada e saída sem muita intervenção humana.

Análise de riscos

Há também alguns riscos:

  1. A MA de longo prazo não é sensível a correcções de curto prazo, perdendo oportunidades de curto prazo.
  2. Falta de capacidade para identificar grandes inversões de tendência, com perdas de inversão.
  3. Não há mecanismo de stop loss, levando a grandes retiradas.
  4. Os parâmetros fixos têm uma fraca adaptabilidade entre diferentes produtos e ambientes de mercado.
  5. Risco de sobreajuste do backtest, uma vez que a estratégia é testada apenas com base em dados históricos.

Os riscos podem ser combatidos através das seguintes otimizações:

  1. Adicionar MA de curto prazo para captar também as tendências de curto prazo.
  2. Adicione filtros de volume para evitar falsos sinais de fuga.
  3. Adicionar indicadores de tendência para melhorar a identificação da inversão da tendência.
  4. Adicionar stop loss dinâmico para controlar a perda de uma única transação.
  5. Usar métodos de otimização de parâmetros para melhorar a adaptabilidade.
  6. Teste de robustez em diferentes ambientes de mercado.

Orientações de otimização

A estratégia pode ser ainda melhorada nos seguintes aspectos:

  1. Otimizar o parâmetro do período de MA usando métodos como a Análise Walk Forward para encontrar os parâmetros ideais.

  2. Adicionar uma MA de curto prazo para acompanhar as tendências de longo e curto prazo.

  3. Incorporar indicadores de tendência como o MACD para melhorar a identificação da inversão de tendência.

  4. Adicione mecanismos de stop loss como trailing stop loss para controlar a perda de uma única negociação.

  5. Teste de robustez em diferentes produtos e períodos de tempo.

  6. Usar machine learning para otimização adaptativa de parâmetros.

Conclusão

A estratégia de rastreamento da média móvel é uma estratégia simples e prática de seguir tendências. Ela tem uma lógica clara e é fácil de implementar para capturar tendências. Mas também tem algumas fraquezas, como ser insensível a correções de curto prazo e controle de risco fraco. Podemos otimizar a estratégia a partir de vários aspectos para torná-la mais robusta, melhor parametrizada e com uma gestão de risco mais forte.


/*backtest
start: 2023-09-19 00:00:00
end: 2023-10-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MA X 200 BF", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Time Frame ///////////////
testStartYear = input(2012, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true

///////////// MA 200 /////////////
slowMA = sma(close, input(200))

/////////////// Strategy ///////////////
long = close > slowMA
short = close < slowMA

last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

/////////////// Execution /////////////// 
if testPeriod()
    strategy.entry("Long Entry",  strategy.long, when=long_signal)
    strategy.entry("Short Entry", strategy.short, when=short_signal)
    strategy.exit("Long Ex", "Long Entry")
    strategy.exit("Short Ex", "Short Entry")

/////////////// Plotting /////////////// 
plot(slowMA, color = long ? color.lime : color.red, linewidth=2)
bgcolor(strategy.position_size > 0 ? color.lime : strategy.position_size < 0 ? color.red : color.white, transp=80)
bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=30)

Mais.