
A estratégia é um sistema de negociação quantitativa que combina o princípio da regressão ao valor médio com os indicadores técnicos MACD e ATR. A estratégia identifica os desvios de preço através das Bollinger Bands, utiliza a dinâmica de confirmação do MACD e executa o gerenciamento de risco dinâmico em combinação com o ATR. A idéia central da estratégia é capturar as oportunidades de reversão de preços quando ocorrem desvios significativos, verificando-os com vários indicadores técnicos.
A estratégia utiliza três indicadores técnicos que trabalham em sinergia: primeiro, julgar se há um desvio significativo no preço através do trajeto de Brin para cima e para baixo; segundo, usar o indicador MACD para verificar o movimento do preço e garantir que a direção da negociação está de acordo com a tendência do mercado; finalmente, introduzir o indicador ATR para definir a posição de parada e ganho dinâmica. Concretamente, quando o preço quebra o trajeto de Brin para baixo e a linha MACD está acima da linha de sinal, o sistema gera um sinal de parada.
Esta é uma estratégia que combina a análise técnica clássica com métodos modernos de negociação quantitativa. Através do uso de múltiplos indicadores em conjunto, mantém as vantagens centrais da estratégia de regressão ao valor médio e supera as limitações de um único indicador. A estratégia é altamente escalável, e pode melhorar continuamente o seu desempenho em diferentes ambientes de mercado através da optimização de parâmetros e da adição de módulos funcionais.
/*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")