
A estratégia é um sistema de negociação de acompanhamento de tendências que combina o MACD (indicador de tendência de média móvel) e o SAR (indicador de reversão de paralisação). Através da combinação orgânica do indicador de dinâmica com o indicador de tendência, é feita uma análise quantitativa da intensidade da tendência ao mesmo tempo em que se identifica a direção da tendência do mercado, para capturar oportunidades de negociação de melhor qualidade. A estratégia usa o cruzamento das linhas rápidas e lentas do MACD para confirmar a quantidade de movimento da tendência, ao mesmo tempo em que usa o ponto SAR para confirmar a direção da tendência e definir um stop loss móvel.
A lógica central da estratégia consiste em duas partes:
Regras de entrada:
Regras de jogo:
Adicionar filtro de ambiente de mercado: Pode-se introduzir indicadores de volatilidade (como o ATR) para julgar o estado do mercado, reduzir a frequência de negociação ou suspender a negociação durante a baixa volatilidade.
Melhore o mecanismo de stop loss: Além do SAR Stop, pode-se aumentar a combinação de stop proporcional fixo e stop móvel, aumentando a estabilidade do controle de risco.
Seleção de parâmetros de otimização: Uma combinação de parâmetros de MACD e SAR pode ser automaticamente otimizada para diferentes ciclos de mercado por meio de métodos de aprendizado de máquina.
Aumentar a análise de volume de transações: Combinação de indicadores de volume de transação para confirmar a intensidade da tendência e aumentar a confiabilidade do sinal.
A estratégia, através da combinação de MACD e SAR paralelo, constrói um sistema de negociação de acompanhamento de tendências mais completo. A estratégia possui vantagens como clareza de sinal, controle de risco e forte adaptabilidade, mas também possui limitações como dependência de tendência e atraso de sinal.
/*backtest
start: 2024-02-21 00:00:00
end: 2024-11-25 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MACD + Parabolic SAR Strategy", shorttitle="MACD+SAR", overlay=true)
//========== User Inputs ==========//
// MACD parameters
fastLength = input.int(12, "MACD Fast Length")
slowLength = input.int(26, "MACD Slow Length")
signalLength = input.int(9, "MACD Signal Length")
// SAR parameters (start, step, maximum)
afStart = input.float(0.02, "SAR Start")
afIncrement = input.float(0.02, "SAR Increment")
afMax = input.float(0.2, "SAR Max")
//========== MACD Calculation ==========//
[macdLine, signalLine, histLine] = ta.macd(close, fastLength, slowLength, signalLength)
//========== Parabolic SAR Calculation ==========//
sarValue = ta.sar(afStart, afIncrement, afMax)
//========== Entry Conditions ==========//
// Long: MACD > Signal + close > SAR
longCondition = (macdLine > signalLine) and (close > sarValue)
// Short: MACD < Signal + close < SAR
shortCondition = (macdLine < signalLine) and (close < sarValue)
//========== Enter Positions ==========//
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
//========== Exit Positions on Opposite Signal ==========//
if strategy.position_size > 0 and shortCondition
strategy.close("Long", comment="Exit Long")
if strategy.position_size < 0 and longCondition
strategy.close("Short", comment="Exit Short")