Média móvel de ponto de virada

Autora:ChaoZhang, Data: 2024-01-29 11:15:42
Tags:

img

Resumo

A estratégia de negociação de cruzamento de pontos de viragem de média móvel é uma estratégia clássica de indicadores técnicos. A ideia central desta estratégia é gerar sinais de compra e venda combinando médias móveis de diferentes períodos e otimizar ainda mais as saídas de negociação usando pontos de viragem de média móvel. Esta estratégia é adequada para vários prazos e produtos e pode alcançar retornos estáveis.

Princípio da estratégia

A estratégia usa principalmente duas médias móveis, uma com um período mais curto como linha rápida e a outra com um período mais longo como linha lenta. Quando a linha rápida quebra a linha lenta para cima, um sinal de compra é gerado. Quando a linha rápida quebra a linha lenta para baixo, um sinal de venda é gerado. Este é o mecanismo de geração de sinal de negociação da estratégia clássica de cruzamento de média móvel.

Além disso, a estratégia sai das negociações usando os pontos de virada das médias móveis. Quando a linha rápida se transforma de alta para baixa, as posições longas sairão. Quando a linha rápida se transforma de baixa para alta, as posições curtas sairão. Os pontos de virada da média móvel podem capturar pontos de reversão de curto prazo do mercado, o que ajuda a estratégia a cortar perdas ou obter lucros a tempo, melhorando assim o retorno geral.

Análise das vantagens

A estratégia de negociação cruzada com média móvel de ponto de virada tem as seguintes vantagens:

  1. A estratégia utiliza apenas dois indicadores: a média móvel e o indicador ROC.

  2. As características inerentes de atraso e suavização de preços das médias móveis podem filtrar algum ruído e evitar gerar muitas negociações inválidas em tendências variáveis.

  3. Pode controlar efetivamente as perdas unilaterais.

  4. Ampla aplicabilidade O princípio da estratégia é simples e pode ser aplicado a diferentes produtos e prazos de negociação, como barras diárias e horárias. Grande espaço de otimização de parâmetros.

  5. Retorno estável: em comparação com as estratégias que perseguem pontos quentes do mercado, esta estratégia concentra-se mais no controlo do risco em vez de buscar retornos super elevados, mas pode obter retornos positivos estáveis.

Análise de riscos

A estratégia de negociação cruzada de média móvel de ponto de virada também apresenta alguns riscos, principalmente nos seguintes aspectos:

  1. Quando o mercado se acelerar, os sinais cruzados das médias móveis se atrasarão, possivelmente perdendo o melhor ponto de entrada.

  2. Períodos de detenção vazios longos. Esta estratégia tem saídas oportunas, mas sinais de entrada mais lentos. Isso pode levar a períodos de detenção vazios excessivos. As oportunidades de lucro são perdidas durante períodos de detenção vazios.

  3. Optimização de parâmetros difícil. A escolha de parâmetros como comprimento médio móvel e ciclo ROC terá um grande impacto no desempenho da estratégia.

  4. Os preços de mercado são os mais baixos em relação aos preços de mercado, mas os preços de mercado são os mais baixos.

Orientações de otimização

A estratégia comercial pode ser ainda mais otimizada nos seguintes aspectos:

  1. Incorporar indicadores de filtragem de tendência. Adicionar indicadores como ADX e ATR para julgar o status da tendência. Desativar a estratégia quando não há uma tendência clara para evitar negócios inúteis.

  2. Combine vários prazos. Identifique a direção da tendência principal em prazos mais longos para evitar a negociação contra a tendência principal.

  3. Optimização de parâmetros adaptativos: permite que parâmetros como comprimento médio móvel sejam ajustados adaptativamente com base na volatilidade do mercado em tempo real para melhorar a robustez dos parâmetros.

  4. Identificar padrões de velas em pontos de cruzamento MA para filtrar sinais falsos.

Resumo

Em geral, a estratégia de negociação cruzada de ponto de virada de média móvel equilibra risco e retorno. Ela tem vantagens como facilidade de implementação, resistência a perdas consecutivas e retornos estáveis. Ela também tem desvantagens como a emissão atrasada de MA e períodos de detenção vazios excessivos. Ao otimizar parâmetros, incorporando julgamento de tendências, reconhecimento de padrões, etc., o desempenho da estratégia pode ser melhorado.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//study(title="MA Crossover Strategy", overlay = true)
strategy("MA Crossover Strategy with MA Turning Point Exits", overlay=true)
src = input(close, title="Source")

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

ma2 = input(50, title="2nd MA Length")
type2 = input("SMA", "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)


longCondition = crossover(price1, price2)
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = crossunder(price1, price2)
if (shortCondition)
    strategy.entry("Short", strategy.short)

lookback1 = input(1, "Lookback 1")
roc1 = roc(price1, lookback1)

ma1up = false
ma1down = false
ma2up = false
ma2down = false

ma1up := nz(ma1up[1])
ma1down := nz(ma1down[1])
ma2up := nz(ma2up[1])
ma2down := nz(ma2down[1])

trendStrength1 = input(2, title="Minimum slope magnitude * 100", type=float) * 0.01

if crossover(roc1, trendStrength1)
    ma1up := true
    ma1down := false
    
if crossunder(roc1, -trendStrength1) 
    ma1up := false
    ma1down := true

shortexitCondition = ma1up and ma1down[1]
if (shortexitCondition)
    strategy.close("Short")

longexitCondition = ma1down and ma1up[1]
if (longexitCondition)
    strategy.close("Long")



Mais.