ATR과 피보나치 수정점 손절매를 기반으로 한 추세 추종 전략


생성 날짜: 2024-02-28 17:09:12 마지막으로 수정됨: 2024-02-28 17:09:12
복사: 0 클릭수: 993
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

ATR과 피보나치 수정점 손절매를 기반으로 한 추세 추종 전략

개요

이 전략은 평균 실제 변동 범위 ((ATR) 와 피포나치 회귀선을 결합하여, 손실 보호의 트렌드 추적 전략을 설계한다. 가격이 ATR 회귀 중단선을 뚫었을 때, 트렌드 추적을 수행한다. 동시에 피포나치 회귀선을 사용하여 가격 목표를 설정하고, 트렌드 추적과 손실 중지 장치의 유기적인 결합을 실현한다.

전략 원칙

  1. ATR 값과 ATR 회수 스톱 라인을 계산하십시오. ATR 회수 스톱 라인은 ATR 값이 3의 계수로 곱한 것입니다.
  2. 세 개의 피보나치 회귀선을 스톱트랙 목표로 계산한다. 피보나치 회귀선 지점은 ATR 회귀 스톱트랙과 새로운 최고/새로운 최저점 사이의 피보나치 비율이다 (예: 61.8%, 78.6%, 88.6%).
  3. ATR 리트레이스 스톱 라인을 넘으면 구매/판매 신호가 발생하여 트렌드 추적을 수행한다.
  4. 의 목표는 3개의 피보나치 철수선이다.

전략적 이점

  1. ATR 상쇄는 위험을 효과적으로 통제하고 손실을 확대하지 않도록합니다.
  2. 피보나치의 목표는 추세에서 더 많은 이익을 얻을 수 있고, 동시에 상승과 하락을 따라가는 것을 피하는 것입니다.
  3. 전략 운영 논리는 명확하고 간단하며, 실행하기 쉽다.
  4. 다양한 시장에 맞게 ATR 비율과 피보나치 세팅을 유연하게 조정할 수 있다.

전략적 위험

  1. 진동상태에서, ATR 정지는 빈번하게 유발될 수 있으며, 빈번한 동작의 위험을 초래한다.
  2. 일부 리그 또는 조정을 놓칠 위험이 있습니다.
  3. ATR 주기 파라미터와 같은 합리적인 파라미터 최적화가 필요합니다.

최적화 방향

  1. 트렌드를 판단하는 지표와 결합하여 흔들리는 상황에서 작동하는 것을 피할 수 있습니다.
  2. 다시 입학할 수 있는 메커니즘을 추가하여 missed callback의 위험을 줄일 수 있습니다.
  3. ATR 주기, ATR 배수, 피보나치 변수를 테스트하고 최적화한다.

요약하다

이 전략은 ATR 중지 및 피보나치 목표 두 가지 중요한 기술 분석 방법을 통합하여 트렌드에서 수익을 최적화 할 수 있으며 손실을 사용하여 위험을 제어 할 수 있습니다. 이것은 매우 실용적인 트렌드 추적 전략입니다. 추가적인 최적화를 통해 전략을 더 안정화하고 더 잘 적응 할 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-02-21 00:00:00
end: 2024-02-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("ATR TrailStop with Fib Targets", overlay=true)

// Input parameters
atrPeriod = input(5, title="ATR Period")
ATRFactor = input(3.5, title="ATR Factor")
Fib1Level = input(61.8, title="Fib1 Level")
Fib2Level = input(78.6, title="Fib2 Level")
Fib3Level = input(88.6, title="Fib3 Level")

// ATR Calculation
atrValue = ta.atr(atrPeriod)

// ATR TrailStop Calculation
loss = ATRFactor * atrValue
trendUp = close[1] > close[2] ? (close - loss > close[1] ? close - loss : close[1]) : close - loss
trendDown = close[1] < close[2] ? (close + loss < close[1] ? close + loss : close[1]) : close + loss
trend = close > close[2] ? 1 : close < close[2] ? -1 : 0
trailStop = trend == 1 ? trendUp : trendDown

// Fibonacci Levels Calculation
ex = trend > trend[1] ? high : trend < trend[1] ? low : na
fib1 = ex + (trailStop - ex) * Fib1Level / 100
fib2 = ex + (trailStop - ex) * Fib2Level / 100
fib3 = ex + (trailStop - ex) * Fib3Level / 100

// Plotting
plot(trailStop, title="TrailStop", color=color.red)
plot(fib1, title="Fib1", color=color.white)
plot(fib2, title="Fib2", color=color.white)
plot(fib3, title="Fib3", color=color.white)

// Buy and Sell Signals
longCondition = close > trailStop and close[1] <= trailStop
shortCondition = close < trailStop and close[1] >= trailStop

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)