Estratégia de tendência baseada na média móvel de vários prazos e na EMA

Autora:ChaoZhang, Data: 2024-02-21 15:59:43
Tags:

img

Resumo

Esta estratégia utiliza médias móveis (MA) e EMA em diferentes prazos para identificar e negociar tendências. Combinando SMA, EMA de vários períodos, bem como corpos de velas, ele pode efetivamente filtrar o ruído do mercado e negociar tendências de médio a longo prazo com baixo risco.

Estratégia lógica

A ideia central é baseada na comparação de 3 SMAs de diferentes períodos para determinar o ímpeto do preço.

Especificamente, a estratégia emprega 3 SMAs - 3-, 8- e 10-período SMA. Quando o preço está abaixo de todos os 3 SMAs, é considerado uma tendência de queda.

Além disso, uma EMA de 5 períodos verifica se o corpo da vela está apontando para cima antes de entrar em negociações longas.

Para as regras de saída, o número máximo de fechamentos lucrativos ou a duração máxima são utilizados como mecanismo de stop loss.

Análise das vantagens

Ao combinar MAs de vários prazos, esta estratégia pode efetivamente filtrar o ruído do mercado e capturar tendências de médio a longo prazo.

Usar a EMA para verificar a direção do corpo da vela reduz o deslizamento desnecessário da compra em velas caindo.

No geral, trata-se de um sistema estável e fiável, adequado para seguir tendências durante semanas ou meses.

Riscos e atenuações

  • A estratégia é sensível aos parâmetros. A escolha subóptima de 3 períodos SMA ou 1 EMA pode deteriorar a qualidade do sinal. Os parâmetros precisam ser otimizados para diferentes instrumentos.

  • O risco de diferença não é tratado. Notícias fundamentais repentinas de que os preços de diferença podem causar perdas.

Oportunidades de melhoria

  • Podem ser adicionados mais prazos de MAs ou EMAs para melhorar ainda mais a precisão da tendência.

  • O preço moderado de stop loss pode ser testado para bloquear os lucros, reduzindo as perdas em movimentos extremos.

  • O aprendizado de máquina pode otimizar dinamicamente os parâmetros para se adaptar às condições de mercado em evolução.

Conclusão

A estratégia é robusta e confiável em geral, usando MA crossovers para determinar a tendência complementada por EMA filtro.


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

//@version=3
strategy("Free Strategy #02 (ES / SPY)", overlay=true)

// Inputs
Quantity = input(1, minval=1, title="Quantity")
SmaPeriod01 = input(3, minval=1, title="SMA Period 01")
SmaPeriod02 = input(8, minval=1, title="SMA Period 02")
SmaPeriod03 = input(10, minval=1, title="SMA Period 03")
EmaPeriod01 = input(5, minval=1, title="EMA Period 01")
MaxProfitCloses = input(5, minval=1, title="Max Profit Close")
MaxBars = input(10, minval=1, title="Max Total Bars")

// Misc Variables
src = close
BarsSinceEntry = 0
MaxProfitCount = 0
Sma01 = sma(close, SmaPeriod01)
Sma02 = sma(close, SmaPeriod02)
Sma03 = sma(close, SmaPeriod03)
Ema01 = ema(close, EmaPeriod01)

// Conditions
Cond00 = strategy.position_size == 0
Cond01 = close < Sma03
Cond02 = close <= Sma01
Cond03 = close[1] > Sma01[1]
Cond04 = open > Ema01
Cond05 = Sma02 < Sma02[1]

// Update Exit Variables
BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1
MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1])

// Entries
strategy.entry(id="L1", long=true, qty=Quantity, when=(Cond00 and Cond01 and Cond02 and Cond03 and Cond04 and Cond05))
 
// Exits
strategy.close("L1", (BarsSinceEntry - 1 >= MaxBars or MaxProfitCount >= MaxProfitCloses))

Mais.