
이 전략은 볼린저 밴드 지표를 기반으로 한 모멘텀 추종 거래 시스템입니다. 가격과 상단 볼린저 밴드 간의 관계를 모니터링하여 잠재적인 돌파 기회를 파악하고 가격이 하단 볼린저 밴드 아래로 떨어지면 포지션을 종료합니다. 볼린저 밴드는 중간 밴드(이동 평균), 상단 밴드, 하단 밴드(표준 편차에서 계산)의 세 개 선으로 구성됩니다. 이 전략은 여러 이동 평균 유형을 지원하며, 트레이더의 선호도에 따라 매개변수를 조정할 수 있습니다.
전략의 핵심 논리는 다음과 같은 점에 기초합니다.
이는 볼린저 밴드를 기반으로 한 추세 추종 전략으로, 가격과 볼린저 밴드 간의 관계를 관찰하여 시장 추세를 파악합니다. 이 전략은 합리적으로 설계되었으며 조정성과 위험 관리 메커니즘이 양호합니다. 추천된 최적화 방향을 통해 전략의 안정성과 수익성을 더욱 개선할 수 있습니다. 이 전략은 변동성이 큰 시장에 특히 적합하지만, 거래자는 실제 상황에 따라 매개변수와 위험 관리 조치를 조정해야 합니다.
/*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")