이 전략은 거래 신호를 생성하기 위해 볼링거 밴드와 5일 기하급수적 이동 평균 (EMA) 을 결합합니다. 가격이 상위 볼링거 밴드 이상으로 깨지고 5일 EMA 아래로 닫히면 짧은 포지션이 열립니다. 반대로 가격이 하위 볼링거 밴드 아래에 깨지고 5일 EMA 위에 닫히면 긴 포지션이 열립니다. 또한, 역 신호가 나타나면 전략은 현재 포지션을 닫고 반대 방향으로 새로운 포지션을 여는 것을 목표로합니다. 전략은 상대적인 가격 수준을 측정하기 위해 볼링거 밴드와 트렌드 변화를 캡처하고 거래 신호를 생성하기 위해 트렌드 필터로 EMA를 사용하여 시장 변동성과 트렌드 변화를 포착합니다.
볼링거 밴드 (Bollinger Bands) 와 EMA를 결합함으로써 이 전략은 중장기 거래 전략에 적합한 트렌드 및 변동성 기회를 효과적으로 포착할 수 있다. 그러나 매개 변수 최적화, 포지션 제어 및 리스크 관리에 주의를 기울여야 한다. 또한 더 나은 성능을 위해 다른 기술적 지표와 근본 분석과 결합되어야 한다. 전략의 성능은 시장 조건에 의해 영향을 받을 수 있으며 실제 상황에 따라 조정 및 최적화를 필요로 한다.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands and EMA Strategy", overlay=true) // Define the Bollinger Bands length = input.int(20, title="BB Length") src = input(close, title="BB Source") mult = input.float(2.0, title="BB Multiplier") basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Plot Bollinger Bands plot(upper, "Upper Band", color=color.red) plot(lower, "Lower Band", color=color.green) plot(basis, "Middle Band", color=color.blue) // Use plot instead of hline for basis // Define the 5-period EMA ema5 = ta.ema(close, 5) // Plot the 5 EMA plot(ema5, "5 EMA", color=color.orange) // Generate signals var float entry_price = na var string trade_direction = "none" if (na(close[1])) trade_direction := "none" // Condition for entering a short trade if (open > upper and close < ema5) if (trade_direction != "short") strategy.entry("Short", strategy.short) entry_price := close trade_direction := "short" // Condition for entering a long trade if (open < lower and close > ema5) if (trade_direction != "long") strategy.entry("Long", strategy.long) entry_price := close trade_direction := "long" // Close short trade on a long signal if (trade_direction == "short" and open < lower and close > ema5) strategy.close("Short") strategy.entry("Long", strategy.long) entry_price := close trade_direction := "long" // Close long trade on a short signal if (trade_direction == "long" and open > upper and close < ema5) strategy.close("Long") strategy.entry("Short", strategy.short) entry_price := close trade_direction := "short" // Close trades when opposite signal is generated if (trade_direction == "long" and open > upper and close < ema5) strategy.close("Long") trade_direction := "none" if (trade_direction == "short" and open < lower and close > ema5) strategy.close("Short") trade_direction := "none"