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

평균 반전 4H 양적 거래 전략과 함께 볼링거 브레이크

저자:차오장, 날짜: 2024-12-12 11:24:28
태그:BBBANDSMASDTPSL

img

전반적인 설명

이 전략은 볼링거 밴드 (Bollinger Bands) 를 기반으로 한 4시간 시간 프레임 양적 거래 시스템으로, 트렌드 브레이크오웃과 평균 리버션 거래 개념을 결합합니다. 이 전략은 수익을 취하기 위해 가격 평균 리버션을 사용하여 위험 관리를 철저하게 고려하면서 수익을 보장하는 3배 레버리지를 사용합니다.

전략 원칙

핵심 논리는 다음과 같은 핵심 요소에 기반합니다.

  1. 중간에 20주기 이동 평균을 사용하며 변동 범위의 2개의 표준편차가 있습니다.
  2. 입구 신호: 촛불 몸 (열리고 닫는 평균) 이 상단 너머로 갈 때 길고, 하단 너머로 갈 때 짧습니다.
  3. 출구 신호: 두 개의 연속 촛불이 상단 이하의 열고 닫는 가격을 갖는 경우 긴 포지션을 닫습니다. 짧은 포지션을 위한 역 논리
  4. 리스크 제어: 거래 당 통제 손실을 보장하기 위해 현재 촛불 최고/하위점에 스톱 로스를 설정합니다.

전략적 장점

  1. 명확한 거래 논리: 다양한 시장 조건에서 좋은 성과를 위해 트렌드 및 리버션 거래 접근 방식을 결합합니다.
  2. 종합적인 리스크 관리: 효율적인 유출 통제를 위해 촛불 변동성에 기반한 동적 스톱 로스를 구현합니다.
  3. 가짜 신호 필터링: 가짜 브레이크 손실을 줄이기 위해 닫기 가격보다는 촛불 몸의 위치를 사용하여 브레이크를 확인합니다.
  4. 건전한 자금 관리: 계좌 자금, 균형 수익 및 위험에 기초하여 지점 크기를 동적으로 조정합니다.

전략 위험

  1. 시장을 가로질러 발생하는 위험: 시장에서 빈번한 잘못된 파업 신호를 유발할 수 있으며, 연속적으로 중단될 수 있습니다.
  2. 레버리지 리스크: 극심한 변동성 (extreme volatility) 에서 3배의 레버리지 (leverage) 가 상당한 손실을 초래할 수 있습니다.
  3. 스톱 로스 설정 위험: 스톱을 위해 촛불 최고/하위 지점을 사용하는 것은 너무 느슨해 거래당 손실을 증가시킬 수 있습니다.
  4. 시간적 의존성: 특정 시장 조건에서 4시간 시간적 기간은 너무 느리게 반응할 수 있으며 기회를 놓칠 수 있습니다.

전략 최적화 방향

  1. 트렌드 필터를 구현: 주요 트렌드 방향으로 거래에 장기 트렌드 지표를 추가합니다.
  2. 스톱 로스 접근 방식을 최적화: 동적 스톱 로스 거리를 위해 ATR 또는 볼링거 반대의 폭을 사용하는 것을 고려하십시오.
  3. 포지션 관리 개선: 변동성 또는 트렌드 강도에 따라 레버리지를 동적으로 조정합니다.
  4. 시장 상황 분석을 추가합니다. 선택적 진입을 위해 시장 상태를 식별하기 위해 부피 또는 변동성 지표를 포함합니다.

요약

이 전략은 볼링거 밴드 (Bollinger Bands) 의 트렌드 추적 및 평균 역전 특성을 결합하여 엄격한 입출장 조건 및 위험 관리 조치를 통해 트렌드 및 범위 시장에서 안정적인 수익을 달성합니다. 핵심 강점은 명확한 거래 논리와 포괄적인 위험 관리 시스템입니다. 그러나 전략 안정성과 수익성을 더욱 향상시키기 위해 활용 및 시장 상태 판단 최적화에주의를 기울여야합니다.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger 4H Follow", overlay=true, initial_capital=300, commission_type=strategy.commission.percent, commission_value=0.04)
// StartYear = input(2022,"Backtest Start Year") 
// StartMonth = input(1,"Backtest Start Month") 
// StartDay = input(1,"Backtest Start Day")

// testStart = timestamp(StartYear,StartMonth,StartDay,0,0)

// EndYear = input(2023,"Backtest End Year")
// EndMonth = input(12,"Backtest End Month")
// EndDay = input(31,"Backtest End Day")

// testEnd = timestamp(EndYear,EndMonth,EndDay,0,0)

lev = 3

// Input parameters
length = input.int(20, title="Bollinger Band Length")
mult = input.float(2.0, title="Bollinger Band Multiplier")

// Bollinger Bands calculation
basis = ta.sma(close, length)
upperBand = basis + mult * ta.stdev(close, length)
lowerBand = basis - mult * ta.stdev(close, length)

// Conditions for Open Long
openLongCondition = strategy.position_size == 0 and close > open and (close + open) / 2 > upperBand

// Conditions for Open Short
openShortCondition = strategy.position_size == 0 and close < open and (close + open) / 2 < lowerBand

// Conditions for Close Long
closeLongCondition = strategy.position_size > 0 and strategy.position_size > 0 and (close < upperBand and open < upperBand and close < open)

// Conditions for Close Short
closeShortCondition = strategy.position_size < 0 and strategy.position_size < 0 and (close > lowerBand and open > lowerBand and close > open)


// Long entry
if openLongCondition
    strategy.entry("Long", strategy.long, qty=strategy.equity * lev / close)
    strategy.exit("Long SL", from_entry="Long", stop=low)  // Set Stop-Loss

// Short entry
if openShortCondition
    strategy.entry("Short", strategy.short, qty=strategy.equity * lev / close)
    strategy.exit("Short SL", from_entry="Short", stop=high)  // Set Stop-Loss

// Long exit
if closeLongCondition
    strategy.close("Long", comment = "TP")

// Short exit
if closeShortCondition
    strategy.close("Short", comment = "TP")

// Plot Bollinger Bands
plot(upperBand, color=color.yellow, title="Upper Band")
plot(lowerBand, color=color.yellow, title="Lower Band")

관련

더 많은