Esta estratégia é um sistema de negociação quantitativo que combina princípios de reversão média com indicadores técnicos MACD e ATR. Ele usa Bandas de Bollinger para identificar desvios de preço, MACD para confirmação de impulso e ATR para gerenciamento de risco dinâmico.
A estratégia emprega três indicadores técnicos que trabalham em conjunto: primeiro, as Bandas de Bollinger determinam desvios significativos nos preços; segundo, o MACD valida o impulso dos preços, garantindo que a direção do comércio esteja alinhada com as tendências do mercado; finalmente, o ATR define níveis dinâmicos de stop-loss e take-profit. Especificamente, os sinais longos são gerados quando o preço se rompe abaixo da faixa de Bollinger inferior com a linha MACD acima de sua linha de sinal, enquanto os sinais curtos ocorrem quando o preço se rompe acima da banda de Bollinger superior com a linha MACD abaixo de sua linha de sinal. O ATR ajusta dinamicamente os níveis de stop-loss e take-profit com base na volatilidade do mercado.
Esta estratégia combina análise técnica clássica com métodos de negociação quantitativos modernos. Através do uso coordenado de múltiplos indicadores, mantém as principais vantagens da reversão média, superando as limitações de indicadores únicos. A estratégia é altamente extensível, capaz de melhoria contínua através de otimização de parâmetros e módulos funcionais adicionais. Enquanto isso, seu mecanismo abrangente de controle de risco garante estabilidade.
/*backtest start: 2024-11-12 00:00:00 end: 2024-12-11 08:00:00 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Enhanced Mean Reversion with MACD and ATR", overlay=true) // Nastavenia Bollinger Bands bbLength = input(20, title="Bollinger Bands Length") bbMult = input(2, title="Bollinger Bands Multiplier") basis = ta.sma(close, bbLength) dev = ta.stdev(close, bbLength) upperBand = basis + bbMult * dev lowerBand = basis - bbMult * dev // MACD indikátor macdShort = input(12, title="MACD Short Length") macdLong = input(26, title="MACD Long Length") macdSignal = input(9, title="MACD Signal Length") [macdLine, signalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal) // ATR pre dynamický Stop Loss a Take Profit atrLength = input(14, title="ATR Length") atrMultiplier = input(1.5, title="ATR Multiplier") atrValue = ta.atr(atrLength) // Vstupné podmienky pre long pozície longCondition = ta.crossover(close, lowerBand) and macdLine > signalLine if (longCondition) strategy.entry("Long", strategy.long) // Vstupné podmienky pre short pozície shortCondition = ta.crossunder(close, upperBand) and macdLine < signalLine if (shortCondition) strategy.entry("Short", strategy.short) // Dynamický Stop Loss a Take Profit na základe ATR longSL = strategy.position_avg_price - atrValue * atrMultiplier longTP = strategy.position_avg_price + atrValue * atrMultiplier * 2 shortSL = strategy.position_avg_price + atrValue * atrMultiplier shortTP = strategy.position_avg_price - atrValue * atrMultiplier * 2 // Pridanie stop loss a take profit if (strategy.position_size > 0) strategy.exit("Take Profit/Stop Loss", "Long", stop=longSL, limit=longTP) if (strategy.position_size < 0) strategy.exit("Take Profit/Stop Loss", "Short", stop=shortSL, limit=shortTP) // Vizualizácia Bollinger Bands a MACD plot(upperBand, color=color.red, title="Upper Bollinger Band") plot(lowerBand, color=color.green, title="Lower Bollinger Band") plot(basis, color=color.blue, title="Bollinger Basis") hline(0, "MACD Zero Line", color=color.gray) plot(macdLine - signalLine, color=color.blue, title="MACD Histogram") plot(macdLine, color=color.red, title="MACD Line") plot(signalLine, color=color.green, title="Signal Line") // Generovanie alertov alertcondition(longCondition, title="Long Alert", message="Long Entry Signal") alertcondition(shortCondition, title="Short Alert", message="Short Entry Signal")