ATR 트레일링 스톱로스 전략


생성 날짜: 2023-09-26 20:23:13 마지막으로 수정됨: 2023-09-26 20:23:13
복사: 1 클릭수: 974
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요: ATR 추적 스톱 로드 전략은 평균 실제 파도 지표에 기반하여 스톱 로드를 동적으로 설정하는 거래 전략이다. 이 전략은 가격 변동이 큰 외환 거래 품종에 적용되며, 시장 변동을 동적으로 추적하여 스톱 로드를 설정하고, 큰 추세에서 이익을 잡는 동시에 위험을 제어한다.

전략 원칙

이 전략은 AVERAGE 지표 ((가격의 평균선) 을 계산하고 ATR 지표에 기반한 상반기 DIFF와 하반기 DIFFLOW를 계산하여 거래 통로를 형성한다. 가격이 상반기 DIFF를 밟을 때 상반기를 하고, 가격이 하반기 DIFFLOW를 밟을 때 공백기를 하고, ATR 동적 설정 스톱로스를 사용하여, 스톱로스 평점에 도달한다.

구체적으로, 전략은 우선 가격의 간단한 이동 평균 AVERAGE와 ATR 지표를 계산하고 ATR 값을 곱한 배수 계수로 상도 DIFF와 하도 DIFFLOW을 계산한다. 이것은 DIFF와 DIFFLOW에 의해 상도 하도 경계가 결정되는 거래 통로를 형성한다. 가격이 상도를 돌파 할 때 다단위 포지션을 취하고, 가격이 하도를 돌파 할 때 빈 위 포지션을 취한다. 또한, 중지 손실은 ATR 값의 변화와 함께 동적으로 변화하여 변경 가능한 손실을 실현합니다.

이렇게 하면, 전략은 큰 트렌드에서 계속적으로 더 많은 코스피를 만들어 수익을 잡을 수 있으며, ATR 동적 추적 스톱로스를 통해 위험을 제어 할 수 있습니다.

우위 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. ATR 지표를 사용하여 동적 스톱로드를 사용하면 시장의 변동 정도에 따라 스톱로드를 유연하게 설정할 수 있으며 스톱로드가 너무 가깝거나 너무 멀지 않도록 할 수 있습니다.

  2. 거래 통로를 구축하여 큰 추세에서 평균값이 돌아오는 기회를 잡습니다. 가격이 정체된 통로에서 이 전략은 더 나은 자금 사용률을 얻을 수 있습니다.

  3. 계속적으로 더 많은 코카이드를 하고 트렌드에 참여하고, 가격 상승이나 하향 돌파를 예측하지 않고, 트렌드를 추적하여 더 나은 수익을 얻습니다.

  4. 간단한 매개 변수 설정 및 거래 규칙, 이해하기 쉽고 실행 가능하며 자동 거래에 적합하다.

  5. 자금 활용률이 높고, 돌파 방향을 예측할 필요가 없으며, 지속적인 거래는 더 많은 수익 기회를 얻을 수 있습니다.

위험 및 최적화 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. ATR 매개 변수가 너무 커 설정되면 손실 거리가 너무 멀어서 위험을 효과적으로 제어 할 수 없습니다. ATR 계수는 1 ~ 3 배의 일일 ATR으로 설정하는 것이 좋습니다.

  2. 종합시장에서는 거래가 활발하고 가격의 변동이 많으며, 자주 스톱로드를 트리거한다. 스톱로드 트리거의 빈도를 낮추기 위해 ATR 계수를 적절히 조정할 수 있다.

  3. 일부 시간에는 가격이 채널을 뚫고 다시 돌아 올 수 있으며, 이 때 전략은 손실을 초래합니다. 트렌드 필터를 결합하여 트렌드 방향이 채널을 뚫을 때만 출전 할 수 있습니다.

  4. 큰 변동이 있을 때, 막힘은 좋은 보호 효과를 발휘하지 못할 수 있다. 최대 막힘 설정을 추가하는 것을 고려할 수 있으며, 막힘이 너무 크지 않도록 한다.

이 전략은 다음과 같이 최적화될 수 있습니다.

  1. ATR 파라미터를 최적화하여 적절한 ATR 배수 계수를 찾아서 스톱로스를 추적할 수 있지만, 스톱로스가 너무 민감하지 않습니다.

  2. 트렌드 판단 지표에 가입하고, 트렌드가 상승할 때만 더 많이 하고, 트렌드가 하락할 때 공백을 하고, 트렌드 아닌 거래를 피한다.

  3. 다양한 품종에 대한 개별 테스트 파라미터를 사용하여 각 품종에 적합한 파라미터 조합을 찾습니다.

  4. 진입 기회를 최적화하기 위해, 통로 중축을 뚫고 진입할 수 있다.

  5. 지주 규모를 늘리면서도 전체 손실을 통제해야 한다.

요약하다

ATR 추적 중지 전략은 거래 통로를 구축하여 큰 추세에서 지속적인 거래를 함으로써 이익을 캡처하고 ATR의 동적 설정을 사용하여 손실을 제어합니다. 이 전략은 변동성이 높은 품종에 적용되며 더 나은 자금 활용률을 얻을 수 있습니다. 실제로는 최적화 변수가 필요하며 추세 판단 등을 추가하는 것을 고려할 수 있습니다. 전반적으로 ATR 추적 중지 전략은 간단한 실용적인 추세 추적 전략입니다.

전략 소스 코드
/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-25 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Investoz

//@version=4
strategy("ATR Strategy FOREX", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

len = input(26, type=input.integer, minval=1, title="Length")
mul = input(1, type=input.float, minval=0, title="Length")
mullow = input(2, type=input.float, minval=0, title="Length")

price = sma(close, 1)
average = ema(close, len)
diff = atr(len) * mul
difflow = atr(len) * mullow

bull_level = average + diff
bear_level = average - difflow
bull_cross = crossunder(price, bear_level)
bear_cross = crossunder(bull_level, price)

FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 18, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2008, title = "From Year", minval = 2008)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2019)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
startTimeOk()  => true

if (startTimeOk())
    strategy.entry("KOP", strategy.long, when=bull_cross)
    strategy.close("KOP", when=bear_cross)  
    strategy.entry("SALJ", strategy.short, when=bear_cross)
    strategy.close("SALJ", when=bull_cross)

plot(price, title="price", color=color.black, transp=50, linewidth=2)
a0 = plot(average, title="average", color=color.red, transp=50, linewidth=1)
a1 = plot(bull_level, title="bull", color=color.green, transp=50, linewidth=1)
a2 = plot(bear_level, title="bear", color=color.red, transp=50, linewidth=1)
fill(a0, a1, color=color.green, transp=97)
fill(a0, a2, color=color.red, transp=97)