
이 전략은 볼린저 밴드 추세 발산과 동적 대역폭 변화를 기반으로 한 다단계 양적 거래 시스템입니다. 이 전략은 볼린저 밴드 폭의 역동적인 변화, 가격 돌파, EMA200 이동평균의 조정을 모니터링하여 완전한 거래 의사 결정 프레임워크를 구축합니다. 이 전략은 시장 추세의 전환점을 효과적으로 포착할 수 있는 적응형 변동성 추적 메커니즘을 채택합니다.
전략의 핵심은 다음과 같은 핵심 요소에 기초합니다.
이 전략은 볼린저 밴드 추세 발산과 역동적인 대역폭 변화를 통해 강력한 거래 시스템을 구축합니다. 이 전략은 추세 시장에서는 좋은 성과를 거두지만, 변동성이 큰 시장과 매개변수 최적화에서는 아직 개선이 필요합니다. 전반적으로 이 전략은 실용적 가치가 좋으며 확장의 여지가 있습니다.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("BBDIV_Strategy", overlay=true)
// Inputs for Bollinger Bands
length = input.int(20, title="BB Length")
mult = input.float(2.0, title="BB Multiplier")
// Calculate Bollinger Bands
basis = ta.sma(close, length)
deviation = mult * ta.stdev(close, length)
upperBB = basis + deviation
lowerBB = basis - deviation
// Calculate Bollinger Band width
bb_width = upperBB - lowerBB
prev_width = ta.valuewhen(not na(bb_width[1]), bb_width[1], 0)
prev_prev_width = ta.valuewhen(not na(bb_width[2]), bb_width[2], 0)
// Determine BB state
bb_state = bb_width > prev_width and prev_width > prev_prev_width ? 1 : bb_width < prev_width and prev_width < prev_prev_width ? -1 : 0
// Assign colors based on BB state
bb_color = bb_state == 1 ? color.green : bb_state == -1 ? color.red : color.gray
// Highlight candles closed outside BB
candle_size = high - low
highlight_color = (candle_size > bb_width / 2 and close > upperBB) ? color.new(color.green, 50) : (candle_size > bb_width / 2 and close < lowerBB) ? color.new(color.red, 50) : na
bgcolor(highlight_color, title="Highlight Candles")
// Plot Bollinger Bands
plot(upperBB, title="Upper BB", color=bb_color, linewidth=2, style=plot.style_line)
plot(lowerBB, title="Lower BB", color=bb_color, linewidth=2, style=plot.style_line)
plot(basis, title="Middle BB", color=color.blue, linewidth=1, style=plot.style_line)
// Calculate EMA 200
ema200 = ta.ema(close, 200)
// Plot EMA 200
plot(ema200, title="EMA 200", color=color.orange, linewidth=2, style=plot.style_line)
// Strategy logic
enter_long = highlight_color == color.new(color.green, 50)
exit_long = highlight_color == color.new(color.red, 50)
if (enter_long)
strategy.entry("Buy", strategy.long)
if (exit_long)
strategy.close("Buy")
// Display profit at close
if (exit_long)
var float entry_price = na
var float close_price = na
var float profit = na
if (strategy.opentrades > 0)
entry_price := strategy.opentrades.entry_price(strategy.opentrades - 1)
close_price := close
profit := (close_price - entry_price) * 100 / entry_price * 2 * 10 // Assuming 1 pip = 0.01 for XAUUSD
label.new(bar_index, high + (candle_size * 2), str.tostring(profit, format.mintick) + " USD", style=label.style_label_up, color=color.green)