Estratégia de rompimento de média móvel dupla


Data de criação: 2023-11-21 11:34:09 última modificação: 2023-11-21 11:34:09
cópia: 0 Cliques: 561
1
focar em
1617
Seguidores

Estratégia de rompimento de média móvel dupla

Visão geral

A estratégia de ruptura de média móvel dupla é uma estratégia de acompanhamento de tendências mais típica. Ela capta a direção e a intensidade da tendência do mercado, calculando a média móvel de dois períodos diferentes e cruzando-a como um sinal de compra e venda.

Princípio da estratégia

A estratégia baseia-se principalmente em duas médias móveis. A primeira média móvel tem um período mais curto, o que permite uma resposta mais rápida às mudanças de preço; a segunda média móvel tem um período mais longo, o que permite filtrar parte do ruído. Quando a média móvel de curto prazo é atravessada pela média móvel de longo prazo, é considerada um sinal de compra; quando a média móvel de curto prazo é atravessada pela média móvel de longo prazo, é considerada um sinal de venda.

Especificamente, a estratégia calcula uma média móvel de 10 períodos (preço 1) e uma média móvel de 20 períodos (preço 2). Se o preço de abertura e o preço de fechamento da linha K atual estiverem acima das duas médias móveis, um sinal de compra será gerado; Se o preço de abertura e o preço de fechamento da linha K atual estiverem abaixo das duas médias móveis, um sinal de venda será gerado.

Com esse design, é possível entrar no mercado mais cedo quando a tendência começa a se formar e acompanhar a tendência; Quando a tendência se inverte, também é possível sair do mercado o mais cedo possível, controlando efetivamente o risco.

Vantagens estratégicas

  • Capturar tendências mais cedo e acompanhar tendências mais fortes
  • Filtragem dupla e uniforme para evitar falhas
  • K-line de confirmação dupla de preços de abertura e de fechamento, reduzindo a transação inválida

Risco estratégico

  • A estratégia de linha dupla é propensa a produzir mais transações reversíveis
  • Pode haver sinais de cruzamento frequentes durante a operação de linha dupla
  • Optimização de parâmetros com muito espaço, pode levar a overfitting

Direção de otimização da estratégia

  • Teste diferentes combinações de parâmetros para encontrar o melhor
  • Aumentar as estratégias de stop loss e reduzir o tamanho das perdas individuais
  • Aumentar as condições de filtragem e reduzir as transações inválidas
  • Combinação com outros indicadores para confirmar a eficácia do sinal

Resumir

Esta estratégia é uma estratégia básica de negociação quantitativa. No entanto, a estratégia também possui um certo risco e precisa ser otimizada ainda mais para se adaptar a diferentes condições de mercado. Há espaço para otimização em termos de ajuste de parâmetros, mecanismo de stop loss, filtragem de sinais, etc., o que pode tornar a estratégia mais estável e confiável.

Código-fonte da estratégia
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//study(title="MA River CC v1", overlay = true)
strategy("MA River CC v1", overlay=true)
src = input(close, title="Source")

price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(10, title="1st MA Length")
type1 = input("EMA", "1st MA Type", options=["SMA", "EMA"])

ma2 = input(20, title="2nd MA Length")
type2 = input("EMA", "2nd MA Type", options=["SMA", "EMA"])

price1 = if (type1 == "SMA")
    sma(price, ma1)
else
    ema(price, ma1)
    
price2 = if (type2 == "SMA")
    sma(price, ma2)
else
    ema(price, ma2)


//plot(series=price, style=line,  title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line,  title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)


buy_entry = (open>price1 and open>price2) and (close>price1 and close>price2)  
sell_entry = (open<price1 and open<price2) and (close<price1 and close<price2)
buy_close = sell_entry
sell_close = buy_entry
//longCondition = crossover(price1, price2)    
if(buy_entry)
    strategy.entry("Long", strategy.long)
    
if(sell_entry)
    strategy.entry("Short", strategy.short)

strategy.close("Long" , when=buy_close)
strategy.close("Short",when=sell_close)