모멘텀 볼링거 밴드 브레이크아웃 전략 (Momentum Bollinger Bands Breakout Strategy) 은 볼링거 밴드 지표와 이동 평균 지표를 결합하여 특정 모멘텀 조건에서 브레이크아웃 거래를 수행하는 양적 거래 전략이다. 이 전략은 주로 볼링거 밴드의 상부 및 하부 레일을 사용하여 가격을 정의하고 이동 평균과 추가 가격 필터링을 추가하여 특정 모멘텀 조건에서 구매 및 판매 신호를 발행하여 볼링거 밴드의 상부 및 하부 레일에 브레이크아웃 거래를 수행합니다.
이 전략은 주로 볼링거 밴드 지표와 MA 이동 평균 지표에 기반합니다. 볼링거 밴드 및 이동 평균은 트렌드를 따르는 지표에 속합니다. 볼링거 밴드는 가격의 높은 및 낮은 변동 범위를 묘사하기 위해 표준 편차 개념을 사용합니다. 이동 평균은 가격 데이터를 부드럽게하고 가격 트렌드의 방향을 판단합니다.
전략의 핵심 논리는 다음과 같습니다.
볼링거 밴드 매개 변수를 초기화하고 중간 레일, 상부 레일 및 하부 레일을 계산합니다.
이동 평균 매개 변수를 초기화
구매 신호: 가격이 아래에서 위로 볼링거 밴드의 하부 레일을 뚫고 이동 평균이 하부 레일 아래에있을 때, 긴 거리를 가십시오.
판매 신호: 가격이 위에서 아래로 볼링거 밴드의 상단 레일을 뚫고 이동 평균이 상단 레일 위에 있을 때, 단위로 가십시오.
출구 신호: 가격이 볼링거 밴드 범위에 다시 들어가면 포지션을 닫습니다.
이 전략은 볼링거 밴드와 이동 평균 지표의 사용을 결합하여 특정 동력 조건 하에서 거래 신호를 생성합니다. 이는 전형적인 트렌드를 따르는 전략입니다.
가격 변동 범위를 명확하게 판단하기 위해 볼링거 밴드를 사용하는 것과 가격 트렌드 방향을 결정하기 위해 이동 평균을 사용하는 두 가지 지표 필터링의 조합으로 형성된 거래 신호는 비교적 높은 신뢰성을 가지고 있습니다.
가격이 볼링거 밴드 경계를 뚫는 것 외에도 이동 평균이 뚫어야 합니다. 이는 잘못된 브레이크를 피하기 위해 충분한 추진력 지원을 보장합니다.
전략 매개 변수는 합리적이고 유연하게 설정되어 있으며, 이는 볼링거 밴드 및 이동 평균 주기의 매개 변수를 다른 품종과 시장 조건에 적응하도록 조정할 수 있습니다.
전략 아이디어는 명확하고 이해하기 쉽고 실행하고 확인하기 쉽습니다.
볼링거 밴드 변동성 지표 자체는 빠르게 변화하는 트렌드에서 잠재적인 지연을 가지고 있으며 이는 유효하지 않은 거래 신호를 생성 할 수 있습니다.
필터링 지표로 사용되면 매개 변수 설정은 전략의 빈도에 직접 영향을 미칩니다. 부적절한 설정은 거래 기회를 놓칠 수 있습니다.
볼링거 밴드 지표와 이동 평균 지표 모두에 의존하여 효과적인 신호를 형성하면 한 개가 실패하면 전체 전략이 영향을 받게됩니다.
브레이크아웃 전략은 더 공격적입니다. 볼링거 밴드 경계를 테스트하기 위해 가격이 인하되면, 그들은 함정에 빠질 수 있습니다.
다양한 주기와 변동성을 가진 품종에 적응하기 위해 볼링거 밴드 매개 변수를 최적화하십시오. 예를 들어 볼링거 밴드의 기간 및 표준편차 곱셈 매개 변수를 수정하십시오.
주파수와 필터링 효과를 균형을 맞추기 위해 이동 평균 사이클 매개 변수를 최적화합니다.
거래당 최대 손실을 통제하기 위해 스톱 로스 전략을 강화합니다.
RSI와 MACD와 같은 다른 지표와 결합하여 복합 지표를 형성하고 전략에 대한 거래 신호를 풍부하게합니다.
기계 학습 모델을 결합하여 가격 트렌드 방향과 브레이크업 성공률을 판단하는 데 도움이 됩니다.
이 전략은 불링거 밴드 지표를 이동 평균 지표와 통합하여 특정 가격 브레이크오웃 모멘텀을 보장 한 후 입출 신호를 생성합니다. 전략 아이디어는 명확하고 구현하기가 쉽고 트렌딩 시장을 효과적으로 추적 할 수 있습니다. 그러나 동시에 특정 인회 위험도 있습니다. 매개 변수 설정에 최적화되고 시장 변화에 적응하기 위해 손실을 멈추어야합니다.
/*backtest start: 2022-12-28 00:00:00 end: 2024-01-03 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // strategy("Advanced Bollinger Bands Strategy", overlay=true) //BB Values wall1= input(defval=true,title="===BB Values===",type=input.bool) source = input(defval=close,title="BB Source",type=input.source) length = input(20,title="BB Length", minval=1) mult = input(2.0,title="BB Multiplier",minval=0.001, maxval=50) basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev offset = input(0, " BB Offset", type = input.integer, minval = -500, maxval = 500) plot(basis, "Basis", color=#872323, offset = offset) p1 = plot(upper, "Upper", color=color.teal, offset = offset) p2 = plot(lower, "Lower", color=color.teal, offset = offset) fill(p1, p2, title = "Background", color=#198787, transp=95) //Moving Average Values wall2= input(defval=true,title="===MA Values===",type=input.bool) nfl= input(defval=14,title="Moving Average Period",type=input.integer,minval=1,maxval=100) source1= input(defval=close,title="Moving Average Source",type=input.source) noisefilter= sma(source1,nfl) plot(noisefilter,style=plot.style_line,linewidth=2,color=color.yellow,title=" Moving Average Filter") bgcolor(noisefilter<lower?color.green:noisefilter>upper?color.red:na,title="Moving Average Filter") //Strategy Conditions wall3= input(defval=true,title="===Strategy Conditions===",type=input.bool) bl= input(defval=false,title="Exit at Basis Line?",type=input.bool) nflb= input(defval=false,title="Use Moving Average Filter?",type=input.bool) //Strategy Condition buyEntry = crossover(source, lower) sellEntry = crossunder(source, upper) if (nflb?(crossover(source,lower) and noisefilter<lower): crossover(source, lower)) strategy.entry("BBandLE", strategy.long, oca_name="BollingerBands", comment="BBandLE") else strategy.cancel(id="BBandLE") if (nflb?(crossunder(source,lower) and noisefilter>upper): crossunder(source, lower)) strategy.entry("BBandSE", strategy.short, oca_name="BollingerBands", comment="BBandSE") else strategy.cancel(id="BBandSE") strategy.close_all(when=bl?crossover(source,basis) or crossunder(source,basis):crossover(source,upper) or crossunder(source,lower))