이 전략은 돈치안 채널을 기반으로 한 모멘텀 브레이크아웃 거래 전략으로, 가격 브레이크아웃과 볼륨 확인을 주요 조건으로 결합합니다. 전략은 사전 정의된 범위 너머의 가격 브레이크아웃을 관찰하면서 볼륨 지원을 필요로 함으로써 상승 시장 추세를 포착합니다. 채널 안정성을 향상시키기 위해 지연 매개 변수를 통합하고 유연한 출구 조건을 제공합니다.
핵심 논리는 다음의 주요 구성 요소를 포함합니다.
1. 주요 기술 지표로 뒤떨어진 도
이것은 명확한 논리를 가진 잘 설계된 트렌드 추적 전략이다. 가격 브레이크와 볼륨 확인을 결합함으로써 전략은 유연성을 유지하면서 신뢰성을 유지한다. 매개 변수화 디자인은 특정 시장 조건에 따라 매개 변수를 최적화해야하지만 좋은 적응력을 제공합니다. 전반적으로 이것은 추가 최적화와 실용적인 구현에 가치가있는 전략적 틀을 나타냅니다.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-15 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=6 strategy("Breakout Strategy", overlay=true, calc_on_every_tick=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, pyramiding=1, fill_orders_on_standard_ohlc=true) // Input Parameters start_date = input(timestamp("2018-01-01 00:00"), "Start Date") end_date = input(timestamp("2060-01-01 00:00"), "End Date") in_time_range = true length = input.int(27, title="Donchian Channel Length", minval=1, tooltip="Number of bars used to calculate the Donchian channel.") lag = input.int(10, title="Donchian Channel Offset", minval=1, tooltip = "Offset to delay the Donchian channel, enhancing stability.") volume_mult = input.float(1.4, title="Volume Multiplier", minval=0.1, step=0.1, tooltip="Multiplier for the average volume to filter breakout conditions.") closing_condition = input.string("Mid", title="Trade Closing Band", options= ["Upper","Lower","Mid"], tooltip = "Donchian Channel Band to use for exiting trades: Upper, Lower, or Middle.") // // Donchian Channel (Lagged for Stability) upper_band = ta.highest(high[lag], length) lower_band = ta.lowest(low[lag], length) middle_band = (upper_band + lower_band) / 2 plot(upper_band, color=color.blue, title="Upper Band (Lagged)") plot(middle_band, color=color.orange, title="Middle Band") plot(lower_band, color=color.blue, title="Lower Band (Lagged)") // Volume Filter avg_volume = ta.sma(volume, length) volume_condition = volume > avg_volume * volume_mult // Long Breakout Condition long_condition = close > upper_band and volume_condition bool reverse_exit_condition = false // Exit Condition (Close below the middle line) if closing_condition == "Lower" reverse_exit_condition := close < lower_band else if closing_condition == "Upper" reverse_exit_condition := close < upper_band else reverse_exit_condition := close < middle_band // Long Strategy: Entry and Exit if in_time_range and long_condition strategy.entry("Breakout Long", strategy.long) // Exit on Reverse Signal if in_time_range and reverse_exit_condition strategy.close("Breakout Long", comment="Reverse Exit")