Momentum de tendência de média móvel multiperíodo seguindo estratégia de negociação

EMA ATR KC SMA LR
Data de criação: 2024-11-12 16:35:41 última modificação: 2024-11-12 16:35:41
cópia: 4 Cliques: 640
1
focar em
1617
Seguidores

Momentum de tendência de média móvel multiperíodo seguindo estratégia de negociação

Visão geral

Trata-se de uma estratégia de negociação quantitativa que combina o acompanhamento de tendências de médias médias de múltiplos períodos e a análise de volume. A estratégia é executada principalmente através da análise de uma combinação de conjuntos de médias móveis de índices de 20, 50, 100 e 200 dias (EMA), em combinação com indicadores de volume de dia e dia.

Princípio da estratégia

A lógica central da estratégia inclui as seguintes partes principais:

  1. Sistema de alinhamento de EMA: requer que o EMA de 20 dias esteja acima do EMA de 50 dias, o EMA de 50 dias esteja acima do EMA de 100 dias e o EMA de 100 dias esteja acima do EMA de 200 dias, formando um alinhamento de múltiplos cabeçalhos perfeito.
  2. Sistema de confirmação de dinâmica: um indicador de dinâmica personalizado com base em regressão linear calculado em períodos de tempo de linha solar e de linha de circunferência, respectivamente. O indicador de dinâmica é medido por uma regressão linear do grau de desvio do preço em relação ao eixo central do canal de Keltner.
  3. Sistema de reajuste de entrada: Os preços precisam ser reajustados para dentro da porcentagem especificada na EMA do dia 20 para que a entrada seja permitida, evitando o rastreamento.
  4. Sistema de gerenciamento de risco: use o múltiplo do ATR para definir o objetivo de stop loss e profit, o stop loss padrão é de 1,5 vezes o ATR e o profit é de 3 vezes o ATR.

Vantagens estratégicas

  1. Mecanismo de confirmação múltipla: confirmação de condições múltiplas, como alinhamento de linha média, dinâmica de múltiplos períodos e reajuste de preços, reduzindo os sinais falsos.
  2. Gerenciamento de risco científico: o ATR ajusta dinamicamente os objetivos de stop loss e profit profit, adaptando-se às mudanças na volatilidade do mercado.
  3. A combinação de acompanhamento de tendências e dinâmica permite capturar as grandes tendências, mas também os melhores momentos de entrada nas tendências.
  4. Personalizável: Os parâmetros da estratégia podem ser ajustados de acordo com diferentes características do mercado.
  5. Análise de múltiplos períodos: aumenta a confiabilidade do sinal através da combinação de linha solar e circunferência.

Risco estratégico

  1. Retardo médio: A EMA como indicador de atraso pode levar a atrasos no tempo de entrada. Recomenda-se a combinação com outros indicadores líderes.
  2. Mercado de choque não é válido: a estratégia pode frequentemente gerar falsos sinais em mercados de choque horizontal. Recomenda-se a adição de filtros de ambiente de mercado.
  3. Risco de retirada: Apesar de ter um ATR parado, pode haver uma retirada maior em situações extremas. Pode-se considerar a definição de um limite máximo de retirada.
  4. Sensibilidade de parâmetros: os efeitos da estratégia são mais sensíveis à configuração de parâmetros. Recomenda-se o teste de otimização de parâmetros.

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

  1. Identificação do cenário de mercado: adicionar um indicador de volatilidade ou um indicador de intensidade de tendência, usando diferentes combinações de parâmetros em diferentes cenários de mercado.
  2. Otimização de entrada: pode ser adicionado um indicador de oscilação como o RSI para encontrar pontos de entrada mais precisos na região de retorno.
  3. Ajuste de parâmetros dinâmicos: Ajuste automático do múltiplo ATR e do intervalo de reajuste de acordo com a volatilidade do mercado.
  4. Adição de análise de volume de transação: confirma a intensidade da tendência através do volume de transação, aumentando a confiabilidade do sinal.
  5. Introdução de aprendizado de máquina: Parâmetros de otimização dinâmica de algoritmos de aprendizado de máquina para melhorar a adaptabilidade da estratégia.

Resumir

Trata-se de uma estratégia de acompanhamento de tendências concebida de forma racional e logicamente rigorosa. O uso de múltiplos indicadores técnicos em conjunto garante a estabilidade da estratégia e oferece um bom mecanismo de gerenciamento de risco. A estratégia é altamente personalizável e pode ser otimizada de acordo com diferentes características do mercado.

Código-fonte da estratégia
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Swing Trading with EMA Alignment and Custom Momentum", overlay=true)

// User inputs for customization
atrLength = input.int(14, title="ATR Length", minval=1)
atrMultiplierSL = input.float(1.5, title="Stop-Loss Multiplier (ATR)", minval=0.1)   // Stop-loss at 1.5x ATR
atrMultiplierTP = input.float(3.0, title="Take-Profit Multiplier (ATR)", minval=0.1)   // Take-profit at 3x ATR
pullbackRangePercent = input.float(1.0, title="Pullback Range (%)", minval=0.1) // 1% range for pullback around 20 EMA
lengthKC = input.int(20, title="Length for Keltner Channels (Momentum Calculation)", minval=1)

// EMA settings
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// ATR calculation
atrValue = ta.atr(atrLength)

// Custom Momentum Calculation based on Linear Regression for Daily Timeframe
highestHighKC = ta.highest(high, lengthKC)
lowestLowKC = ta.lowest(low, lengthKC)
smaCloseKC = ta.sma(close, lengthKC)

// Manually calculate the average of highest high and lowest low
averageKC = (highestHighKC + lowestLowKC) / 2

// Calculate daily momentum using linear regression
dailyMomentum = ta.linreg(close - (averageKC + smaCloseKC) / 2, lengthKC, 0) // Custom daily momentum calculation

// Fetch weekly data for momentum calculation using request.security()
[weeklyHigh, weeklyLow, weeklyClose] = request.security(syminfo.tickerid, "W", [high, low, close])

// Calculate weekly momentum using linear regression on weekly timeframe
weeklyHighestHighKC = ta.highest(weeklyHigh, lengthKC)
weeklyLowestLowKC = ta.lowest(weeklyLow, lengthKC)
weeklySmaCloseKC = ta.sma(weeklyClose, lengthKC)
weeklyAverageKC = (weeklyHighestHighKC + weeklyLowestLowKC) / 2

weeklyMomentum = ta.linreg(weeklyClose - (weeklyAverageKC + weeklySmaCloseKC) / 2, lengthKC, 0) // Custom weekly momentum calculation

// EMA alignment condition (20 EMA > 50 EMA > 100 EMA > 200 EMA)
emaAligned = ema20 > ema50 and ema50 > ema100 and ema100 > ema200

// Momentum increasing condition (daily and weekly momentum is positive and increasing)
dailyMomentumIncreasing = dailyMomentum > 0 and dailyMomentum > dailyMomentum[1] //and dailyMomentum[1] > dailyMomentum[2]
weeklyMomentumIncreasing = weeklyMomentum > 0 and weeklyMomentum > weeklyMomentum[1] //and weeklyMomentum[1] > weeklyMomentum[2]

// Redefine Pullback condition: price within 1% range of the 20 EMA
upperPullbackRange = ema20 * (1 + pullbackRangePercent / 100)
lowerPullbackRange = ema20 * (1 - pullbackRangePercent / 100)
pullbackToEma20 = (close <= upperPullbackRange) and (close >= lowerPullbackRange)

// Entry condition: EMA alignment and momentum increasing on both daily and weekly timeframes
longCondition = emaAligned and dailyMomentumIncreasing and weeklyMomentumIncreasing and pullbackToEma20

// Initialize stop loss and take profit levels as float variables
var float longStopLevel = na
var float longTakeProfitLevel = na

// Calculate stop loss and take profit levels based on ATR
if (longCondition)
    longStopLevel := close - (atrMultiplierSL * atrValue)  // Stop loss at 1.5x ATR below the entry price
    longTakeProfitLevel := close + (atrMultiplierTP * atrValue) // Take profit at 3x ATR above the entry price

// Strategy execution
if (longCondition)
    strategy.entry("Long", strategy.long)

// Exit conditions: Stop-loss at 1.5x ATR and take-profit at 3x ATR
if (strategy.position_size > 0)
    strategy.exit("Take Profit/Stop Loss", "Long", stop=longStopLevel, limit=longTakeProfitLevel)