볼링거 밴드 브레이크아웃 거래 전략

저자:차오장, 날짜: 2024-02-21 11:35:14
태그:

img

전반적인 설명

이 전략은 볼링거 밴드 지표에 기초하여 설계되었습니다. 가격이 상단역을 통과할 때 길게 가고, 가격이 하단역을 통과할 때 짧게됩니다. 트렌드를 따르는 전략에 속합니다.

전략 논리

  1. 볼링거 밴드의 중간, 상부 및 하부 밴드를 계산합니다.
  2. 닫기 가격이 상단 범위를 넘으면, 긴
  3. 닫기 가격이 하위 범위를 통과하면, 짧은 이동
  4. 출구 규칙: 가격이 중간 범위를 넘을 때 긴 포지션을 닫고, 가격이 중간 범위를 넘을 때 짧은 포지션을 닫습니다.

이 전략은 시장의 변동 범위와 트렌드 방향을 결정하기 위해 볼링거 밴드를 사용합니다. 가격이 볼링거 밴드의 상부 또는 하부 밴드를 통과하면 진입을위한 트렌드 역전 신호로 간주됩니다. 중간 밴드의 주변 지역은 스톱 로스 위치로 사용됩니다. 가격이 중간 밴드를 통과 할 때 출구 위치.

이점 분석

  1. 시장 트렌드 및 지원/저항 수준을 결정하기 위해 볼린거 밴드 지표를 사용
  2. 볼링거 밴드 (Bollinger Bands) 의 유출 확률이 높습니다.
  3. 명확한 입국 및 출입 규칙

위험 분석

  1. 볼링거 밴드로부터 나오는 잘못된 파업 신호의 위험, 이는 단기 가격 변동일 수 있습니다.
  2. 큰 가격 변동이 있을 때 더 큰 스톱 로스

해결책:

  1. 추세를 확인하기 위해 다른 지표와 결합
  2. 볼링거 밴드 범위를 확장하기 위해 매개 변수를 조정합니다.

최적화 방향

  1. 불필요한 리버스 트레이딩을 피하기 위해 트렌드 지표와 결합
  2. 매개 변수 크기를 최적화하기 위해 볼링거 밴드 매개 변수를 동적으로 조정합니다.

요약

이 전략은 가격 트렌드 및 지원 / 저항 수준을 결정하기 위해 볼링거 밴드 지표를 사용합니다. 볼링거 밴드 브레이크아웃 포인트에 입력하고 중간 밴드에서 스톱 로스를 설정합니다. 전략 논리는 간단하고 명확하며 구현하기가 쉽습니다. 매개 변수를 조정하거나 다른 지표와 결합하여 최적화 할 수 있으며 트렌딩 시장에서 잘 작동합니다.


/*backtest
start: 2024-01-21 00:00:00
end: 2024-02-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("FFFDBTC", overlay=true,initial_capital = 100,commission_type =strategy.commission.percent,commission_value= 0.15,default_qty_value = 100,default_qty_type = strategy.percent_of_equity)
// === INPUT BACKTEST RANGE ===
FromMonth = input.int(defval=1, title="From Month", minval=1, maxval=12)
FromDay = input.int(defval=1, title="From Day", minval=1, maxval=31)
FromYear = input.int(defval=1972, title="From Year", minval=1972)
ToMonth = input.int(defval=1, title="To Month", minval=1, maxval=12)
ToDay = input.int(defval=1, title="To Day", minval=1, maxval=31)
ToYear = input.int(defval=9999, title="To Year", minval=2010)

// === FUNCTION EXAMPLE === 
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)  // backtest finish window
window() => true
// Definindo tamanho da posição
position_size = strategy.equity
// Definir parâmetros das Bandas de Bollinger
length = input.int(51, "Comprimento")
mult = input.float(1.1, "Multiplicador")

// Calcular as Bandas de Bollinger
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev
// Definir condições de entrada e saída
entrada_na_venda = low < lower
saida_da_venda = high > lower and strategy.position_size < 0
entrada_na_compra = high > upper
saida_da_compra = low < upper and strategy.position_size > 0
shortCondition = close[1] < lower[1] and close > lower and close < basis
longCondition = close[1] > upper[1] and close < upper and close > basis

// Entrar na posição longa se a condição longCondition for verdadeira
if ((entrada_na_compra) and window() )
    strategy.entry("Buy", strategy.long)
//saida da compra
if (saida_da_compra)
    strategy.close("Buy")
//entrada na venda
if ((entrada_na_venda) and window() )
    strategy.entry("Sell", strategy.short)
//saida da venda
if (saida_da_venda)
    strategy.close("Sell")
if ((longCondition) and window())
    strategy.entry("Long", strategy.long)

// Entrar na posição curta se a condição shortCondition for verdadeira
if ((shortCondition) and window())
    strategy.entry("Short", strategy.short)

// Definir a saída da posição

strategy.exit("Exit_Long", "Long", stop=ta.sma(close, length), when = close >= basis)
strategy.exit("Exit_Short", "Short", stop=ta.sma(close, length), when = close <= basis)

// Desenhar as Bandas de Bollinger no gráfico
plot(basis, "Média", color=#2962FF, linewidth=2)
plot(upper, "Upper", color=#BEBEBE, linewidth=2)
plot(lower, "Lower", color=#BEBEBE, linewidth=2)

더 많은