이 전략은 볼링거 밴드, RSI 지표 및 ATR 기반의 동적 스톱 로스 메커니즘을 결합한 평균 역전 이론을 기반으로 한 양적 거래 시스템입니다. 전략은 평균에서 극심한 가격 오차를 식별하여 거래하며, 가격이 낮은 볼링거 밴드와 RSI가 과판된 영역에 도달하면 길게 이동하고 가격이 상위 볼링거 밴드와 RSI가 과반된 영역에 도달하면 짧게 이동하며, ATR을 사용하여 효율적인 리스크 보상 관리를 위해 스톱 로스 및 영리 수준을 동적으로 설정합니다.
이 전략은 가격 움직임의 경계를 결정하기 위해 2.0의 표준편차 곱셈으로 20주기 볼링거 밴드를 주요 트렌드 지표로 사용한다. 14주기 RSI는 보충 지표로 통합되어 30 이하의 판독이 과판된 것으로 간주되고 70 이상의 판독이 과판된 것으로 간주된다. 가격은 하위 밴드 이하로 떨어지고 RSI는 30 이하로 떨어지면 긴 포지션은 시작되며, 잠재적인 과판 조건을 나타내고, 가격이 상위 밴드 이상으로 떨어지고 RSI는 70 이상으로 떨어지면 짧은 포지션은 취득된다. 중간 밴드는 포지션 관리를 위해 RSI 반전 신호와 결합하여 수익 취득 수준으로 작용한다. 또한, 14주기 ATR 기반의 동적 손실 목표 메커니즘이 구현되며, 2x ATR에서 수익을 정하고 3x ATR에서 정밀한 위험을 제어하기 위해 정지된다.
이 전략은 볼링거 밴드 (Bollinger Band) 와 RSI (RSI) 를 결합하여 포괄적인 평균 역전 거래 시스템을 구축한다. ATR 기반의 동적 스톱의 도입은 위험을 효과적으로 제어하여 유리한 위험 보상 특성을 제공합니다. 최적화 할 여지가 있지만 전반적인 설계 개념은 명확하고 실용적입니다. 거래자는 특정 시장 특성에 따라 매개 변수를 조정하고 실시간 거래에서 전략 성과를 지속적으로 모니터링하는 것이 좋습니다.
/*backtest start: 2024-11-19 00:00:00 end: 2024-11-26 00:00:00 period: 15m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SOL/USDT Mean Reversion Strategy", overlay=true) // Input parameters length = input(20, "Bollinger Band Length") std_dev = input(2.0, "Standard Deviation") rsi_length = input(14, "RSI Length") rsi_oversold = input(30, "RSI Oversold") rsi_overbought = input(70, "RSI Overbought") // Calculate indicators [middle, upper, lower] = ta.bb(close, length, std_dev) rsi = ta.rsi(close, rsi_length) // Entry conditions long_entry = close < lower and rsi < rsi_oversold short_entry = close > upper and rsi > rsi_overbought // Exit conditions long_exit = close > middle or rsi > rsi_overbought short_exit = close < middle or rsi < rsi_oversold // Strategy execution if (long_entry) strategy.entry("Long", strategy.long) if (short_entry) strategy.entry("Short", strategy.short) if (long_exit) strategy.close("Long") if (short_exit) strategy.close("Short") // Stop loss and take profit atr = ta.atr(14) strategy.exit("Long SL/TP", "Long", stop=strategy.position_avg_price - 2*atr, limit=strategy.position_avg_price + 3*atr) strategy.exit("Short SL/TP", "Short", stop=strategy.position_avg_price + 2*atr, limit=strategy.position_avg_price - 3*atr) // Plot indicators plot(middle, color=color.yellow, title="BB Middle") plot(upper, color=color.red, title="BB Upper") plot(lower, color=color.green, title="BB Lower") // Plot entry and exit points plotshape(long_entry, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(short_entry, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) plotshape(long_exit, title="Long Exit", location=location.abovebar, color=color.orange, style=shape.circle, size=size.small) plotshape(short_exit, title="Short Exit", location=location.belowbar, color=color.orange, style=shape.circle, size=size.small)