
이 전략은 거래의 신뢰성과 위험 제어 능력을 높이기 위해 연속적인 확인 횟수 요구 사항과 동적 스톱 로스 설정을 포함한 다중 조건 검증 메커니즘을 사용합니다.
전략의 핵심 논리에는 다음과 같은 핵심 요소가 포함됩니다.
이것은 기술분석의 고전 이론과 현대적인 양적 거래방법을 결합한 전략 시스템이다. 다중 조건 검증과 엄격한 위험 통제를 통해 전략은 더 나은 안정성과 신뢰성을 가지고 있다.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("BOS and Volume Strategy with Confirmation", overlay=true)
// Parameters
swingLength = input.int(20, title="Swing Length", minval=1)
volumeMultiplier = input.float(1.1, title="Volume Multiplier", step=0.1)
volumeSMA_length = input.int(10, title="Volume SMA Length", minval=1)
takeProfitPercentage = input.float(0.02, title="Take Profit Percentage", step=0.01)
stopLossPercentage = input.float(0.15, title="Stop Loss Percentage", step=0.01) // New parameter for stop loss
atrLength = input.int(14, title="ATR Length")
confirmationBars = input.int(2, title="Confirmation Bars", minval=1)
// Calculate Swing Highs and Lows
swingHigh = ta.highest(high, swingLength)[1]
swingLow = ta.lowest(low, swingLength)[1]
// Calculate Volume Moving Average
volumeSMA = ta.sma(volume, volumeSMA_length)
highVolume = volume > (volumeSMA * volumeMultiplier)
// Break of Structure Detection with Confirmation
var int bullishCount = 0
var int bearishCount = 0
if (close > swingHigh and highVolume)
bullishCount := bullishCount + 1
bearishCount := 0
else if (close < swingLow and highVolume)
bearishCount := bearishCount + 1
bullishCount := 0
else
bullishCount := 0
bearishCount := 0
bullishBOSConfirmed = (bullishCount >= confirmationBars)
bearishBOSConfirmed = (bearishCount >= confirmationBars)
// Entry and Exit Conditions
var float entryPrice = na // Declare entryPrice as a variable
if (bullishBOSConfirmed and strategy.position_size <= 0)
entryPrice := close // Use ':=' for assignment
strategy.entry("Long", strategy.long)
if (strategy.position_size > 0)
// Calculate stop loss price
stopLossPrice = entryPrice * (1 - stopLossPercentage)
strategy.exit("Take Profit Long", from_entry="Long", limit=entryPrice * (1 + takeProfitPercentage), stop=stopLossPrice)
if (bearishBOSConfirmed and strategy.position_size >= 0)
entryPrice := close // Use ':=' for assignment
strategy.entry("Short", strategy.short)
if (strategy.position_size < 0)
// Calculate stop loss price
stopLossPrice = entryPrice * (1 + stopLossPercentage)
strategy.exit("Take Profit Short", from_entry="Short", limit=entryPrice * (1 - takeProfitPercentage), stop=stopLossPrice)
// Plot Swing Highs and Lows for Visualization
plot(swingHigh, title="Swing High", color=color.green, linewidth=1)
plot(swingLow, title="Swing Low", color=color.red, linewidth=1)