Sistema de negociação de tendência de múltiplos períodos de tempo (MTF-ATR-MACD)

EMA RSI ATR MACD MTF SL TP
Data de criação: 2024-11-25 14:42:33 última modificação: 2024-11-25 14:42:33
cópia: 4 Cliques: 540
1
focar em
1617
Seguidores

Sistema de negociação de tendência de múltiplos períodos de tempo (MTF-ATR-MACD)

Visão geral

A estratégia é um sistema de negociação de acompanhamento de tendências integrado, combinando análise de múltiplos períodos de tempo, sistema de linha média, indicadores de dinâmica e indicadores de volatilidade. O sistema identifica a direção da tendência através do cruzamento de médias móveis de índices de curto e longo prazo (EMA), usa um indicador relativamente forte (RSI) para julgar sobre compras e vendas, combina a MACD para confirmar a dinâmica e usa o quadro de tempo mais alto (EMA) como sistema de filtro de tendências.

Princípio da estratégia

A estratégia utiliza mecanismos de verificação em vários níveis para a tomada de decisões de transação:

  1. Camada de identificação de tendências: uso de cruzamentos de EMAs 9 e 21 para capturar mudanças de tendências
  2. Camada de confirmação de dinâmica: Dinâmica de tendência de verificação de cruzamento e direção através dos indicadores MACD ((12, 26, 9)
  3. Filtração de sobrevenda: Filtração com o indicador RSI ((14) no nível 7030
  4. Confirmação de alta margem de tempo: uso seletivo da EMA de nível de linha de sol como filtro de tendência
  5. Gerenciamento de risco: Use 1.5x ATR como um tracking stop loss e 2x ATR como um set de metas de ganho

O sistema só abre uma posição quando um múltiplo de condições são satisfeitas: EMA cruzada, RSI sem limites, MACD direcionado corretamente e alta confirmação de tendência de um período de tempo. A saída é feita usando uma combinação de tracking stop loss e um objetivo de lucro fixo.

Vantagens estratégicas

  1. Mecanismos de verificação múltipla reduzem significativamente os falsos sinais
  2. Filtragem de tendências de quadros de tempo altos aumenta a taxa de vitórias
  3. Dinâmica de parada de prejuízos baseada na volatilidade
  4. Um sistema completo de gestão de riscos
  5. Os parâmetros podem ser ajustados de forma flexível de acordo com as diferentes características do mercado
  6. Suporte a transações bidirecionais e adaptabilidade a diferentes cenários de mercado
  7. Portfólio de indicadores atentos a tendências e dinâmicas

Risco estratégico

  1. Condições múltiplas podem levar a oportunidades de negócios perdidas
  2. Pode negociar frequentemente em mercados voláteis
  3. A otimização de parâmetros pode levar ao overfitting
  4. Confirmação de prazos elevados pode atrasar a entrada Solução:
  • Parâmetros de ajuste dinâmico de acordo com diferentes características do mercado
  • Aumentar a flexibilidade na escolha da direção de negociação
  • Introdução de um filtro de taxa de flutuação
  • Mecanismo de adaptação de parâmetros

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

  1. Introdução de um mecanismo de filtragem de taxa de flutuação para ajustar posições durante períodos de alta volatilidade
  2. Mecanismo de adaptação de parâmetros de desenvolvimento, ajustado de acordo com a dinâmica da situação do mercado
  3. Aumentar a eficácia dos sinais de confirmação dos indicadores de volume de transação
  4. Optimizar a lógica de julgamento de tendências de alto período de tempo
  5. Melhorar o plano de amortização, considerando o aumento do tempo de amortização
  6. Desenvolver módulos de avaliação de desempenho de estratégias

Resumir

A estratégia é um sistema de negociação de acompanhamento de tendências completo, capaz de obter ganhos estáveis em mercados de tendências por meio de uma combinação de múltiplos indicadores técnicos e um rigoroso regime de gerenciamento de riscos. O sistema é altamente escalável e pode ser adaptado a diferentes ambientes de mercado por meio de otimização.

Código-fonte da estratégia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-24 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5 
strategy("Trend Following with ATR, MTF Confirmation, and MACD", overlay=true)

// Parameters
emaShortPeriod = input.int(9, title="Short EMA Period", minval=1)
emaLongPeriod = input.int(21, title="Long EMA Period", minval=1)
rsiPeriod = input.int(14, title="RSI Period", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought", minval=50)
rsiOversold = input.int(30, title="RSI Oversold", minval=1)
atrPeriod = input.int(14, title="ATR Period", minval=1)
atrMultiplier = input.float(1.5, title="ATR Multiplier", minval=0.1)
takeProfitATRMultiplier = input.float(2.0, title="Take Profit ATR Multiplier", minval=0.1)

// Multi-timeframe settings
htfEMAEnabled = input.bool(true, title="Use Higher Timeframe EMA Confirmation?", inline="htf")
htfEMATimeframe = input.timeframe("D", title="Higher Timeframe", inline="htf")

// MACD Parameters
macdShortPeriod = input.int(12, title="MACD Short Period", minval=1)
macdLongPeriod = input.int(26, title="MACD Long Period", minval=1)
macdSignalPeriod = input.int(9, title="MACD Signal Period", minval=1)

// Select trade direction
tradeDirection = input.string("Both", title="Trade Direction", options=["Both", "Long", "Short"])

// Calculating indicators
emaShort = ta.ema(close, emaShortPeriod)
emaLong = ta.ema(close, emaLongPeriod)
rsiValue = ta.rsi(close, rsiPeriod)
atrValue = ta.atr(atrPeriod)

// Calculate MACD
[macdLine, macdSignalLine, _] = ta.macd(close, macdShortPeriod, macdLongPeriod, macdSignalPeriod)

// Higher timeframe EMA confirmation
htfEMALong = request.security(syminfo.tickerid, htfEMATimeframe, ta.ema(close, emaLongPeriod))

// Trading conditions
longCondition = ta.crossover(emaShort, emaLong) and rsiValue < rsiOverbought and (not htfEMAEnabled or close > htfEMALong) and macdLine > macdSignalLine
shortCondition = ta.crossunder(emaShort, emaLong) and rsiValue > rsiOversold and (not htfEMAEnabled or close < htfEMALong) and macdLine < macdSignalLine

// Plotting EMAs
plot(emaShort, title="EMA Short", color=color.green)
plot(emaLong, title="EMA Long", color=color.red)

// Plotting MACD
hline(0, "Zero Line", color=color.gray)
plot(macdLine - macdSignalLine, title="MACD Histogram", color=color.green, style=plot.style_histogram)
plot(macdLine, title="MACD Line", color=color.blue)
plot(macdSignalLine, title="MACD Signal Line", color=color.red)

// Trailing Stop-Loss and Take-Profit levels
var float trailStopLoss = na
var float trailTakeProfit = na

if (strategy.position_size > 0) // Long Position
    trailStopLoss := na(trailStopLoss) ? close - atrValue * atrMultiplier : math.max(trailStopLoss, close - atrValue * atrMultiplier)
    trailTakeProfit := close + atrValue * takeProfitATRMultiplier
    strategy.exit("Exit Long", "Long", stop=trailStopLoss, limit=trailTakeProfit, when=shortCondition)

if (strategy.position_size < 0) // Short Position
    trailStopLoss := na(trailStopLoss) ? close + atrValue * atrMultiplier : math.min(trailStopLoss, close + atrValue * atrMultiplier)
    trailTakeProfit := close - atrValue * takeProfitATRMultiplier
    strategy.exit("Exit Short", "Short", stop=trailStopLoss, limit=trailTakeProfit, when=longCondition)

// Strategy Entry
if (longCondition and (tradeDirection == "Both" or tradeDirection == "Long"))
    strategy.entry("Long", strategy.long)
    
if (shortCondition and (tradeDirection == "Both" or tradeDirection == "Short"))
    strategy.entry("Short", strategy.short)

// Plotting Buy/Sell signals
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Plotting Trailing Stop-Loss and Take-Profit levels
plot(strategy.position_size > 0 ? trailStopLoss : na, title="Long Trailing Stop Loss", color=color.red, linewidth=2, style=plot.style_line)
plot(strategy.position_size < 0 ? trailStopLoss : na, title="Short Trailing Stop Loss", color=color.green, linewidth=2, style=plot.style_line)
plot(strategy.position_size > 0 ? trailTakeProfit : na, title="Long Take Profit", color=color.blue, linewidth=2, style=plot.style_line)
plot(strategy.position_size < 0 ? trailTakeProfit : na, title="Short Take Profit", color=color.orange, linewidth=2, style=plot.style_line)