이 전략은 볼링거 밴드 (Bollinger Bands) 를 기반으로 한 모멘텀 브레이크아웃 거래 시스템으로, 주로 가격과 상부 볼링거 밴드 (Bollinger Band) 사이의 관계를 통해 트렌드 기회를 포착합니다. 이 전략은 높은 변동성을 가진 시장에 특히 적합한 시장 변동성 특성을 식별하기 위해 표준 오차 채널과 결합된 적응적인 이동 평균 유형 선택 메커니즘을 사용합니다.
이 전략의 핵심 논리는 다음의 핵심 요소에 기초합니다. 1. 사용자 정의 가능한 이동 평균 (SMA, EMA, SMMA, WMA, VWMA 포함) 을 사용하여 볼링거 밴드의 중간 대역을 계산합니다. 2. 표준 편차 곱셈자를 통해 상부 및 하부 밴드 위치를 동적으로 결정합니다 (예정 2.0) 3. 가격이 상단 범위를 넘어서면 긴 포지션에 진입하여 강력한 브레이크오웃 트렌드가 형성되는 것을 나타냅니다. 4. 가격이 하위 범위에 떨어지면 지위를 종료합니다. 상승 추세의 잠재적인 끝을 암시합니다. 5. 거래 비용 (0.1%) 과 미끄러짐 (3점) 을 포함, 실제 거래 조건을 더 잘 반영합니다.
이것은 명확한 논리로 전략을 따르는 잘 설계된 트렌드입니다. 볼링거 밴드의 역동적 성격으로 시장 동력을 포착하고 좋은 위험 통제 메커니즘을 포함합니다. 전략은 매우 사용자 정의 가능하며 매개 변수 조정을 통해 다른 시장 환경에 적응 할 수 있습니다. 라이브 거래 구현을 위해 전략 개선을위한 제안 된 최적화 방향을 포함하면서 철저한 매개 변수 최적화 및 백테스팅 검증을 수행하는 것이 좋습니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-11 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Demo GPT - Bollinger Bands", overlay=true, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Inputs length = input.int(20, minval=1, title="Length") maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"]) src = input(close, title="Source") mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev") offset = input.int(0, "Offset", minval=-500, maxval=500) // Date range inputs startYear = input.int(2018, "Start Year", minval=1970, maxval=2100) startMonth = input.int(1, "Start Month", minval=1, maxval=12) startDay = input.int(1, "Start Day", minval=1, maxval=31) endYear = input.int(2069, "End Year", minval=1970, maxval=2100) endMonth = input.int(12, "End Month", minval=1, maxval=12) endDay = input.int(31, "End Day", minval=1, maxval=31) // Time range startTime = timestamp("GMT+0", startYear, startMonth, startDay, 0, 0) endTime = timestamp("GMT+0", endYear, endMonth, endDay, 23, 59) // Moving average function ma(source, length, _type) => switch _type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) // Calculate Bollinger Bands basis = ma(src, length, maType) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Plot plot(basis, "Basis", color=#2962FF, offset=offset) p1 = plot(upper, "Upper", color=#F23645, offset=offset) p2 = plot(lower, "Lower", color=#089981, offset=offset) fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95)) // Strategy logic: Only go long and flat inDateRange = time >= startTime and time <= endTime noPosition = strategy.position_size == 0 longPosition = strategy.position_size > 0 // Buy if close is above upper band if inDateRange and noPosition and close > upper strategy.entry("Long", strategy.long) // Sell/Exit if close is below lower band if inDateRange and longPosition and close < lower strategy.close("Long")