동적 손절매 추적 전략


생성 날짜: 2024-02-01 11:05:36 마지막으로 수정됨: 2024-02-01 11:05:36
복사: 1 클릭수: 576
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

동적 손절매 추적 전략

개요

이 전략은 특정 날짜로 촉발되는 다중 포지션 구축과 trailing stop loss의 위험 관리 메커니즘을 위한 전략이다. 이 전략은 특히 특정 달력 날짜에 따라 포지션을 자동으로 입력하고, 동적 위험 제어 방법을 통해 포지션을 관리하는 트레이더에게 적합하다.

전략 원칙

이 전략은 먼저 특정 상장 날짜를 입력하여 월일을 포함하고, 그 날짜에 따라 정확한 상장 시간을 계산합니다. 전략은 또한 스톱 손실을 추적하는 비율 변수를 입력합니다.

상장일 당일, 전략은 여러 상장 포지션을 열립니다. 동시에, 최고 가격 (highestPrice) 과 스톱로스 (stopLoss) 를 기록합니다. 이 중 최고 가격은 후속 시간 동안 지속적으로 업데이트되며, 스톱로스 가격은 최고 가격의 일정한 비율로 아래로 트래일링됩니다.

만약 가격이 스톱로스 가격보다 낮다면, 평형 상태에서 퇴출한다. 그렇지 않으면 포지션이 계속 유지되고, 스톱로스 가격은 최고 가격에 따라 계속 하향으로 추적하여 이익을 잠금하고, 위험을 통제한다.

우위 분석

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

  1. 특정 날짜에 따라 자동화되는 출시. 주요 이벤트 거래에 대한 전략에 적합하다.
  2. 손해 추적 메커니즘을 적용하여 수익을 동적으로 고정하고 위험을 효과적으로 제어할 수 있습니다.
  3. Stop Loss은 비율로 설정되어, 조작이 간단하고 직관적입니다. Stop Loss의 크기를 사용자 정의할 수 있습니다.
  4. 장기간 지분을 보유하여 주가 상승 수익을 최대한 얻을 수 있습니다.

위험 분석

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

  1. 스톱 손실 효과의 위험이 있다. 만약 주가 가격이 단기간에 크게 하락하여 스톱 손실 선을 넘으면 반발, 스톱 손실 출구에 들어가서 후속 반발에 참여할 수 없다.
  2. 최대 손실을 제한할 수 없습니다. 추적 중지 비율이 너무 커 설정되면 최대 손실이 이상적인 범위를 초과 할 수 있습니다.

대응 최적화 조치:

  1. 다른 지표와 결합하여 대장 변동이 있을 때 일시적으로 중지 추적을 종료하여 중지 손실의 효과를 방지할 수 있다.
  2. 추적 손실 비율을 설정할 때 주의를 기울여야 하며, 일반적으로 10%를 초과하지 않는다. 또는 최대 허용 손실 값을 설정한다.

최적화 방향

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

  1. 을 추가한다. 가격이 일정 수준을 넘으면, 예를 들어 50% 상승하면, 부분적으로 또는 완전히 수익을 얻는다.
  2. 지수 지표와 결합하여 시장 구조를 판단하고, 손실을 추적하는 폭을 최적화한다. 예를 들어, 대장 상동조정이 있을 때, 폭을 적절히 느슨하게 할 수 있다.
  3. 포지션 관리 모듈을 추가한다. 가격이 새로운 고치를 다시 돌파할 때, 포지션을 추가하여 추가 수익을 얻을 수 있다.

요약하다

이 전략은 특정 날짜에 상장하고 손실을 추적하는 방식을 채택하여 입장을 자동화하고 위험을 동적으로 제어 할 수 있습니다. 전략은 간단하고 직관적이며, 작동하기 쉽고, 긴 라인 포지션에 적합합니다. 추가 최적화를 통해 매우 실용적인 양적 거래 전략이 될 수 있습니다.

전략 소스 코드
/*backtest
start: 2024-01-24 00:00:00
end: 2024-01-31 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Trailing Stop Loss Percent",
     overlay=true, pyramiding=1)

// Input for the specific entry date
entryDay = input.int(defval = 1, title = "Entry Day", minval = 1, maxval = 31)
entryMonth = input.int(defval = 1, title = "Entry Month", minval = 1, maxval = 12)
entryYear = input.int(defval = 2023, title = "Entry Year", minval = 1970)

// Calculate the entry date timestamp
entryDate = timestamp(entryYear, entryMonth, entryDay, 00, 00)

// Trailing Stop Loss Percentage
trailStopPercent = input.float(defval = 5.0, title = "Trailing Stop Loss (%)", minval = 0.1)

// Entry Condition
enterTrade = true

// Variables to track the highest price and stop loss level since entry
var float highestPrice = na
var float stopLoss = na

// Update the highest price and stop loss level
if strategy.position_size > 0
    highestPrice := math.max(highestPrice, high)
    stopLoss := highestPrice * (1 - trailStopPercent / 100)

// Enter the strategy
if enterTrade
    strategy.entry("Long Entry", strategy.long)
    highestPrice := high
    stopLoss := highestPrice * (1 - trailStopPercent / 100)

// Exit the strategy if the stop loss is hit
if strategy.position_size > 0 and low <= stopLoss
    strategy.close("Long Entry")

// Plotting the stop loss level for reference
plot(strategy.position_size > 0 ? stopLoss : na, "Trailing Stop Loss", color=color.red)