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

평균 실제 범위 후속 정지 전략을 따르는 경향

저자:차오장, 날짜: 2024-05-24 18:12:01
태그:ATRTS

img

전반적인 설명

이 전략은 트레일링 스톱 (TS) 의 기초로 평균 참 범위 (ATR) 를 사용하여 트렌드를 따르기 위해 스톱 로스 포지션을 동적으로 조정합니다. 가격이 유리한 방향으로 움직일 때, 스톱 로스 포지션은 수익을 잠금하기 위해 그에 따라 조정됩니다. 가격이 부정적인 방향으로 움직일 때, 스톱 로스 포지션은 변하지 않으며 가격이 스톱 로스 가격에 도달하면 포지션은 닫습니다. 이 전략의 핵심은 스톱 로스 포지션의 동적 조정에 있습니다. 이는 수익을 보호하고 트렌드가 계속됨에 따라 이익을 확장 할 수 있습니다.

전략 원칙

  1. ATR을 추적 중지의 기초로 계산합니다. ATR은 시장 변동성을 반영하고 가격 변화의 평균 크기를 측정하는 데 사용됩니다.
  2. 스톱 로스 거리 nLoss 를 ATR 및 KeyValue 매개 변수에 기초하여 계산합니다. KeyValue는 사용자 정의 곱수이며, nLoss는 스톱 로스 거리가 ATR의 여러 배라는 것을 나타내는 KeyValue와 ATR의 곱입니다.
  3. 동적 트레일링 스톱 포지션 xATRTrailingStop을 계산합니다. 긴 포지션에서는 이전 촛불의 가장 높은 가격과 (폐기 - nLoss) 의 더 큰 값으로 설정됩니다. 짧은 포지션에서는 이전 촛불의 가장 낮은 가격과 (폐기 + nLoss) 의 더 작은 값으로 설정됩니다.
  4. 엔트리 신호를 생성합니다. 닫기 가격이 xATRTrailingStop 위에 넘으면, 길게; 닫기 가격이 xATRTrailingStop 아래에 넘으면, 짧게.

이점 분석

  1. 스톱 로스 포지션은 가격 변동에 따라 동적으로 조정되어 수익을 고정시킬 수 있으며 또한 추세가 계속됨에 따라 수익이 확장 될 수 있습니다.
  2. 스톱 로스 포지션은 ATR 계산을 기반으로 하며, 이는 시장 변동성을 객관적으로 반영할 수 있으며 주관적으로 설정된 고정 스톱 로스보다 더 유연하고 효과적입니다.
  3. 키값 매개 변수로 ATR을 증폭하면 위험 선호도에 따라 적절한 스톱-러스 거리를 설정할 수 있습니다. 더 큰 키값은 더 넓은 스톱-러스 공간과 더 적은 스톱-러스 발생을 초래합니다.

위험 분석

  1. 트렌드를 따르는 전략은 불안정한 시장에서 성과를 내지 못하며 일방적인 트렌드가 명확하지 않을 때 빈번한 스톱 로스는 급속한 자금 손실로 이어질 수 있습니다.
  2. 엔트리 타이밍은 종료 가격과 동적 스톱 로스 라인 사이의 교차 신호에 의존하며, 이는 불안한 시장에서 연속적인 작은 스톱 로스를 초래할 수 있습니다.
  3. 트래일링 스톱 전략은 상당한 하락 또는 상승 뉴스에 의한 격차를 피할 수 없으며 스톱-러스 포지션의 조정 속도는 가격 변화 속도를 따라가지 못하여 예상 가능한 손실보다 훨씬 더 큰 실제 손실을 초래합니다.

최적화 방향

  1. 트렌드 판단 지표, 예를 들어 이동 평균 시스템 및 추진력 지표는 트렌드가 명확할 때만 시장에 진출하기 위해 전략에 추가 될 수 있으며, 불안한 시장에서 빈번한 거래를 피합니다.
  2. 수익을 취하는 전략은 켈리 공식을 기반으로 포지션 크기를 계산하고, 트렌드 끝에서 잠재적 인 수익 회수 가능성을 줄이기 위해 리트레이싱 스톱-프로프트 등에 대해 고정 수익 포인트를 설정하는 것과 같은 것이 고려 될 수 있습니다.
  3. 게프 오프닝에 대해 최대 스톱 로스 제한을 설정할 수 있습니다. 일정한 금액 또는 일정한 비율과 같은 것입니다. 이 제한이 도달되면 동적 스톱 로스 가격이 어디에 있든 즉시 포지션은 중단됩니다.

요약

ATR 후속 스톱 전략은 가격 변동의 크기에 따라 스톱 손실 위치를 동적으로 조정할 수 있으며 트렌딩 시장에서 좋은 결과를 얻을 수 있습니다. 그러나이 전략에는 불안한 시장에 대처할 수 없다는 것과 과도한 스톱 손실 빈도 및 격차 개척을 피하는 어려움과 같은 위험이 있습니다. 이러한 단점을 해결하기 위해 전략은 트렌드 판단, 영리 전략 및 최대 스톱 손실 제한 측면에서 최적화 및 개선 될 수 있습니다. 이러한 조정으로 전략의 적응력과 수익성이 향상 될 수 있습니다.


/*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("Long TAP", overlay=true)

// Constants
keyValueDefault = 3.0
keyValueStep = 0.5
atrPeriodDefault = 10

// Inputs
keyValue = input.float(keyValueDefault, title="Key Value")
atrPeriod = input.int(atrPeriodDefault, title="ATR Period")

// Calculations
xATR = ta.atr(atrPeriod)
nLoss = keyValue * xATR

// Trailing Stop Calculation
var float xATRTrailingStop = 0.0
xATRTrailingStop := ta.highest(math.max(nz(xATRTrailingStop[1], 0), close - nLoss), 1)
xATRTrailingStop := ta.lowest(math.min(nz(xATRTrailingStop, 0), close + nLoss), 1)

// Position Calculation
var int pos = 0
pos := nz(pos[1], 0)
if (close[1] < nz(xATRTrailingStop, 0) and close > nz(xATRTrailingStop, 0))
    pos := 1
else if (close[1] > nz(xATRTrailingStop, 0) and close < nz(xATRTrailingStop, 0))
    pos := -1

// Plotting Trailing Stop
var color xcolor = na
if (pos == -1)
    xcolor := color.red
else if (pos == 1)
    xcolor := color.green
plot(xATRTrailingStop, color=xcolor, title="Trailing Stop")

// Buy/Sell Signals
buySignal = ta.crossover(close, xATRTrailingStop)
sellSignal = ta.crossunder(close, xATRTrailingStop)

// Strategy
if (buySignal)
    strategy.entry("Long", strategy.long)
    label.new(bar_index, xATRTrailingStop, text="Buy Signal", color=color.green, style=label.style_label_up, yloc=yloc.belowbar)
if (sellSignal)
    strategy.entry("Short", strategy.short)
    label.new(bar_index, xATRTrailingStop, text="Sell Signal", color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

// Alerts
alertcondition(buySignal, title='UT BOT Buy', message='UT BOT Buy')
alertcondition(sellSignal, title='UT BOT Sell', message='UT BOT Sell')


관련

더 많은