점진적 트레일링 스톱로스 전략


생성 날짜: 2023-10-25 14:56:28 마지막으로 수정됨: 2023-10-25 14:56:28
복사: 0 클릭수: 691
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

점진적 트레일링 스톱로스 전략

개요

점진적 추적 스톱 전략은 스톱 라인을 동적으로 조정하여 위험 제어 및 스톱 캡처의 유기적 결합을 구현한다. 그것은 평균 실제 변동 범위를 사용하여 스톱 라인을 계산하여 주식 가격 추세를 효과적으로 추적하고 이익을 보호하면서 불필요한 스톱 손실을 줄일 수 있다. 이 전략은 트렌드가 강한 주식에 적합하며 안정적인 수익을 얻을 수 있다.

원칙

이 전략은 평균 실제 변동 범위 ((ATR) 를 계산하여 동적 스톱 손실의 기초로 사용한다. ATR은 주식의 변동성을 효과적으로 반영할 수 있다. 전략은 먼저 ATR 주기 파라미터를 입력하고, 전형적으로 10일이다. 그리고 ATR 값을 계산한다.

구체적으로, 전략은 현재 K 선의 ATR 값을 계산하고, 인자 변수를 곱하여, 스톱로스 거리를 얻는다. 주식 가격이 스톱로스 가격보다 높으면, 더 많은 포지션을 열고, 주식 가격이 스톱로스 가격보다 낮으면, 빈 포지션을 열는다. 이렇게 하면, 스톱로스가 주식 가격에 밀착하여, 스톱로스의 점진 추적 효과를 달성한다.

장점

  • 동적으로 추적되는 스톱, 시장 상황에 따라 스톱 거리를 조정할 수 있으며, 유연성이 강하다
  • 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)