Estratégia de média móvel dupla

Autora:ChaoZhang, Data: 2023-11-02 15:10:04
Tags:

img

Resumo

A estratégia de média móvel dupla é uma estratégia de negociação de curto prazo comumente usada. Ela julga a direção da tendência do mercado calculando médias móveis de diferentes períodos e usa isso para entrar em negociações. Quando a média móvel de curto período cruza acima da média móvel de longo período, vá longo. Quando a média móvel de curto período cruza abaixo da média móvel de longo período, vá curto.

Estratégia lógica

A lógica central desta estratégia é a seguinte:

  1. Calcular duas médias móveis de períodos diferentes, uma é a MA do período longo, a outra é a MA do período curto.

  2. Julgue se o MA de curto período cruzou o MA de longo período. Quando o MA curto cruza acima do MA longo, ele indica uma tendência de alta no mercado e podemos ir longos. Quando o MA curto cruza abaixo do MA longo, ele indica uma tendência de queda e podemos ir curtos.

  3. Entre em negociações de acordo com a direção da tendência. Especificamente, quando o MA de curto período cruza acima do MA de longo período, vá longo. Quando o MA de curto período cruza abaixo do MA de longo período, vá curto.

  4. Configure stop loss e take profit com base nas condições reais do mercado.

A estratégia utiliza a capacidade de julgamento de tendências dos MA para determinar a relação entre tendências de curto e longo prazo, a fim de capturar movimentos de curto prazo.

Vantagens

A estratégia de dupla MA tem as seguintes vantagens:

  1. A lógica é simples e fácil de entender e implementar.

  2. Tem critérios claros de entrada e saída.

  3. Os períodos de MA podem ser ajustados para se adaptarem aos diferentes ambientes de mercado.

  4. Captura tanto a tendência como a inversão da média, permitindo-lhe beneficiar de movimentos a médio prazo.

  5. Há uma lógica de stop loss para controlar os riscos.

Riscos

Há também alguns riscos com a estratégia de MA dupla:

  1. O stop loss pode ser ativado com frequência durante os mercados de intervalo.

  2. Os sinais MA podem ser muito frequentes durante os mercados voláteis, dificultando a manutenção de posições.

  3. Os próprios MAs têm atrasos e podem perder oportunidades de reversão a curto prazo.

  4. Para que a estratégia funcione, é necessário otimizar os períodos de MA.

  5. Os cruzes MA têm algum atraso, causando entradas atrasadas.

Orientações para melhorias

Algumas formas de melhorar esta estratégia:

  1. Otimizar os períodos de MA para diferentes condições de mercado através de backtesting.

  2. Adicionar outros indicadores como filtros para evitar flutuações nos mercados variáveis.

  3. Adicionar indicadores de força da tendência para evitar negociações quando não há uma tendência clara.

  4. Considere os indicadores de volume para julgar a direção da lacuna.

  5. Otimizar o stop loss perto dos principais níveis de suporte/resistência.

Resumo

A estratégia de MA dupla é uma estratégia simples de curto prazo baseada em cruzes de MA para determinar a tendência. Os prós são sua simplicidade e facilidade de uso. Os contras são que ele pode ser cortado por mercados variados e tem lags. Podemos otimizá-lo por ajuste de parâmetros, adicionando filtros etc. para torná-lo mais robusto para ambientes de mercado complexos.


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

//@version=2
strategy("GetTrendStrategy timing", overlay=true)
tim=input('370')
 
//////////////////////////////////////////////////////////////////////
// Component Code Start
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(10, "Backtest Start Month")
testStartDay = input(25, "Backtest Start Day")
testStartHour = input(7, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2017, "Backtest Stop Year")
testStopMonth = input(10, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testStopHour = input(13, "Backtest stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStartHour,0)
 
testPeriod() => true
// Component Code Stop
//////////////////////////////////////////////////////////////////////
 
 
out1 = request.security(syminfo.tickerid, tim, open)
out2 = request.security(syminfo.tickerid, tim, close)
plot(out1,color=red)
plot(out2,color=green)
longCondition = crossover(request.security(syminfo.tickerid, tim, close),request.security(syminfo.tickerid, tim, open))
 
if testPeriod()
    if (longCondition)
        strategy.entry("long", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, tim, close),request.security(syminfo.tickerid, tim, open))
 
if testPeriod()
    if (shortCondition)
        strategy.entry("short", strategy.short)

Mais.