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

Autora:ChaoZhang, Data: 2023-11-07 15:48:41
Tags:

img

Resumo

A estratégia de cruzamento da média móvel é uma estratégia de análise técnica muito clássica. Ela calcula médias móveis de diferentes períodos e observa seu cruzamento para determinar a tendência do mercado, a fim de alcançar o objetivo de comprar baixo e vender alto. Esta estratégia é adequada para negociação de médio e longo prazo e pode efetivamente filtrar o ruído do mercado e identificar tendências.

Princípio

Esta estratégia calcula principalmente a média móvel simples de 10 dias (SMA) e a média móvel triangular de 10 dias (TRIMA). Quando a SMA cruza acima da TRIMA, um sinal de compra é gerado, indicando que a tendência do mercado mudou de queda para alta, e podemos comprar. Quando a SMA cruza abaixo da TRIMA, um sinal de venda é gerado, indicando que a tendência do mercado mudou de alta para baixa, e podemos vender.

Especificamente, a estratégia introduz primeiro o preço de fechamento e define os comprimentos de ciclo para calcular o SMA e o TRIMA.

SMA = (P1 + P2 +... + Pn) / n

Onde Pn é o preço de fechamento dos últimos n dias.

A fórmula de cálculo do TRIMA é:

TRIMA = (SMA1 + SMA2 + SMA3) / 3

Os valores das posições em risco são os valores das posições em risco, que são os valores das posições em risco.

Assim, TRIMA é na verdade uma SMA calculada em cima da SMA, que tem um melhor efeito de suavização. Quando a SMA de curto prazo cruza acima da TRIMA de longo prazo, isso indica um avanço da média móvel de curto prazo, e podemos comprar. Pelo contrário, quando a SMA cruza abaixo da TRIMA, isso indica uma quebra abaixo da média móvel de curto prazo, e podemos vender.

Vantagens

A maior vantagem desta estratégia é que ela utiliza a capacidade de julgamento de tendências das médias móveis para identificar efetivamente as tendências do mercado e filtrar o ruído do mercado de curto prazo, a fim de comprar baixo e vender alto. Em comparação com uma única média móvel, a combinação de SMA e TRIMA pode melhorar a confiabilidade de avanços e reduzir a probabilidade de falsos avanços. Além disso, a própria média móvel tem boa suavidade, que também pode desempenhar o papel de stop loss para reduzir a probabilidade de uma única posição stop loss. Em geral, esta estratégia é muito adequada para negociação de médio e longo prazo.

Riscos

O principal risco desta estratégia é que a própria média móvel fica para trás das mudanças de preço, o que pode perder o estágio inicial da tendência, resultando em uma entrada tardia. Além disso, quando o mercado não tem uma tendência óbvia, essa estratégia produzirá mais falsos avanços. Finalmente, as estratégias de média móvel dependem mais da otimização de parâmetros. Se os parâmetros não forem definidos corretamente, isso também afetará muito a estratégia.

Orientações de otimização

Esta estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimizar os parâmetros do ciclo da média móvel para encontrar a melhor combinação cientificamente.

  2. Adicionar indicadores de filtragem como volume de negociação para evitar sinais errados quando o volume de negociação é baixo.

  3. Combinar indicadores de tendência como o MACD para julgar as tendências locais e evitar negociações frequentes em mercados de consolidação.

  4. Adotar médias móveis adaptativas para ajustar dinamicamente os parâmetros do ciclo quando o mercado entrar em fases específicas.

  5. Verifique com vários prazos, como considerar a entrada apenas quando as linhas diárias e de 4 horas atravessarem.

Resumo

A estratégia de cruzamento da média móvel é uma estratégia de análise técnica simples e prática que é muito adequada para negociação de posições de médio e longo prazo. Ela pode identificar efetivamente a direção da tendência. Mas também tem certo atraso e precisa ser filtrada e otimizada com indicadores de julgamento de tendência para reduzir a probabilidade de sinais falsos. Se os parâmetros forem otimizados corretamente, pode proteger o capital e aproveitar oportunidades de tendência maiores. Definitivamente vale a pena pesquisar e aplicar como uma ideia de estratégia.


/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//TMA strategy I came across, uses sma to display entry/exit points for both margin and non margin trading. The buy/sell signals as well as syntax are hidden behind comments if you scroll down.
//Change the commented fields for margin or spot trading!
//@version=3
strategy("MP Rollercoaster Strat", overlay=true)

bgcolor ( color=black, transp=0, title='Blackground', editable=true)

x = input(close, "Red")
n = input(10, "periods")
trima = sma(sma(x,n), n)

kisa=input(5, "Green")
sma = sma(close, kisa)

bull = (sma>trima)
fill(plot(sma, color = green), plot(trima, color=red), bull ? green : red)

//Conditions
buy_signal = crossover(sma,trima)
sell_signal = crossunder(sma,trima)

plotshape(sell_signal, style=shape.triangleup, color = red, text="Short")
plotshape(buy_signal, style=shape.triangledown, color = green, text="Long")
//plotshape(sell_signal, style=shape.triangleup, color = red, text="Sell")
//plotshape(buy_signal, style=shape.triangledown, color = green, text="Buy")

alertcondition(sell_signal, title = 'Short', message = 'e= s= c=position b=long t=market l= | delay=30 | e= s= b=short l= t=market q=0.01')
alertcondition(buy_signal, title = 'Long', message =  'e= s= c=position b=short t=market l= | delay=30 | e= s= b=long l= t=market q=0.01')

//alertcondition(sell_signal, title = 'Sell', message = 'e= s= c=order b=buy | delay=3 | e= b=sell q=99% p=0.70% u=currency')
//alertcondition(buy_signal, title = 'Buy', message =  'e= s= c=order b=sell | delay=30 | e= b=buy q=80 p=0.1% u=currency')

testStartYear = input(2018, "From Year") 
testStartMonth = input(4, "From Month")
testStartDay = input(1, "From Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "To Year")
testStopMonth = input(1, "To Month")
testStopDay = input(1, "To Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

if testPeriod()
    if buy_signal
        strategy.entry("Long", true)
    

    if sell_signal
        strategy.close("Long")

Mais.