이 전략은 볼링거 밴드 지표에 기반하여 거래 신호를 생성하고 스톱 로스 / 테이크 노프트를 사용하여 포지션을 관리합니다. 그것은 볼링거 밴드 상부 및 하부 밴드의 브레이크오웃을 모니터링하고, 가격이 상부 밴드 이상으로 넘어가면 길게, 가격이 하부 밴드를 넘어가면 짧게, 스톱 로스 오더를 사용하여 가격이 반대의 밴드를 넘어가면 종료됩니다.
이 전략은 볼링거 밴드 지표의 중간, 상위 및 하위 대역을 이용합니다. 중간 대역은 이동 평균이며, 상위 대역은 중간 대역 + 2 표준 편차이며, 하위 대역은 중간 대역 - 2 표준 편차입니다.
먼저 볼링거 밴드 중부, 상부 및 하부 밴드를 계산합니다. 그러면 가격이 상부 밴드 이상 또는 하부 밴드 아래에 깨지는지 확인합니다. 가격이 상부 밴드 이상으로 깨지면 길게됩니다. 가격이 하부 밴드 아래에 깨지면 짧게됩니다. 또한 가격이 반면으로 밴드를 깨면 스톱 로스 명령을 사용하여 포지션을 종료합니다.
구체적으로, 전략 논리는 다음과 같습니다.
이것은 가격이 큰 움직임을 할 때 트렌드를 잡을 수 있으며, 스톱 로스를 사용하여 손실을 제한합니다.
지표를 조합하고, 스톱 로스 단위를 조정하여 최적화 할 수 있습니다.
이것은 볼링거 밴드를 기반으로 한 전략을 따르는 비교적 간단한 트렌드입니다. 가격이 깨지면 빠르게 포지션을 취하고 위험을 제어하기 위해 스톱 로스를 사용할 수 있습니다. 그러나 가격에만 의존하면 잘못된 판단이 발생할 수 있으며 민감한 스톱 로스는 거래 빈도를 증가시킬 수 있습니다. 매개 변수 조정, 지표 조합, 스톱 조정 등을 통해 더 향상시킬 수 있습니다. 전반적으로 간단하고 신뢰할 수있는 양 거래 프레임워크를 제공합니다.
/*backtest start: 2023-09-26 00:00:00 end: 2023-10-26 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © ROBO_Trading //@version=5 strategy(title = "Bollinger Stop Strategy", shorttitle = "BBStop", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 10000, default_qty_value = 100, commission_value = 0.1) //Settings long = input(true) short = input(true) length = input.int(20, minval=1) mult = input.float(2.0, minval=0.001, maxval=50) source = input(close) showbb = input(true, title = "Show Bollinger Bands") showof = input(true, title = "Show Offset") startTime = input(defval = timestamp("01 Jan 2000 00:00 +0000"), title = "Start Time", inline = "time1") finalTime = input(defval = timestamp("31 Dec 2099 23:59 +0000"), title = "Final Time", inline = "time1") //Bollinger Bands basis = ta.sma(source, length) dev = mult * ta.stdev(source, length) upper = basis + dev lower = basis - dev //Show indicator offset = showof ? 1 : 0 colorBasis = showbb ? color.gray : na colorUpper = showbb ? color.blue : na colorLower = showbb ? color.blue : na colorBands = showbb ? color.blue : na p0 = plot(basis, "Basis", color = colorBasis, offset = offset) p1 = plot(upper, "Upper", color = colorUpper, offset = offset) p2 = plot(lower, "Lower", color = colorLower, offset = offset) fill(p1, p2, title = "Background", color = colorBands, transp = 90) //Trading truetime = true if basis > 0 and truetime if long strategy.entry("Long", strategy.long, stop = upper, when = truetime) if short strategy.entry("Short", strategy.short, stop = lower, when = truetime) if long == false strategy.exit("Exit", "Short", stop = upper) if short == false strategy.exit("Exit", "Long", stop = lower) if time > finalTime strategy.close_all()