퍼센트 트레일링 스톱 전략


생성 날짜: 2023-09-19 21:18:39 마지막으로 수정됨: 2023-09-19 21:18:39
복사: 0 클릭수: 636
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 거래 위험을 제어하기 위해 구성 가능한 비율로 추적되는 중지 메커니즘을 구현한다. 그것은 긴 포지션과 짧은 포지션의 중지 비율을 설정하고, 입문 가격에서 시작하여 지속적으로 우호적인 방향으로 최고 가격 또는 최저 가격을 추적하여 동적인 중지를 구현한다.

전략 원칙

이 전략의 주요 논리는 다음과 같습니다.

  1. 긴 포지션과 짧은 포지션을 입력한 손실의 비율
  2. 장시간 포지션: 하락점을 추적하고 최저 가격에 따라 스톱 라인을 계산합니다.
  3. 단위시: 상점을 계속 추적하고 최고 가격에 따라 스톱 라인을 계산합니다.
  4. 가격이 스톱 로즈 라인을 만지면 즉시 스톱 로즈로 현재 포지션을 종료합니다.

전략은 사용자 지정된 중지 손실 비율을 허용합니다. 예를 들어 10%로 설정합니다. 긴 포지션이 있으면 최저 가격의 10% 이상으로 실시간으로 중지 손실 라인을 계산합니다. 짧은 포지션이 있으면 최고 가격의 10% 이하로 중지 손실 라인을 계산합니다.

이렇게 하면 스톱 라인이 지속적으로 유리한 방향으로 움직여 동적으로 스톱을 추적하여 수익을 최대한 보호하고 동시에 위험을 통제할 수 있습니다.

전략적 이점

  • 수동 작업 없이 자동으로 손실 추적을 구현
  • 동적 스톱 라인, 최대 이익 보호
  • 다양한 거래 유형에 맞게 사용자 정의 할 수 있는 중지 손실 비율
  • 위험 관리 및 예상 이상의 손실을 줄이는 데 도움이 됩니다.
  • 다양한 거래 전략에 적용 가능하며, 쉽게 통합됩니다.

전략적 위험과 대응

  • 추적 속도가 느리고, 무력화될 위험이 있습니다.
  • 너무 느슨하게 중지하면 손실이 커질 수 있습니다.
  • 너무 긴밀하게 막는 것은 너무 자주 막을 수 있습니다.

어떻게 대처해야 할까요?

  1. 손실 비율을 최적화하고, 손실 효과를 균형을 맞추기
  2. 시간 상쇄와 같은 다른 상쇄 방식과 함께
  3. 시장의 변동에 따라 최적화된 스톱 로즈 변수
  4. 스톱 로즈 일관성을 유지하여 변수가 너무 무작위로 변경되는 것을 피하십시오.

전략 최적화 방향

이 전략은 다음과 같이 개선될 수 있습니다.

  1. 기계 학습 알고리즘을 사용하여 동적으로 스톱 로즈 파라미터를 최적화
  2. 최대 인출과 같은 지표에 따라 자동으로 중지 손실을 조정합니다.
  3. 이동 평균과 같은 지표와 함께 스톱 포지션을 설정
  4. 변동률 상황에 따라 다른 파라미터 구성을 선택합니다.
  5. 부분 손실을 설정하고 수익을 얻기 위해 정지 위치를 조정합니다.

요약하다

이 전략은 작동하는 비율로 손실을 추적하는 방법을 제공하며, 손실 경계를 동적으로 조정할 수 있습니다. 그것은 이익을 최대한 보호 할 수 있으며, 위험을 효과적으로 제어 할 수 있습니다. 매개 변수 최적화, 지표 통합과 같은 방법으로 손실 전략을 더 지능화하고 최적화 할 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © theCrypster

//@version=4
strategy("Percent Trailing Stop %", overlay=true)

//ENTER SOME SETUP TRADES FOR TSL EXAMPLE
longCondition = crossover(sma(close, 10), sma(close, 20))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(sma(close, 10), sma(close, 20))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)
    

//TRAILING STOP CODE
trailStop = input(title="Long Trailing Stop (%)", type=input.float, minval=0.0, step=0.1, defval=10) * 0.01

longStopPrice = 0.0
shortStopPrice = 0.0
longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - trailStop)
    max(stopValue, longStopPrice[1])
else
    0
shortStopPrice := if strategy.position_size < 0
    stopValue = close * (1 + trailStop)
    min(stopValue, shortStopPrice[1])
else
    999999

//PLOT TSL LINES
plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.red, style=plot.style_linebr, linewidth=1, title="Long Trail Stop", offset=1, title="Long Trail Stop")
plot(series=strategy.position_size < 0 ? shortStopPrice : na, color=color.red, style=plot.style_linebr, linewidth=1, title="Short Trail Stop", offset=1, title="Short Trail Stop")


//EXIT TRADE @ TSL
if strategy.position_size > 0
    strategy.exit(id="Close Long", stop=longStopPrice)
if strategy.position_size < 0
    strategy.exit(id="Close Short", stop=shortStopPrice)