O recurso está a ser carregado... Carregamento...

Estratégia de negociação de tendência de média móvel múltipla

Autora:ChaoZhang, Data: 2024-05-11 17:32:49
Tags:SMAMA

img

Resumo

Este artigo apresenta uma estratégia de negociação de tendências baseada em múltiplas médias móveis chamada Multi-Moving Average Trend Trading Strategy. A estratégia é aplicada principalmente ao mercado de futuros do Nasdaq e capta as tendências de mercado ascendentes analisando a posição do preço em relação às médias móveis de longo, médio e curto prazo.

A estratégia emprega três médias móveis simples (SMAs): de longo prazo (default 200 períodos), de médio prazo (default 21 períodos) e de curto prazo (default 9 períodos). Um sinal de compra é acionado quando o preço está acima das médias móveis de longo prazo e médio prazo e cruza acima da média móvel de curto prazo, desde que não haja posições abertas. A estratégia também define níveis de stop-gain e stop-loss de ponto fixo para gerenciar o risco. Além disso, todas as posições são fechadas às 17:00 de cada dia de negociação.

Princípio da estratégia

  1. Calcular as médias móveis simples a longo prazo (default 200 periods), a médio prazo (default 21 periods) e a curto prazo (default 9 periods).

  2. Determine se o preço atual está acima das médias móveis de longo e médio prazo.

  3. Verifique se o preço atual ultrapassa a média móvel de curto prazo.

  4. Quando ambas as condições 2 e 3 estiverem satisfeitas e não houver posições abertas, é desencadeado um sinal de compra.

  5. Depois de comprar, defina níveis de stop-gain e stop-loss fixos e feche a posição quando o preço atingir qualquer um dos níveis.

  6. Fechar todas as posições às 17:00 de cada dia de negociação.

Vantagens da estratégia

  1. Simples e de fácil compreensão: a estratégia baseia-se em médias móveis, tornando-a simples de compreender e de aplicar.

  2. Seguimento da tendência: Ao analisar a posição dos preços em relação às médias móveis de diferentes períodos, a estratégia capta eficazmente as tendências ascendentes do mercado.

  3. Controle de risco: A estratégia incorpora níveis fixos de stop-gain e stop-loss, ajudando a gerir o risco para as operações individuais.

  4. Fechamento automático de posições: a estratégia fecha automaticamente todas as posições num horário específico de cada dia de negociação, evitando riscos overnight.

Riscos estratégicos

  1. Optimização de parâmetros: o desempenho da estratégia pode ser sensível aos parâmetros da média móvel do período, exigindo otimização para diferentes mercados e instrumentos.

  2. Mercados agitados: em condições de mercado agitadas, sinais cruzados frequentes podem levar a um desempenho estratégico subóptimo.

  3. Risco de deslizamento: durante a alta volatilidade do mercado, os níveis de stop-gain e stop-loss fixos podem não ser executados como pretendido, resultando em risco de deslizamento.

Orientações para a otimização da estratégia

  1. A taxa de prejuízo e a taxa de prejuízo dinâmicos: ajustar os níveis de prejuízo e de prejuízo dinâmicos com base na volatilidade do mercado ou nas tendências dos preços para otimizar a relação risco/recompensa.

  2. Filtros de tendência: Incorporar indicadores técnicos adicionais, como o ADX, para confirmar a força da tendência e filtrar sinais falsos em mercados instáveis.

  3. Adaptação multi-instrumentos: refinar a estratégia para se adaptar a diferentes instrumentos futuros e características do mercado.

  4. Gestão de fundos: introduzir regras de gestão de fundos mais sofisticadas, como o dimensionamento das posições e o controlo do risco, para reforçar a robustez da estratégia.

Resumo

A estratégia de negociação de média móvel é uma estratégia simples e fácil de entender que capta as tendências de mercado em alta, analisando a posição do preço em relação às médias móveis de diferentes períodos. A estratégia incorpora níveis de stop-gain e stop-loss de ponto fixo e fecha automaticamente todas as posições em um momento específico todos os dias para gerenciar o risco. No entanto, a estratégia pode ter um desempenho inferior em mercados agitados e enfrentar desafios como otimização de parâmetros e risco de deslizamento.


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

//@version=5
strategy("Médias Móveis de MarcosJR", overlay=true)

// Inputs para data inicial e final
start_year = input.int(2020, title="Ano Inicial")
start_month = input.int(1, title="Mês Inicial")
start_day = input.int(1, title="Dia Inicial")

end_year = input.int(2020, title="Ano Final")
end_month = input.int(12, title="Mês Final")
end_day = input.int(31, title="Dia Final")

// Convertendo dia, mês e ano para timestamp
start_date = timestamp(start_year, start_month, start_day, 00, 00)
end_date = timestamp(end_year, end_month, end_day, 23, 59)

// Condição para verificar se a data está dentro do intervalo especificado
date_within_range = true

// Parâmetros para os períodos das médias móveis
ma_short_period = input.int(9, title="MA Curta")
ma_medium_period = input.int(21, title="MA Média")
ma_long_period = input.int(200, title="MA Longa")

// Definindo médias móveis
ma_short = ta.sma(close, ma_short_period)
ma_medium = ta.sma(close, ma_medium_period)
ma_long = ta.sma(close, ma_long_period)

// Plotando as médias móveis no gráfico com espessura aumentada
plot(ma_short, color=color.blue, title="MA Curta", linewidth=2)
plot(ma_medium, color=color.orange, title="MA Média", linewidth=2)
plot(ma_long, color=color.red, title="MA Longa", linewidth=2)

// Verificando se o preço está acima das médias móveis
above_ma_long = close > ma_long
above_ma_medium = close > ma_medium

// Verificando se o preço tocou na média móvel curta
touch_ma_short = ta.crossover(close, ma_short)

// Condições de compra
buy_condition = date_within_range and above_ma_long and above_ma_medium and touch_ma_short

// Sinais de entrada e saída de compra
var float entry_price = na
if (buy_condition and strategy.opentrades == 0) // Verifica se não há operações em andamento
    entry_price := close // Define o preço de entrada ao comprar

// Parâmetros para o tamanho do stop gain e stop loss em pontos
stop_gain_points = input.int(100, title="Stop Gain (pontos)", minval=1)
stop_loss_points = input.int(100, title="Stop Loss (pontos)", minval=1)

// Calcular o preço de saída alvo (Stop Gain) e de stop loss
target_price = entry_price + stop_gain_points * syminfo.mintick
stop_loss_price = entry_price - stop_loss_points * syminfo.mintick

// Sair da operação de compra quando o preço atingir o stop gain ou stop loss
if (strategy.position_size > 0)
    strategy.exit("Venda", "Compra", limit=target_price, stop=stop_loss_price)

// Sinais de entrada de compra
if (buy_condition and strategy.opentrades == 0) // Verifica se não há operações em andamento
    strategy.entry("Compra", strategy.long)

// Plotando setas de compra
plotshape(series=buy_condition, title="Sinal de Compra", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)

// Função para verificar se é 17:00 do mesmo dia
is_17_oclock_same_day = hour == 17 and minute == 0 and hour[1] < 17

// Sair de todas as operações às 17:00 do mesmo dia
if (is_17_oclock_same_day)
    strategy.close_all()


Relacionados

Mais.