ATR 동적 위치 및 트레일링 스톱 로스 시스템과 결합된 이중 확인 범위 필터 전략

Range Filter ATR SMA Trailing Stop POSITION SIZING
생성 날짜: 2025-05-26 14:22:36 마지막으로 수정됨: 2025-05-26 14:22:36
복사: 0 클릭수: 311
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

ATR 동적 위치 및 트레일링 스톱 로스 시스템과 결합된 이중 확인 범위 필터 전략 ATR 동적 위치 및 트레일링 스톱 로스 시스템과 결합된 이중 확인 범위 필터 전략

개요

이 전략은 범위 필터 (Range Filter) 와 평균 실제 파도 (Average True Rate, ATR) 를 결합한 낮은 회수량 거래 시스템이다. 그것은 범위 필터를 통해 트렌드 방향을 인식하고, 동시에 ATR을 사용하여 포지션 크기를 동적으로 조정하고, 후속 손실을 설정하여 위험을 효과적으로 제어한다. 이 전략은 가격이 연속적으로 두 번의 사이즈 필터 상에서 트렌드를 확인하기 전에 트렌드를 확인하도록 요구한다. 이 쌍방 확인 메커니즘은 가짜 브레이크를 효과적으로 감소시킨다.

전략 원칙

이 전략의 핵심 원칙은 범주 필터 인식 트렌드와 ATR 위험 관리 시스템을 결합하는 것입니다.

  1. 범위 필터 계산:

    • 우선 가격의 간단한 이동 평균을 계산합니다. (SMA)
    • 그리고는 이 중심선과 절대값의 이동 평균을 계산하여 변동의 범위로
    • 위 궤도 = 중심선 + 변동 범위
    • 아래 궤도 = 중심선 - 변동 범위
  2. 트렌드 확인 조건:

    • 상승 추세: 2회 연속 상승세를 기록했다
    • 하향 추세: 2주 연속 하향 하락
    • 이 두번 확인 메커니즘은 가짜 신호를 줄여줍니다.
  3. ATR 동적 위치:

    • 현재 시장의 변동성을 측정하기 위해 ATR을 사용합니다.
    • 포지션 계산 공식: (계좌 자금 * 위험 비율) / (ATR * 점값)
    • 시장의 변동성이 높을수록 입장이 작아집니다.
  4. ATR 후속 손실:

    • 다중 헤드 스톱 손실 설정: 현재 가격 - (ATR * 배수)
    • 공수점의 스톱 손실은 현재 가격 + (ATR * 배수) 로 설정됩니다.
    • 가격의 유리한 방향으로 움직일 때, 스톱로스 라인도 따라 움직여 수익을 고정합니다.

전략적 이점

  1. 적응력:

    • 범위 필터는 자동으로 다른 시장 주기의 변동 특성에 적응
    • ATR 포지션 조정 메커니즘은 전략이 다양한 변동 환경에 자동으로 적응할 수 있도록합니다.
  2. 리스크 관리가 훌륭하다:

    • 거래당 고정 리스크의 비율 (부설 설정 1%)
    • 시장의 변동에 따라 포지션 크기를 조정합니다.
    • 추적 중지 메커니즘은 수익을 효과적으로 고정하고 손실을 제한합니다.
  3. 신호 품질:

    • 이중 확인 메커니즘 ((연속적으로 두 번의 돌파) 은 가짜 신호를 줄여줍니다.
    • 범위 필터는 시장의 소음을 효과적으로 필터링하여 진정한 트렌드를 식별합니다.
  4. 낮은 회수 특성:

    • 추적 중지 장치가 단일 거래의 최대 손실을 제한합니다.
    • 보수적인 위험 파라미터 설정 (~ 1% 위험) 은 전체적인 회수를 감소시킵니다.
    • 동적 포지션은 높은 변동성 동안 자동으로 감소하여 위험을 줄입니다.
  5. 투명하고 맞춤형:

    • 정책 변수가 명확하고 논리가 명확합니다.
    • 다른 시장과 개인 위험 선호도에 따라 변수를 조정할 수 있습니다.

전략적 위험

  1. 상자 시장의 부진:

    • 동향이 없는 시장에서 빈번한 가짜 브레이크 신호가 발생할 수 있습니다.
    • 해결 방법: 트렌드 필터를 추가하거나 확인 주기 수를 늘릴 수 있습니다.
  2. 급격한 반전 위험:

    • 강세가 급격히 변할 때, 후속 손실은 적시에 출전하지 않을 수 있습니다.
    • 해결책: 변동률을 증가시키는 지표와 결합하거나 추적 손실 거리를 줄일 수 있습니다.
  3. 매개변수 민감도:

    • 범위 필터 주기 및 ATR 배수 선택이 전략 성능에 큰 영향을 미칩니다.
    • 해결 방법: 충분한 역사 회귀를 통해, 안정적인 변수 조합을 찾아내야 합니다.
  4. 연속적인 손실 위험:

    • 1 거래당 위험이 잘 통제되어 있더라도, 연속적인 손실 거래는 더 큰 철수를 초래할 수 있습니다.
    • 해결책: 최대 연속 손실 제한을 설정하거나 시장 환경 필터를 추가하십시오.
  5. 슬라이드 포인트 및 수수료 영향:

    • 실물 거래에서 슬라이드 포인트와 수수료가 전략 성과에 큰 영향을 미칠 수 있습니다.
    • 해결책: 합리적인 수수료와 슬라이드 포인트 추정치를 재검토에 포함하여 충분한 수익 공간을 유지하십시오.

전략 최적화 방향

  1. 시장 환경 필터를 추가합니다.:

    • 시장 상태를 식별하기 위해 변동률 지표 (Bollinger Bandwidth와 같은) 를 도입할 수 있습니다.
    • 낮은 변동성이나 평형 시장에서 거래를 중지하거나 매개 변수를 조정합니다.
    • 이것은 가로 시장에서 잘못된 신호를 줄이고 전체적인 승률을 높일 수 있습니다.
  2. 범위를 최적화 필터 사이클:

    • 고정된 주기보다는 적응된 주기만을 사용하는 것을 고려하세요.
    • 시장의 변동에 따라 자동으로 조정할 수 있는 범위 필터 주기
    • 이것은 전략이 시장의 다른 단계에 더 잘 적응할 수 있게 해줍니다.
  3. 다중 시간 프레임 확인:

    • 더 높은 시간 프레임에 트렌드 확인 조건을 추가합니다.
    • 주요 트렌드 방향으로만 거래하고 역동적인 거래를 피하십시오.
    • 이것은 신호의 질과 승률을 크게 향상시킬 것입니다.
  4. 동적으로 ATR 배수를 조정:

    • 시장의 변동성 특성에 따라 동적으로 조정된 ATR 배수
    • 낮은 변동성 시장에서 더 작은 배수를 사용 하 고 높은 변동성 시장에서 더 큰 배수를 사용 하 여
    • 이것은 제약의 효율성과 유연성을 높일 것입니다.
  5. 시간 기반의 탈퇴 메커니즘을 추가:

    • 최대 보유 시간 제한을 설정
    • 만약 가격이 일정 시간 동안 예상되는 방향으로 움직이지 않는다면, 필수적으로 평점을 설정합니다.
    • 이것은 무효 거래에 오랫동안 갇히지 않도록 도와줍니다.

요약하다

이중 확정 범위 필터 전략은 ATR 동적 위치와 후속 손실 시스템을 결합하여 위험 제어에 중점을 둔 양적 거래 전략입니다. 범위 필터를 통해 트렌드 방향을 식별하고, 신호를 확인하기 위해 연속적으로 두 번의 브레이크를 요구하며, ATR을 사용하여 포지션 크기를 동적으로 조정하고 후속 손실을 설정하여 각 거래의 위험을 미리 설정된 비율 내에서 효과적으로 제어합니다. 이 전략의 주요 장점은 강력한 적응력과 뛰어난 위험 제어 능력에 있습니다. 특히 변동성이 큰하지만 명백한 추세가있는 시장에 적합합니다.

전략 소스 코드
/*backtest
start: 2025-02-01 00:00:00
end: 2025-05-25 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("Range Filter + ATR Strategy (Low Drawdown)", overlay=true, 
     pyramiding=0, default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, commission_type=strategy.commission.percent, 
     commission_value=0.1, initial_capital=10000)

// Input parameters
rangePeriod = input.int(14, title="Range Filter Period")
atrPeriod = input.int(14, title="ATR Period")
riskPercent = input.float(1.0, title="Risk % per Trade", minval=0.1, maxval=5)
useATRSizing = input(true, title="Use ATR Position Sizing")
trailATR = input(1.5, title="Trailing Stop ATR Multiple")

// Calculate Range Filter
src = close
smooth = ta.sma(src, rangePeriod)
filter = ta.sma(math.abs(src - smooth), rangePeriod)
upper = smooth + filter
lower = smooth - filter

// Calculate ATR
atr = ta.atr(atrPeriod)

// Trend direction
upTrend = src > upper and src[1] > upper[1]
downTrend = src < lower and src[1] < lower[1]

// Position sizing based on ATR
atrPositionSize = (strategy.equity * riskPercent/100) / (atr * syminfo.pointvalue)

// Strategy logic
if (upTrend)
    strategy.entry("Long", strategy.long, qty=useATRSizing ? atrPositionSize : na)
    
if (downTrend)
    strategy.entry("Short", strategy.short, qty=useATRSizing ? atrPositionSize : na)

// Corrected trailing stop using trail_offset instead of trail_points
if (strategy.position_size > 0)
    strategy.exit("Long Exit", "Long", trail_price=na, trail_offset=trailATR * atr)
    
if (strategy.position_size < 0)
    strategy.exit("Short Exit", "Short", trail_price=na, trail_offset=trailATR * atr)

// Plotting
plot(upper, color=color.green, title="Upper Range")
plot(lower, color=color.red, title="Lower Range")
plot(smooth, color=color.blue, title="Smooth Line")