리소스 로딩... 로딩...

볼링거 밴드 ATR 트렌드 전략

저자:차오장, 날짜: 2024-05-15 10:50:14
태그:BBSMAATR

img

전반적인 설명

이 전략은 볼링거 밴드 (Bollinger Band) 와 ATR 지표 (ATR) 를 기반으로 합니다. 볼링거 밴드를 사용하여 가격 변동을 포착하고, 진입 신호로 밴드 위 또는 아래의 가격 브레이크오프를 사용하고, 트레일링 스톱 로스로 ATR을 사용합니다. 이 전략은 가격이 단순한 이동 평균을 넘을 때 포지션을 닫습니다. 트렌딩 시장을 포착하고, 트렌드 방향으로 포지션을 입력하고, 트렌드가 역전되면 즉시 포지션을 닫는 것을 목표로합니다.

전략 원칙

  1. 볼링거 밴드를 계산합니다. 닫기 가격을 사용하여 중간 밴드로서 간단한 이동 평균 (SMA) 을 계산하고 변동성 (표준편차) 를 기반으로 상위 및 하위 밴드를 계산합니다.
  2. ATR를 계산합니다. 실제 범위의 이동 평균 (TR) 을 사용하여 ATR을 트레일링 스톱 손실의 기초로 계산합니다.
  3. 거래 신호를 생성: 가격이 아래 볼링거 밴드 아래로 넘으면 긴 신호를 생성; 상부 볼링거 밴드 위에 넘으면 짧은 신호를 생성. 가격이 ATR 트레일링 스톱 위에 넘으면 긴 신호를 생성; ATR 트레일링 스톱 아래로 넘으면 짧은 신호를 생성.
  4. 포지션 닫기: 긴 포지션의 경우 가격이 단순한 이동 평균을 넘으면 긴 포지션을 닫습니다. 짧은 포지션의 경우 가격이 간단한 이동 평균을 넘으면 짧은 포지션을 닫습니다.

전략적 장점

  1. 트렌드 추적: 다양한 시장 환경에 적응하여 볼링거 밴드 및 ATR 트레일링 스톱을 사용하여 트렌드 시장을 캡처합니다.
  2. 적시 스톱 로스: ATR을 트래일링 스톱 로스로 사용하며, 리스크를 제어하기 위해 시장 변동성에 따라 스톱 로스 포지션을 동적으로 조정합니다.
  3. 간단하고 사용하기 쉬운: 전략 논리는 몇 가지 매개 변수와 함께 이해하기 쉽고 적용하기 쉽다.

전략 위험

  1. 매개 변수 민감성: 전략의 성능은 볼린거 밴드 및 ATR의 매개 변수 선택에 의해 영향을 받으며, 다른 시장과 도구에 대한 최적화를 요구합니다.
  2. 불안한 시장: 불안한 시장 조건에서 빈번한 거래 신호는 과도한 거래 빈도와 비용으로 이어질 수 있습니다.
  3. 트렌드 역전: 트렌드가 역전되면 전략은 상당한 마감을 경험할 수 있습니다.

전략 최적화 방향

  1. 매개 변수 최적화: 다양한 시장 및 도구에 최적의 조합을 찾기 위해 볼링거 밴드 및 ATR의 매개 변수를 최적화합니다.
  2. 필터: 다른 기술적 지표 또는 가격 행동 패턴을 필터로 추가하여 잘못된 판단을 줄이고 신호 품질을 향상시킵니다.
  3. 포지션 관리: 시장 변동성 또는 계정 위험에 따라 포지션을 동적으로 조정하여 자본 활용 효율성과 위험 조정 수익을 향상시킵니다.

요약

볼링거 밴드 ATR 트렌드 추적 전략은 볼링거 밴드 및 ATR 지표를 사용하여 트렌드 시장을 캡처합니다. 트렌드 추적, 신속한 스톱 로스 및 단순성의 장점이 있습니다. 그러나 매개 변수 민감성, 불규칙한 시장 및 트렌드 역전과 같은 위험에 직면합니다. 전략의 성능은 매개 변수 최적화, 필터 추가 및 위치 관리로 더 이상 최적화 될 수 있습니다.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands and ATR Strategy", overlay=true)

// Veri Çekme
symbol = "AAPL"
timeframe = "D"
src = close

// Bollinger Bantları Hesaplama
len = 20
mult = 2
sum1 = 0.0, sum2 = 0.0
for i = 0 to len - 1
    sum1 += src[i]
basis = sum1 / len
for i = 0 to len - 1
    diff = src[i] - basis
    sum2 += diff * diff
dev = math.sqrt(sum2 / len)
upper_band = basis + dev * mult
lower_band = basis - dev * mult

// ATR Hesaplama
atr_period = input(10, title="ATR Period")
atr_value = 0.0
for i = 0 to atr_period - 1
    atr_value += math.abs(src[i] - src[i + 1])
atr_value /= atr_period
loss = input(1, title="Key Value (Sensitivity)")
atr_trailing_stop = src[1]
if src > atr_trailing_stop[1]
    atr_trailing_stop := math.max(atr_trailing_stop[1], src - loss * atr_value)
else if src < atr_trailing_stop[1]
    atr_trailing_stop := math.min(atr_trailing_stop[1], src + loss * atr_value)
else
    atr_trailing_stop := src - loss * atr_value

// Sinyal Üretme
long_condition  = src < lower_band and src[1] >= lower_band[1]
short_condition = src > upper_band and src[1] <= upper_band[1]
close_long  = src > basis
close_short = src < basis
buy_signal = src > atr_trailing_stop[1] and src[1] <= atr_trailing_stop[1]
sell_signal = src < atr_trailing_stop[1] and src[1] >= atr_trailing_stop[1]

if (long_condition)
    strategy.entry("Long", strategy.long, comment="Long Signal")
if (short_condition)
    strategy.entry("Short", strategy.short, comment="Short Signal")
if (close_long)
    strategy.close("Long", comment="Close Long")
if (close_short)
    strategy.close("Short", comment="Close Short")
if (buy_signal)
    strategy.entry("Long", strategy.long, comment="Buy Signal")
if (sell_signal)
    strategy.entry("Short", strategy.short, comment="Sell Signal")

// Çizim
plot(upper_band, color=#0000FF, linewidth=2, title="Upper Band")
plot(lower_band, color=#0000FF, linewidth=2, title="Lower Band")
plot(basis, color=#808080, linewidth=2, title="SMA")
plot(atr_trailing_stop, color=#FFA500, linewidth=2, title="ATR Trailing Stop")
plot(src, color=#FFA500, linewidth=2, title="Price")

// Sinyal İşaretleri
plotshape(long_condition, style=shape.arrowup, color=#00FF00, location=location.belowbar, size=size.small, title="Long Signal")
plotshape(short_condition, style=shape.arrowdown, color=#FF0000, location=location.abovebar, size=size.small, title="Short Signal")
plotshape(buy_signal, style=shape.diamond, color=#00FF00, location=location.belowbar, size=size.small, title="Buy Signal")
plotshape(sell_signal, style=shape.diamond, color=#FF0000, location=location.abovebar, size=size.small, title="Sell Signal")

관련

더 많은