볼링거 밴드 기반의 지능형 추적 거래 전략

저자:차오장, 날짜: 2024-01-17 14:05:36
태그:

img

전반적인 설명

이 전략은 볼링거 밴드 지표에 기반하여 가격이 상단 범위를 넘어서면 짧게, 가격이 하단 범위를 넘어서면 길게, 지능적인 추적 거래를 실현하도록 설계되었습니다.

전략 논리

이 전략은 볼링거 밴드의 중간선, 상단 및 하단 밴드를 기본 지표로 사용합니다. 중간선은 n 일 동안의 폐쇄 가격의 이동 평균입니다. 상단선은 두 표준 편차로 위쪽으로 이동한 중간선이며 하단대는 두 표준 편차로 아래로 이동합니다. 가격이 하단 밴드를 위쪽으로 넘으면 길게 이동합니다. 가격이 상단 밴드를 아래로 넘으면 짧게 이동합니다. 이것은 시장 변동성에 따라 가격의 지능적인 추적을 허용합니다.

특히 전략은 주로 두 가지 지표를 평가합니다.

  1. ta.crossover ((source, lower): 닫기 가격은 하위 범위를 넘어서, 길게 이동합니다

  2. ta.crossunder ((source, upper): 닫기 가격 폭이 상위 범위를 넘고, 단축

출구 조건이 트리거되면, strategy.cancel() 함수를 사용하여 기존 포지션을 평평하게 합니다.

이점 분석

이 전략의 주요 장점은 다음과 같습니다.

  1. 볼링거 밴드 지표에 기반하여 시장 변동성을 파악하고 가격 추세를 효과적으로 추적 할 수 있습니다.
  2. 명확하고 간단한 논리, 이해하기 쉽고 실행하기 쉬운
  3. 기간 길이와 표준편차 곱하기 등 사용자 정의 가능한 매개 변수, 매우 적응력
  4. 전략 성능을 최적화하기 위해 설정 가능한 스톱 손실, 브레이크 이븐 또는 트레일링 스톱 메커니즘

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 거짓 신호에 취약한 볼링거 밴드 브레이크
  2. 성능은 매개 변수 최적화에 의존하고, 부적절한 매개 변수는 수익성에 영향을 줄 수 있습니다.
  3. 스톱 로스를 추적하는 것이 어렵고 단일 거래 손실을 효과적으로 제어 할 수 없습니다.

대응 솔루션:

  1. 가짜 브레이크를 피하기 위해 다른 지표와 필터를 추가합니다.
  2. 최적의 매개 변수 세트를 찾기 위해 철저히 매개 변수를 테스트
  3. 이동 또는 트렌드를 따르는 스톱 로스 메커니즘을 추가합니다.

최적화 방향

이 전략은 다음과 같이 더 최적화 될 수 있습니다.

  1. 트렌드 방향을 결정하기 위해 다른 지표를 추가하여 볼링거 전략에 적합하지 않은 시장 조건을 피합니다.
  2. 최적의 기간을 찾기 위해 다른 기간 길이를 테스트
  3. 단일 거래 손실을 효과적으로 통제하기 위해 이동 또는 후속 중지 메커니즘을 통합하는 것

결론

이 전략은 볼링거 밴드 지표에 기초하여 설계되었으며, 상위 및 하위 밴드의 가격 브레이크오웃을 사용하여 가격을 자동으로 추적합니다. 논리는 간단하고 시장 변동성에 민감합니다. 파라미터 튜닝 및 스톱 로스 메커니즘을 통해 추가 최적화가 가능합니다. 전반적으로이 전략은 더 높은 변동성을 가진 지수 및 상품에 잘 작동합니다. 거래자는 자신의 거래 선호도에 따라 백테스트하고 최적화하여 아스티카 거래 전략을 도출 할 수 있습니다.


/*backtest
start: 2023-12-17 00:00:00
end: 2024-01-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands Strategy with alerts (incl. pending orders) via TradingConnector to Forex", overlay=true)
source = close
length = input.int(20, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)
basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upper = basis + dev
lower = basis - dev
buyEntry = ta.crossover(source, lower)
sellEntry = ta.crossunder(source, upper)
if (ta.crossover(source, lower))
	strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="BBandLE")
    alert(message='long price='+str.tostring(lower), freq=alert.freq_once_per_bar_close)
else
	strategy.cancel(id="BBandLE")
    alert(message='cancel long', freq=alert.freq_once_per_bar_close)
if (ta.crossunder(source, upper))
	strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="BBandSE")
    alert(message='short price='+str.tostring(upper), freq=alert.freq_once_per_bar_close)
else
	strategy.cancel(id="BBandSE")
    alert(message='cancel short', freq=alert.freq_once_per_bar_close)
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)

//Lines of code added to the original built-in script: 14, 17, 20 and 23 only.
//They trigger alerts ready to be executed on real markets through TradingConnector
//available for Forex, indices, crypto, stocks - anything your broker offers for trading via MetaTrader4/5


더 많은