이 전략은 볼링거 밴드 지표에 기반한 모멘텀 추적 거래 시스템이다. 가격과 상부 볼링거 밴드 사이의 관계를 모니터링함으로써 잠재적인 브레이크아웃 기회를 식별하고, 가격이 하위 밴드 이하로 떨어지면 포지션을 닫는다. 볼링거 밴드는 중간 밴드 (가동 평균), 상부 및 하부 밴드 (표준편차를 사용하여 계산) 로 구성되어 있다. 이 전략은 여러 유형의 이동 평균을 지원하며 거래자의 선호도에 따라 매개 변수를 조정할 수 있다.
이 전략의 핵심 논리는 다음과 같은 요점들에 기초하고 있습니다.
이것은 볼링거 밴드 (Bollinger Bands) 를 기반으로 하는 트렌드를 따르는 전략으로, 가격과 밴드 사이의 관계를 관찰함으로써 시장 트렌드를 포착한다. 전략은 좋은 적응력과 위험 관리 메커니즘으로 잘 설계되었다. 제안된 최적화 방향을 통해 전략의 안정성과 수익성이 더욱 향상될 수 있다. 특히 변동적인 시장에 적합하지만, 거래자는 실제 조건에 따라 매개 변수와 위험 관리 조치를 조정해야 한다.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="Demo GPT - Bollinger Bands Strategy", overlay=true, initial_capital=100000, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3) // 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) startDate = input(timestamp('01 Jan 2018 00:00 +0000'), title="Start Date") endDate = input(timestamp('31 Dec 2069 23:59 +0000'), title="End Date") // 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) // Calculations basis = ma(src, length, maType) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Plotting 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 inTradeWindow = true longCondition = close > upper and inTradeWindow exitCondition = close < lower and inTradeWindow if (longCondition) strategy.entry("Long", strategy.long, qty=1) if (exitCondition) strategy.close("Long")