Estratégias comuns de crossover de média móvel


Data de criação: 2023-11-03 17:23:54 última modificação: 2023-11-03 17:23:54
cópia: 0 Cliques: 707
1
focar em
1617
Seguidores

Estratégias comuns de crossover de média móvel

Visão geral

A estratégia de cruzamento de média móvel é uma estratégia de análise técnica muito clássica e comum. A ideia central da estratégia é usar cruzamentos entre médias móveis de diferentes períodos como um sinal de compra. Um sinal de compra é gerado quando uma média móvel de curto prazo atravessa a média móvel de longo prazo de baixo; um sinal de venda é gerado quando uma média móvel de curto prazo atravessa a média móvel de longo prazo de cima para baixo.

Princípio da estratégia

A estratégia usa o tipo de média móvel (SMA, EMA, WMA, RMA) e a duração do período, bem como o intervalo de tempo de retrospecção.

Calcule os diferentes tipos de médias móveis em funções variantes. As médias móveis calculadas são mantidas pela variável ma.

Quando o preço de fechamento está acima de ma, gera um sinal de compra; quando o preço de fechamento está abaixo de ma, gera um sinal de venda.

Para definir o stop loss, calcule a amplitude média real de oscilação de 14 ciclos através de atr. Utilize o ponto de passagem como referência, aumentando ou diminuindo 2 vezes atr como o intervalo de stop loss.

A lógica de entrada e saída é a seguinte:

Entrada múltipla: close sobre ma e no tempo de retorno, o ponto de parada é o ponto de entrada close Parar de partida quando o preço mais alto excede o ponto de entrada, ou quando o preço mais alto excede o ponto de entrada, ou quando o preço mais alto excede o ponto de entrada, ou quando o preço mais alto excede o ponto de entrada. Entrada a céu aberto: close abaixo do ma e, no tempo de retorno, o ponto de parada é o ponto de entrada close Saída de cabeça vazia: fechar em cima usando ma mais 2 vezesatr para parar a saída, ou o preço mínimo abaixo do ponto de entrada fechar menos 2 vezesatr para parar a saída

Vantagens estratégicas

  1. A estratégia é simples, clara, fácil de entender e implementar.
  2. Amplamente utilizado para diferentes mercados e variedades
  3. Parâmetros flexíveis, tipo de média móvel e periodicidade ajustáveis
  4. O uso de ATR para ajudar a controlar os riscos

Risco estratégico

  1. A estratégia de média móvel pode gerar frequentes negociações e paradas de perdas, reduzindo a margem de lucro
  2. A média móvel é mais propensa a gerar sinais enganosos em situações de grande agitação
  3. O ATR pode ter um limite de perda demasiado grande ou demasiado pequeno para ser eficaz na prevenção de grandes perdas

Otimizar para o risco pode ser feito através de:

  1. Ajustar a média móvel ao ciclo, usando a média de período mais longo
  2. Aumentar as condições de filtragem para evitar transações frequentes em situações de turbulência
  3. Optimizar os parâmetros do ATR ou adotar outros métodos de parada
  4. Combinando indicadores de tendência para avaliar grandes tendências e evitar operações de contra-balanço

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

A estratégia pode ser melhorada em vários aspectos:

  1. Aumentar as condições de filtragem, como volume de transação, volatilidade, etc., para evitar rupturas irracionais
  2. A utilização de um método ATR adaptável para a variação do limite de perda em função da volatilidade do mercado
  3. A combinação de Stoch, RSI e outros indicadores para a verificação multifatorial para melhorar a qualidade do sinal
  4. Aumentar o discernimento de tendências e evitar operações de contracorrente
  5. Usar o EXIT para evitar perdas de longo prazo
  6. Optimizar os parâmetros de média móvel para encontrar a melhor combinação de parâmetros

Resumir

A estratégia de cruzamento de média móvel é uma estratégia de análise técnica muito típica e comum. A ideia central da estratégia é simples, fácil de implementar e aplicável a todos os mercados, e é uma das estratégias de entrada para negociação quantitativa. Mas a estratégia também tem alguns problemas, como a geração de sinais frequentes, fácil de parar, etc.

Código-fonte da estratégia
/*backtest
start: 2023-10-03 00:00:00
end: 2023-11-02 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MA Cross Strategy", overlay=true,commission_value = 0.1)

type = input(defval = "WMA", title = "MA Type: ", options=["RMA", "SMA", "EMA", "WMA"])

length = input(28)
source = close



// === INPUT BACKTEST RANGE ===
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2000, title = "From Year", minval = 2000)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(9999, 1, 1, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"



variant(type, src, len) =>
    v1 = sma(src, len)                                                  // Simple
    v2 = ema(src, len)                                                  // Exponential
    v5 = wma(src, len)                                                  // Weighted
    v7 = rma(src, len)                                                  // Smoothed
    type=="EMA"?v2 : type=="WMA"?v5 : type=="RMA"?v7 : v1
ma = variant(type,source, length)


atr = security(syminfo.tickerid, "D", atr(14))

range = valuewhen(cross(close,ma), (atr*2), na)

ep = valuewhen(cross(close,ma), close, na)

plot(ma,color=ma>ma[1]?color.blue:color.red,transp=0,linewidth=1)
plot(ep,color=#2196f3,transp=100,trackprice=true, offset=-9999)
plot(ep+range,color=#2196f3,transp=100,trackprice=true, offset=-9999)
plot(ep-range,color=#2196f3,transp=100,trackprice=true, offset=-9999)

strategy.entry("Long Entry", true, when = crossover(close,ma)  and window() , stop  = ep ) 
strategy.exit("Long Exit", "Long Entry", stop  = ep-range) 
strategy.exit("Long Exit", "Long Entry", when = high > ep+range ,stop = ep[1] ) 

strategy.entry("Short Entry", false, when = crossunder(close,ma)  and window() , stop  = ep ) 
strategy.exit("Short Exit", "Short Entry", stop  = ep+range) 
strategy.exit("Short Exit", "Short Entry", when = low < ep-range ,stop = ep[1] )