볼린저 밴드 브레이크아웃 트레이딩 전략


생성 날짜: 2024-02-21 11:35:14 마지막으로 수정됨: 2024-02-21 11:35:14
복사: 0 클릭수: 586
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

볼린저 밴드 브레이크아웃 트레이딩 전략

개요

이 전략은 부린 띠 지표 설계에 기반하여, 가격이 부린 띠를 뚫고 궤도에 올랐을 때 더 많이 하고, 가격이 부린 띠를 뚫고 궤도에 내려갈 때 공백하고, 트렌드 추적 전략에 속한다.

전략 원칙

  1. 브린 띠의 중간, 상단, 하단 레일을 계산한다
  2. 종결가격이 상승할 때 더 많이 입점하세요.
  3. 마감가격이 하락하면 상장
  4. 평위 조건: 중궤도를 돌파할 때 더 많은 카드를 평정하고, 중궤도를 돌파할 때 빈 카드를 평정한다

이 전략은 부린 띠를 통해 시장의 변동 범위와 트렌드 방향을 판단하고, 가격이 부린 띠를 뚫고 하향 궤도에 올랐을 때, 트렌드 반전의 신호로 간주하고, 이 신호에 따라 입장은 더 많은 공백을 한다. 중도 궤도 근처에서 손실 위치로, 중도 궤도를 뚫고 진출한다.

우위 분석

  1. 부린 띠 지표를 사용하여 시장 추세와 지지 저항 지점을 판단
  2. 브린을 뚫고 하강할 확률이 높다.
  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)