Estratégia de negociação de tendências baseada em múltiplas médias móveis

SMA MA
Data de criação: 2024-05-11 17:32:49 última modificação: 2024-05-11 17:32:49
cópia: 2 Cliques: 608
1
focar em
1617
Seguidores

Estratégia de negociação de tendências baseada em múltiplas médias móveis

Visão geral

Este artigo apresenta uma estratégia de negociação de tendências baseada em múltiplas médias móveis. Esta estratégia é aplicada principalmente ao mercado de futuros da Nasdaq, capturando as tendências ascendentes do mercado, analisando a posição dos preços em relação às médias móveis longas, médias e curtas, e posicionando todas as posições em um determinado momento.

A estratégia usa três médias móveis simples (SMAs): a longo prazo (default 200 cycle), a médio prazo (default 21 cycle) e a curto prazo (default 9 cycle). A estratégia ativa um sinal de compra quando o preço está acima da média de longo e médio prazo e ocorre um cruzamento na média de curto prazo.

Princípio da estratégia

  1. Calcule a média móvel simples para o longo prazo (default 200 ciclos), médio prazo (default 21 ciclos) e curto prazo (default 9 ciclos).

  2. Para determinar se o preço atual está acima da média de longo prazo e média de médio prazo.

  3. O preço atual cruza-se acima da linha média de curto prazo.

  4. Quando a condição 2 e a condição 3 são simultaneamente satisfeitas e não há uma posição atual, um sinal de compra é acionado.

  5. Após a compra, configure um stop and stop de um número fixo de pontos e feche a posição quando o preço toca o stop ou o stop loss.

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

Vantagens estratégicas

  1. Simples e fácil de entender: a estratégia é baseada em médias móveis, o princípio é simples, fácil de entender e implementar.

  2. Seguimento de tendências: a estratégia é capaz de capturar as tendências ascendentes do mercado, analisando a posição dos preços em relação às diferentes médias periódicas.

  3. Controle de Risco: A estratégia estabelece um número fixo de pontos de parada e perda para ajudar a controlar o risco de uma única transação.

  4. Automaticamente equilibrado: A estratégia de equilibrar automaticamente o posicionamento em um determinado horário de cada dia de negociação, evitando o risco de overnight.

Risco estratégico

  1. Optimização de parâmetros: o desempenho da estratégia pode ser sensível aos parâmetros do ciclo da linha média e precisa ser otimizado para diferentes mercados e variedades.

  2. Mercado de turbulência: em um ambiente de mercado de turbulência, os sinais de cruzamento frequentes podem levar a um fraco desempenho da estratégia.

  3. Risco de deslizamento: em situações de forte volatilidade do mercado, os pontos de parada e de parada fixos podem não ser executados como esperado, o que leva ao risco de deslizamento.

Direção de otimização da estratégia

  1. Stop loss dinâmico: De acordo com a volatilidade do mercado ou a tendência de preços, ajuste dinâmico de stop loss e ponto de parada para otimizar o risco-benefício.

  2. Filtragem de tendências: introdução de outros indicadores técnicos, como o ADX, para confirmar a intensidade da tendência, filtrando os falsos sinais em mercados de turbulência.

  3. Adaptação multi-variedade: melhorias na estratégia para adaptar-se a diferentes variedades de futuros e características de mercado.

  4. Gerenciamento de fundos: introdução de regras mais complexas de gerenciamento de fundos, como gerenciamento de posições e controle de risco, para melhorar a solidez da estratégia.

Resumir

A estratégia de negociação de tendências baseada em múltiplos equilíbrios é uma estratégia de acompanhamento de tendências simples e fáceis de entender, que capta a tendência ascendente do mercado, analisando a posição dos preços em relação às diferentes médias periódicas. A estratégia define um número fixo de pontos de stop-loss e compensa automaticamente as posições em um determinado horário todos os dias para controlar o risco. No entanto, a estratégia pode ter um fraco desempenho em mercados turbulentos e enfrentar problemas de otimização de parâmetros e risco de deslizamento.

Código-fonte da estratégia
/*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()