그라디언트 트레일링 스톱 로스 전략

저자:차오장, 날짜: 2023-10-25 14:56:28
태그:

img

전반적인 설명

그라디언트 트레일링 스톱 로스 전략은 위험 통제와 수익 취득을 균형을 맞추기 위해 스톱 로스 라인을 동적으로 조정합니다. 스톱 로스 라인을 계산하기 위해 평균 진실 범위 (ATR) 를 사용하여 가격 추세를 효과적으로 추적하여 불필요한 스톱 아웃을 줄이는 동안 이익을 보호합니다. 이 전략은 강한 추세를 보이는 주식에서 잘 작동하며 안정적인 수익을 창출 할 수 있습니다.

원칙

이 전략은 동적 스톱 로스의 기초로 평균 참 범위 (ATR) 를 사용합니다. ATR은 주식의 변동성을 효과적으로 반영합니다. 전략은 먼저 ATR 기간을 입력으로, 일반적으로 10 일으로 사용합니다. 그 다음 ATR 값이 계산됩니다. 가격이 상승함에 따라 스톱 로스 라인이 또한 가격을 따라 올라갑니다. 가격이 떨어지면 스톱 로스 라인은 이익을 잠금하기 위해 변하지 않습니다. 또한 전략은 인자 매개 변수를 사용하여 가격에서 스톱 로스 거리를 정밀 조정 할 수 있습니다.

특히, 전략은 현재 ATR을 계산하고, 그 다음 Stop Loss 거리를 얻기 위해 인수로 곱합니다. 가격이 Stop Loss 가격보다 높으면 긴 포지션이 열립니다. 가격이 낮다면 짧은 포지션이 열립니다. 따라서 Stop Loss 라인은 가격을 밀접하게 따라 경사 추행 효과를 달성합니다.

장점

  • 동적인 후속 스톱 손실은 시장 조건에 따라 스톱 거리를 조정합니다.
  • ATR은 시장 변동성에 기초하여 정지 거리를 계산합니다.
  • 단순하고 자동화하기 쉬운 거래
  • 각종 자산에 대한 맞춤형 ATR 기간 및 중지 손실 요인
  • 손해배상금지 및 이익 취득 사이의 잔액
  • 불필요한 정차를 줄여줍니다.

위험성

  • 적절한 ATR 매개 변수를 선택하는 것이 중요합니다.
  • 너무 가까운 스톱 손실은 불필요한 스톱 아웃을 증가시킬 수 있습니다.
  • 너무 많은 스톱 로스는 위험을 통제하지 못할 수 있습니다.
  • 전략 자체는 시장 동향을 결정할 수 없습니다
  • ATR 기간 및 요인 설정을 평가해야 합니다.

개선

  • 잘못된 신호를 줄이기 위해 이동 평균과 같은 필터를 추가
  • 기계 학습을 통해 ATR 기간 및 중지 손실 요인을 자동으로 최적화
  • 이윤을 확보하기 위해 수익을 취하는 전략을 통합하십시오.
  • 구매/판매 신호를 확인하기 위해 다른 지표와 결합
  • 더 나은 ATR 계산 또는 동적 ATR 기간을 연구
  • 다른 동적 추적 중지 알고리즘을 탐색
  • 스톱 로스 효과를 더욱 최적화

결론

그라디언트 트레일링 스톱 로스 전략은 스톱 로스 거리를 동적으로 조정함으로써 위험과 이윤을 효과적으로 균형 잡습니다. 간단한 논리와 높은 구성성으로 알고리즘 거래에 적합합니다. 적절한 매개 변수 조정 및 지표 조합은 여전히 인간의 기술에 의존합니다. 추가 최적화는이 전략을 더욱 수익성있게 만들 수 있습니다.


/*backtest
start: 2023-10-17 00:00:00
end: 2023-10-24 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supertrend Strategy, by Ho.J.", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

// 백테스팅 시작일과 종료일 입력
startYear = input(2020, title="Start Year")
startMonth = input(1, title="Start Month")
startDay = input(1, title="Start Day")

endYear = input(9999, title="End Year")
endMonth = input(12, title="End Month")
endDay = input(31, title="End Day")

// 백테스팅 시간 범위 확인
backtestingTimeBool = (year >= startYear and month >= startMonth and dayofmonth >= startDay) and (year <= endYear and month <= endMonth and dayofmonth <= endDay)

atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)

[_, direction] = ta.supertrend(factor, atrPeriod)

var bool longCondition = false
var bool shortCondition = false

if backtestingTimeBool
    prevDirection = direction[1]
    if direction < 0
        longCondition := false
        shortCondition := true
    else if direction > 0
        longCondition := true
        shortCondition := false

if longCondition
    strategy.entry("My Long Entry Id", strategy.long)

if shortCondition
    strategy.entry("My Short Entry Id", strategy.short)

plot(strategy.equity, title="equity", color=color.rgb(255, 255, 255), linewidth=2, style=plot.style_area)

더 많은