ATR 트렌드 브레이크 전략

저자:차오장, 날짜: 2024-03-22 14:48:37
태그:

img

전반적인 설명

이것은 ATR 지표와 폐쇄 가격을 사용하여 트렌드 브레이크우트를 캡처하는 양적 거래 전략입니다. 전략은 동적으로 트렌드 방향을 결정하기 위해 상부 및 하부 트렌드 라인을 계산하고 종료 가격이 트렌드 라인을 깨는 경우 거래 신호를 생성합니다. 전략은 또한 스톱 로스 및 목표 가격 수준을 설정하고 변동성에 따라 트레일링 스톱을 허용합니다.

전략 원칙

  1. ATR 신호를 계산합니다: atr_signal = atr(atr_period)
  2. 상위와 하위 트렌드 라인을 계산합니다.
    • 하위 트렌드 라인: 하위 트렌드 = 하위 - atr_mult*atr_signal
    • 상위 트렌드 라인: 상위_트렌드 = 높은 + atr_mult*atr_signal
  3. 동적으로 트렌드 라인을 조정하고, 깨지면 변경되지 않고, 그렇지 않으면 최신 값으로 업데이트됩니다.
  4. 트렌드 방향을 식별하기 위해 종료 가격의 상대적 위치에 따라 트렌드 라인을 색상 코딩
  5. 거래 신호를 생성합니다.
    • 긴 신호: 상위 트렌드 라인을 넘어서 현재 위치 및 종료 가격의 파열이 없습니다.
    • 짧은 신호: 현재 위치 및 종료 가격의 경로가 하위 트렌드 라인 아래로 떨어지지 않습니다.
  6. 스톱 로스 및 목표 가격을 설정합니다.
    • 스톱 로스 (Stop Loss): 최후의 진입 가격 ± ATR 범위 * 파업 시점의 요인
    • 목표 가격: 최신 입시 가격 ± 스톱 로스 범위 * 수익/위험 비율 (rr)
  7. 후속 정지:
    • 롱 스톱: 가장 높은 상위 트렌드 라인
    • 단축: 가장 낮은 하위 트렌드 라인

이점 분석

  1. 다른 시장 조건에 적응하기 위해 변동성을 기반으로 동적으로 트렌드 라인을 조정합니다.
  2. 트렌드를 쉽게 식별하기 위해 방향성을 가진 색상 코딩 트렌드 라인
  3. ATR을 변동성 측정으로 사용하여 합리적인 스톱 로스 및 목표 가격을 설정합니다.
  4. 후속 정지 기능으로 수익을 차단하고 마감량을 최소화합니다.
  5. 다른 도구와 시간 프레임에 맞게 매우 매개 변수화

위험 분석

  1. 트렌드 브레이크 전략은 불안정한 시장에서 손실로 이어지는 과도한 신호를 생성 할 수 있습니다.
  2. ATR 매개 변수의 잘못된 선택은 신호 품질에 영향을 미치는 과도하게 민감하거나 느린 트렌드 라인을 초래할 수 있습니다.
  3. 고정 수익/위험 비율은 다른 시장 특성에 잘 적응하지 않을 수 있습니다.
  4. 후속 정지는 손실을 줄이고 트렌드 움직임을 놓칠 수 있습니다.

해결책:

  1. 유동 시장에서 손실을 피하기 위해 트렌드 필터 또는 오시레이터 지표를 도입하십시오.
  2. 기기 및 시간 프레임 특성에 따라 ATR 매개 변수를 개별적으로 최적화합니다.
  3. 전략 위험 조정 수익을 향상시키기 위해 보상/위험 비율 및 후속 중지 논리를 최적화
  4. 트렌드 인식 방법과 결합하여 트레일링 스톱을 개선하고 더 많은 트렌드 수익을 얻습니다.

최적화 방향

  1. 트렌드를 식별하기 위해 더 높은 시간 프레임을 사용하고 신호를 유발하기 위해 더 짧은 시간 프레임을 사용하여 여러 시간 프레임을 결합하십시오.
  2. 신호 유효성을 향상시키기 위해 트렌드 라인 브레이크 전에 검증을 위해 볼륨 및 가격 지표를 추가합니다.
  3. 포지션 크기를 최적화하고 스윙 트레이딩을 포함
  4. 스톱 로스 및 보상/위험 비율에 대한 매개 변수 최적화를 수행
  5. 트렌드 움직임 중 조기 정지를 줄이기 위해 후속 정지 논리를 개선하십시오.

멀티 타임프레임 분석은 더 안정적인 트렌드 식별을 위해 잡음을 필터링하는 데 도움이됩니다. 브레이크아웃 전에 볼륨과 가격 확인은 잘못된 신호를 제거 할 수 있습니다. 포지션 사이즈 최적화는 자본 효율성을 향상시킵니다. 스톱 로스 및 보상 / 리스크 매개 변수를 최적화하면 위험 조정 수익을 향상시킬 수 있습니다. 트레일링 스톱 논리를 정제하면 드래운드를 제어하면서 더 많은 트렌드 수익을 얻을 수 있습니다.

요약

이 전략은 트렌드 라인 포지션을 동적으로 조정하고 트렌드 브레이크오웃을 캡처하기 위해 변동성 지표로 ATR을 사용합니다. 수익을 잠금하기 위해 트레일링 스톱을 사용하여 합리적인 스톱-로스 및 수익 목표를 설정합니다. 매개 변수는 강력한 적응력을 위해 조정 가능합니다. 그러나 트렌드 브레이크오웃 전략은 불안정한 조건에서 휘프사 손실에 민감하며 추가 최적화 및 정리를 요구합니다. 여러 시간 프레임, 필터링 신호, 최적화 위치 사이징, 매개 변수 최적화 및 기타 기술을 결합하면 전략의 성능과 견고성을 향상시킬 수 있습니다. 양적 전략은 더 많은 야심찬 거래자에게 아이디어와 지침을 제공하기 위해 기본 원칙에 대한 탄탄한 이해에 기반한 지속적인 테스트 및 최적화를 요구합니다.


/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "Claw-Pattern", overlay=true, calc_on_every_tick=true, default_qty_type= strategy.percent_of_equity,default_qty_value=10, currency="USD")
//Developer: Trading Strategy Guides
//Creator: Trading Strategy Guides
//Date: 3/18/2024
//Description: A trend trading system strategy 

atr_period = input(title="ATR Period", defval=120, type=input.integer)
atr_mult = input(title="ATR Multiplier", defval=2, type=input.integer)
dir = input(title="Direction (Long=1, Short=-1, Both = 0)", defval=1, type=input.integer)
factor = input(title="Stop Level Deviation (% Chan.)", defval=0.75, type=input.float)
rr = input(title="Reward to Risk Multiplier", defval=2, type=input.integer)
trail_bar_start = input(title="Trail Stop Bar Start", defval=20, type=input.integer)
col_candles = input(title="Enable Colored Candles", defval=false, type=input.bool)

atr_signal = atr(atr_period)

lower_trend = low - atr_mult*atr_signal
upper_trend = high + atr_mult*atr_signal

upper_trend := upper_trend > upper_trend[1] and close < upper_trend[1] ? upper_trend[1] : upper_trend
lower_trend := lower_trend < lower_trend[1] and close > lower_trend[1] ? lower_trend[1] : lower_trend

upper_color = barssince(cross(close, upper_trend[1])) > barssince(cross(close, lower_trend[1])) ? color.red : na
lower_color = barssince(cross(close, upper_trend[1])) > barssince(cross(close, lower_trend[1])) ? na : color.green

trend_line = lower_trend

plot(lower_trend, color=lower_color, title="Lower Trend Color")
plot(upper_trend, color=upper_color, title="Upper Trend Color")

is_buy = strategy.position_size == 0 and crossover(close, upper_trend[1]) and upper_color[1]==color.red and (dir == 1 or dir == 0)
is_sell = strategy.position_size == 0 and crossover(close, lower_trend[1]) and lower_color[1]==color.green and (dir == -1 or dir == 0)

if is_buy
    strategy.entry("Enter Long", strategy.long)
else if is_sell
    strategy.entry("Enter Short", strategy.short)

더 많은