이 전략은 볼링거 밴드 트렌드 디버전스 및 동적 대역폭 변화에 기반한 다단계 양적 거래 시스템이다. 이 전략은 볼링거 밴드 너비 역동성, 가격 브레이크오웃 및 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)