동적 트레일링 스톱로스 전략


생성 날짜: 2024-01-31 15:05:30 마지막으로 수정됨: 2024-01-31 15:05:30
복사: 0 클릭수: 655
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

동적 트레일링 스톱로스 전략

개요

이 전략은 동적으로 계산된 후속 손실 메커니즘을 기반으로, 주식 가격의 최고 가격과 최저 가격에 따라 긴 포지션과 짧은 포지션의 손실 라인을 설정한다. 가격이 스톱 손실 라인을 만질 때, 현재의 포지션을 청산하고, 반대 방향으로 새로운 포지션을 열는다. 전략은 간단하고 이해하기 쉽고, 개별 위험을 효과적으로 제어한다.

전략 원칙

이 전략은 다음과 같은 몇 가지 단계를 통해 이루어집니다.

  1. 입력 매개 변수: 선택 과잉 또는 공백, 계산 주기의 길이, 트레일링 스톱의 슬라이드 포인트 설정
  2. 최고 가격과 최저 가격을 계산합니다: 입력 길이에 따라 주기 내의 최고 가격과 최저 가격을 계산합니다.
  3. 후속 스톱 라인을 계산한다: 오버할 때, 최저값을 스톱 라인으로 빼고, 다락할 때, 최고값을 스톱 라인으로 더한다
  4. 평화 포지션을 개시: 가격이 스톱 손실 라인을 만지면, 현재 방향의 포지션을 개시하고 반대 방향으로 새로운 포지션을 개시합니다.

이 전략의 기본적인 동작 논리는 다음과 같습니다. 가격이 동작할 때, 중지 라인은 지속적으로 업데이트됩니다. 따라서 동적 추적이 가능합니다. 이러한 추적 중지 방법을 통해, 단일 손실을 효과적으로 제어 할 수 있습니다.

우위 분석

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

  1. 전략은 간단하고 명확하며 이해하기 쉽고 실행이 가능합니다.
  2. 동적 후속 손실을 적용하여 단일 손실을 효과적으로 제어 할 수 있습니다.
  3. 다양한 시장 환경에 맞는 유연한 선택의 여분 또는 공백 방향
  4. 계산주기와 슬라이드 포인트는 사용자 정의가 가능하며, 최적화도 가능합니다.

전체적으로 보면, 이 전략은 간단한 후속 손실 메커니즘을 통해 포지션을 효과적으로 관리할 수 있으며, 전형적인 위험 관리 전략이다.

위험 분석

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

  1. 가격 변동이 큰 경우, 스톱 손실 라인은 너무 자주 트레이드 될 수 있습니다.
  2. 상위 가격과 하위 가격을 계산하는 불합리한 주기가 부적절한 스톱 라인을 초래할 수 있습니다.
  3. 슬라이드 포인트 설정이 너무 커서 스탠드 라인이 너무 느려져서 스탠드가 제대로 되지 않습니다.

이러한 위험은 계산주기를 조정하거나 슬라이드폭을 적절히 줄이는 등의 방법으로 최적화하여 스톱 라인 설정을 더 합리적으로 만들 수 있습니다.

최적화 방향

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

  1. 스포드 라인 최적화 메커니즘을 추가하여 스포드 라인이 너무 느슨하거나 너무 단단하지 않도록 동적으로 조정할 수 있습니다.
  2. 부적절한 시간에 포지션을 열지 않도록 포지션 개설 조건을 판단하는 방법을 추가합니다.
  3. 트렌드 지표와 함께 트렌드 추적 방식을 사용하여 더 많은 수익을 얻을 수 있습니다.
  4. 포지션 관리 모듈을 추가하여 위험 등급을 통해 포지션을 동적으로 조정합니다.

요약하다

이 거래 전략은 간단한 추적 손실 방법을 통해 포지션의 동적 관리를 구현한다. 전략은 이해하기 쉽고 구현할 수 있으며, 단독 손실을 효과적으로 제어할 수 있다. 우리는 전략의 장점, 가능한 위험 및 후속 최적화 방향을 분석했다.

전략 소스 코드
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Noro's Trailing-Stop Strategy", shorttitle = "Trailing", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
length = input(20, minval = 1)
shift = input(0.0, minval = 0, title = "Trailing Stop")
background = input(false)

//Levels
max = highest(high, length)
min = lowest(low, length)

//Trailing
size = strategy.position_size
longtrailing = 0.0
shorttrailing = 0.0
longtrailing := size <= 0 ? min - ((min / 100) * shift) : max(min - ((min / 100) * shift), longtrailing[1])
shorttrailing := size >= 0 ? max + ((max / 100) * shift) : min(max + ((max / 100) * shift), shorttrailing[1])
trailing = size <= 0 ? shorttrailing : longtrailing
col = size == size[1] ? size > 0 ? color.red : color.lime : na
plot(trailing, color = col, linewidth = 2, transp = 0)

//Background
bgcol = background ? size > 0 ? color.lime : color.red : na
bgcolor(bgcol, transp = 80)

if trailing > 0 and size <= 0
    strategy.entry("Long", strategy.long, needlong ? na : 0, stop = trailing)
if trailing > 0 and size >= 0
    strategy.entry("Short", strategy.short, needshort ? na : 0, stop = trailing)