이 전략은 볼링거 밴드 이중 표준 편차 모형을 기반으로 설계된 거래 전략이다. 볼링거 밴드의 상부와 하부 레일과 하나와 두 개의 표준 편차를 거래 신호로 사용합니다. 가격이 상부 레일을 통과할 때 길고 가격이 하부 레일을 통과할 때 짧습니다. 이 전략은 또한 하나와 두 개의 표준 편차를 스톱 로스 라인으로 사용합니다.
이 전략은 먼저 볼링거 밴드의 중간 레일, 상부 레일 및 하부 레일을 계산합니다. 중간 레일은 CLOSE의 SMA이며, 상부 레일은 중간 레일 + 2입니다.표준편차, 그리고 하부 레일은 중부 레일 - 2표준편차. 가격이 상부 레일을 넘을 때, 사기 신호가 길게 이동하도록 생성됩니다. 가격이 하부 레일을 넘을 때, 판매 신호가 짧게 이동하도록 생성됩니다. 또한 전략은 또한 중간 레일 + 1 표준편차 및 중간 레일 - 1 표준편차의 선을 플롯합니다. 그들은 중지 손실 라인으로 사용됩니다. 구체적인 논리는 다음과 같습니다:
일반적으로 이 전략은 전형적인 볼링거 밴드 브레이크아웃 전략이다. 신호 판단의 엄격성을 높이기 위해 이중 표준 오차를 사용하며 위험을 적극적으로 제어하기 위해 이중 스톱 손실 라인을 채택한다. 전략은 일부 매개 변수 최적화 공간을 가지고 있다. 중간 레일 기간과 표준 오차 곱셈자와 같은 매개 변수들을 조정함으로써 더 나은 전략 성능을 얻을 수 있다. 동시에, 전략은 볼링거 밴드 전략에서 잘못된 브레이크아웃의 일반적인 문제도 직면한다. 또한, 스톱 손실 메커니즘에 대한 추가 개선과 최적화의 여지가 있다.
/*backtest start: 2022-12-11 00:00:00 end: 2023-12-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // Bollinger Bands: Madrid : 14/SEP/2014 11:07 : 2.0 // This displays the traditional Bollinger Bands, the difference is // that the 1st and 2nd StdDev are outlined with two colors and two // different levels, one for each Standard Deviation strategy(shorttitle='MBB', title='Bollinger Bands', overlay=true) src = input(close) length = input.int(34, minval=1) mult = input.float(2.0, minval=0.001, maxval=50) basis = ta.sma(src, length) dev = ta.stdev(src, length) dev2 = mult * dev upper1 = basis + dev lower1 = basis - dev upper2 = basis + dev2 lower2 = basis - dev2 colorBasis = src >= basis ? color.blue : color.orange pBasis = plot(basis, linewidth=2, color=colorBasis) pUpper1 = plot(upper1, color=color.new(color.blue, 0), style=plot.style_circles) pUpper2 = plot(upper2, color=color.new(color.blue, 0)) pLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles) pLower2 = plot(lower2, color=color.new(color.orange, 0)) fill(pBasis, pUpper2, color=color.new(color.blue, 80)) fill(pUpper1, pUpper2, color=color.new(color.blue, 80)) fill(pBasis, pLower2, color=color.new(color.orange, 80)) fill(pLower1, pLower2, color=color.new(color.orange, 80)) // Entry conditions longCondition = ta.crossover(close, upper1) shortCondition = ta.crossunder(close, lower1) // Entry and exit strategy strategy.entry("Buy", strategy.long, when=longCondition) strategy.entry("Sell", strategy.short, when=shortCondition) strategy.close("Buy", when=shortCondition) strategy.close("Sell", when=longCondition)