
이 전략은 평균 회귀 원칙과 기술 지표 MACD 및 ATR을 결합한 양적 거래 시스템이다. 이 전략은 브린 밴드 (Bollinger Bands) 를 통해 가격 편향을 식별하고, MACD 확인 동력을 활용하며, ATR과 결합하여 동적 위험 관리를 한다. 전략의 핵심 아이디어는 가격이 눈에 띄는 편향이 발생할 때, 여러 기술 지표의 검증을 통해 가격 회귀 기회를 잡는 것이다.
이 전략은 3가지 기술 지표의 협동적인 작업 방식을 채택합니다. 첫째, 부린 띠를 상향 하향으로 판단하여 가격이 눈에 띄는 편차가 발생하는지 판단합니다. 둘째, MACD 지표를 사용하여 가격 움직임을 확인하여 거래 방향이 시장 추세와 일치하는지 확인합니다. 마지막으로, ATR 지표를 도입하여 동적인 중지 및 이익 위치를 설정합니다. 구체적으로, 가격이 부린 띠를 하향으로 돌파하고 MACD 라인이 신호 라인을 상향으로 할 때, 시스템은 다중 신호를 생성합니다.
이것은 고전적인 기술 분석과 현대적인 양적 거래 방법을 결합하는 전략이다. 다중 지표의 조합 사용으로 평균 회귀 전략의 핵심 장점을 유지하면서도 단일 지표의 한계를 극복합니다. 전략은 확장성이 강하며, 매개 변수 최적화 및 기능 모듈의 추가로 다양한 시장 환경에서 지속적으로 성능을 향상시킬 수 있습니다.
/*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")