
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.
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).
Para determinar se o preço atual está acima da média de longo prazo e média de médio prazo.
O preço atual cruza-se acima da linha média de curto prazo.
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.
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.
Todas as posições são liquidadas às 17:00 de cada dia de negociação.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Adaptação multi-variedade: melhorias na estratégia para adaptar-se a diferentes variedades de futuros e características de mercado.
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.
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.
/*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()