볼링거 브레이크오웃 스톱 로스 전략

저자:차오장, 날짜: 2023-10-27 16:50:24
태그:

img

전반적인 설명

이 전략은 볼링거 밴드 지표에 기반하여 거래 신호를 생성하고 스톱 로스 / 테이크 노프트를 사용하여 포지션을 관리합니다. 그것은 볼링거 밴드 상부 및 하부 밴드의 브레이크오웃을 모니터링하고, 가격이 상부 밴드 이상으로 넘어가면 길게, 가격이 하부 밴드를 넘어가면 짧게, 스톱 로스 오더를 사용하여 가격이 반대의 밴드를 넘어가면 종료됩니다.

전략 논리

이 전략은 볼링거 밴드 지표의 중간, 상위 및 하위 대역을 이용합니다. 중간 대역은 이동 평균이며, 상위 대역은 중간 대역 + 2 표준 편차이며, 하위 대역은 중간 대역 - 2 표준 편차입니다.

먼저 볼링거 밴드 중부, 상부 및 하부 밴드를 계산합니다. 그러면 가격이 상부 밴드 이상 또는 하부 밴드 아래에 깨지는지 확인합니다. 가격이 상부 밴드 이상으로 깨지면 길게됩니다. 가격이 하부 밴드 아래에 깨지면 짧게됩니다. 또한 가격이 반면으로 밴드를 깨면 스톱 로스 명령을 사용하여 포지션을 종료합니다.

구체적으로, 전략 논리는 다음과 같습니다.

  1. 볼링거 대역을 계산합니다 중간, 상위 및 하위 대역
  2. 만약 가격이 상위 범위를 넘어선다면,
  3. 가격이 하위 범위를 넘어지면, 짧은 이동
  4. 이미 긴 경우, 가격이 하위 범위를 넘어갈 때 긴 닫습니다.
  5. 이미 단축된 경우, 가격이 상위 범위를 넘을 때 단축을 닫습니다.

이것은 가격이 큰 움직임을 할 때 트렌드를 잡을 수 있으며, 스톱 로스를 사용하여 손실을 제한합니다.

장점

  • 엔트리 신호를 위해 볼링거 밴드를 사용하면 브레이크 이후의 트렌드를 파악합니다.
  • 명확한 길고 짧은 신호, 간단한 규칙
  • 스톱 로스 전략 거래당 최대 손실 제한
  • 전략 최적화를 위한 매개 변수 조정성

위험성

  • 빈번한 작은 스톱 로스 거래는 전체 P/L에 영향을 줄 수 있습니다.
  • 패러미터 조정이 잘못되면 신호가 너무 많거나 트레이드를 놓칠 수 있습니다.
  • 가격만 고려합니다. 확인을 위한 다른 지표는 없습니다.
  • 브레이크오웃 직전의 스톱 로스 조정은 손실을 증가시킬 수 없습니다.

지표를 조합하고, 스톱 로스 단위를 조정하여 최적화 할 수 있습니다.

더 나은 기회

  • 부피와 같은 다른 지표를 결합, 이동 평균 신호를 확인
  • 다른 시장에 대한 볼링거 매개 변수를 최적화
  • 과도한 민감성을 피하기 위해 브레이크오웃 근처에서 스톱-로스 거리를 조정합니다.
  • 트렌드가 발달한 후에만 거래합니다. 거북이 거래 규칙처럼요.
  • 기계 학습 알고리즘을 통해 매개 변수를 자동 최적화

결론

이것은 볼링거 밴드를 기반으로 한 전략을 따르는 비교적 간단한 트렌드입니다. 가격이 깨지면 빠르게 포지션을 취하고 위험을 제어하기 위해 스톱 로스를 사용할 수 있습니다. 그러나 가격에만 의존하면 잘못된 판단이 발생할 수 있으며 민감한 스톱 로스는 거래 빈도를 증가시킬 수 있습니다. 매개 변수 조정, 지표 조합, 스톱 조정 등을 통해 더 향상시킬 수 있습니다. 전반적으로 간단하고 신뢰할 수있는 양 거래 프레임워크를 제공합니다.


/*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()

더 많은