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

동적 취득 볼링거 밴드 전략

저자:차오장, 날짜: 2024-05-24 17:54:47
태그:SMA

img

전반적인 설명

이 전략은 볼링거 밴드 지표를 사용하여 가격이 상단대에 닿을 때 단위로 이동하고 하단대에 닿을 때 길게 이동합니다. 그것은 동적 인 수익을 취하고 1% 이득에 도달하면 포지션을 닫습니다. 핵심 아이디어는 가격이 항상 볼링거 밴드 내에서 변동하고 평균 역행 특성을 가지고 있기 때문에 가격이 가격 차이를 포착하기 위해 이동 평균에서 너무 멀리 벗어날 때 역 포지션을 취할 수 있습니다.

전략 원칙

  1. 이동평균과 표준편차를 계산합니다. 간단한 이동평균 (SMA) 을 사용하여 종료 가격 (기본) 의 이동평균을 계산하고, 종료 가격의 이동평균에 대한 표준편차 (dev) 를 계산합니다.
  2. 상위와 하위 대역을 계산하십시오: 상위 대역은 기본 + dev * 곱셈자, 하위 대역은 기본 - dev * 곱셈자, 여기서 곱셈자는 변동성 진폭의 곱셈자입니다.
  3. 거래 신호를 생성합니다. 닫기 가격이 하위 대역을 넘어서 현재 클로즈가 오픈보다 작을 때 긴 신호가 생성됩니다. 닫기 가격이 상위 대역을 넘어서 현재 클로즈가 오픈보다 크면 짧은 신호가 생성됩니다.
  4. 동적 취득: 포지션을 열고 나서, 입시 가격과 취득 비율을 기반으로 취득 가격을 계산합니다. 가격이 취득 수준에 도달하면 포지션을 닫습니다.
  5. 시각화: 볼링거 밴드, 이동 평균, 거래 신호를 차트에 그려보세요.

전략적 장점

  1. 단순하고 효과적: 전략 논리는 명확하고 하나의 기술 지표를 사용하므로 이해하기 쉽고 구현하기 쉽습니다.
  2. 폭넓은 적용 가능성: 볼링거 밴드는 보편적으로 적용 가능하며 다양한 거래 도구와 시장에 사용할 수 있습니다.
  3. 동적 영업이익: 고정 영업이익과 비교하면 동적 영업이익은 위험을 조절하면서 승리하는 거래의 수익을 극대화 할 수 있습니다.
  4. 트렌드를 효과적으로 포착 한다. 트렌드 시장 에서, 가격이 상위 또는 하위 대역 에 닿은 후, 보통 초기 방향 으로 일정 시간 동안 계속 움직인다. 이 전략 은 그러한 트렌드 기회 를 효과적으로 포착 할 수 있다.

전략 위험

  1. 범위 시장에서 낮은 성과: 시장이 큰 변동에 있고 가격이 반복적으로 볼링거 밴드를 넘어서면 전략은 과도한 거래와 거래 비용을 증가시키는 빈번한 거래 신호를 생성 할 수 있습니다.
  2. 트렌딩 시장에서 깊은 후퇴: 추세가 오랫동안 지속되고 가격이 이동 평균에서 장기간 벗어나면 전략은 추세에 반대하여 깊은 후퇴로 이어질 수 있습니다.
  3. 매개 변수 선택의 어려움: 볼링거 밴드의 매개 변수 (길이와 곱셈자 등) 는 전략 성과에 상당한 영향을 미치지만 보편적으로 최적의 매개 변수는 없습니다.

전략 최적화 방향

  1. 트렌드 분석을 포함: 트렌드 식별 지표 (이러한 이동 평균) 를 전략에 추가합니다. 트렌드 시장에서 거래는 중단되거나 트렌드를 따라갈 수 있습니다.
  2. 수익을 취하고 손실을 멈추는 최적화: ATR과 같은 변동성 지표에 따라 수익을 취하고 손실을 멈추는 것을 동적으로 조정하여 더 나은 위험/이익 비율을 달성합니다.
  3. 다중 요인 조합: 신호 정확성을 향상시키고 잘못된 신호를 줄이기 위해 볼링거 밴드를 다른 기술 지표 (RSI, MACD 등) 와 결합하는 것을 고려하십시오.
  4. 기본 필터링: 거래 신호를 생성 한 후 전략의 견고성을 높이기 위해 2차 확인을 위해 기본 데이터 (금융 보고서, 업계 데이터 등) 를 사용합니다.

요약

이 전략은 볼링거 밴드를 사용하여 간단하고 효과적인 거래 시스템을 구축하고, 상위 및 하위 밴드를 접촉하는 가격을 신호로 받아, 위험을 제어하기 위해 동적 인 수익을 채택합니다. 전략은 트렌딩 시장에서 잘 수행하지만 범위 시장에서 빈번한 거래 문제에 직면 할 수 있습니다. 추세 분석, 수익 및 스톱 손실 최적화, 요인 조합 및 더 강력한 수익을 달성하기 위해 근본 필터링 측면에서 추가 개선이 가능합니다.


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

//@version=5
strategy("Future Price Prediction", overlay=true)

// Ayarlar
length = input.int(14, "Length")
mult = input.float(2.0, "Multiplier")
showBands = input.bool(true, "Show Bands")
takeProfitPercentage = 1.0

// Ortalama ve Standart Sapma Hesaplamaları
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)

// Üst ve Alt Bantlar
upper = basis + dev
lower = basis - dev

// Grafikte Gösterim
plot(basis, color=color.blue, linewidth=2, title="Basis")
plot(showBands ? upper : na, color=color.red, linewidth=1, title="Upper Band")
plot(showBands ? lower : na, color=color.green, linewidth=1, title="Lower Band")

// Al-Sat Sinyalleri
longCondition = ta.crossover(close[1], lower[1]) and close[1] < open[1]
shortCondition = ta.crossunder(close[1], upper[1]) and close[1] > open[1]

// Kar al seviyeleri
float longTakeProfit = na
float shortTakeProfit = na

if longCondition
    longTakeProfit := close * (1 + takeProfitPercentage / 100)
if shortCondition
    shortTakeProfit := close * (1 - takeProfitPercentage / 100)

// Strateji Giriş ve Çıkış
if longCondition
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit", from_entry="Buy", limit=longTakeProfit)

if shortCondition
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit", from_entry="Sell", limit=shortTakeProfit)

// Al-Sat Sinyalleri Grafikte Gösterim
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Bilgi Tablosu
var table data = table.new(position.bottom_right, 2, 2, frame_color=color.black, frame_width=1)
if barstate.islast
    table.cell(data, 0, 0, "Current Price", text_color=color.white)
    table.cell(data, 1, 0, str.tostring(close))
    table.cell(data, 0, 1, "Predicted Basis", text_color=color.white)
    table.cell(data, 1, 1, str.tostring(basis))


관련

더 많은