SMA와 ATR을 기반으로 한 트레일링 스톱로스 전략


생성 날짜: 2024-02-06 10:06:29 마지막으로 수정됨: 2024-02-06 10:06:29
복사: 0 클릭수: 751
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

SMA와 ATR을 기반으로 한 트레일링 스톱로스 전략

개요

이 전략은 간단한 이동 평균 ((SMA) 과 평균 실제 변동률 ((ATR) 을 기반으로 한 동적 추적 스톱로스를 설정하는 긴 라인 거래 전략이다. 그것은 트렌드 추적과 위험 관리의 장점을 결합하여 회수 제어와 이익을 극대화하기 위해 고안되었습니다.

전략 원칙

종결 가격 상위에서 SMA 200일과 ATR 14일을 통과할 때, 더 많은 입장을 한다. 종결 가격 아래에서 SMA 200일과 ATR 14일을 통과할 때, 평소 위치 상쇄한다. 이 전략은 SMA 200을 사용하여 큰 트렌드 방향을 판단하고, ATR을 사용하여 중지 손실 라인을 설정하여 동적 추적 상쇄를 실현한다. 구체적으로, 구매 신호는 종결 가격 SMA 200일과 ATR 14일을 돌파하는 것이며, 이 돌파는 현재 상승 추세에 있다는 것을 나타냅니다.

우위 분석

이 전략은 SMA와 ATR 두 지표의 장점을 결합한다. SMA 200은 시장 소음을 필터링하여 긴 선의 주 방향을 고정시킬 수 있으며, ATR 14일은 최근 2 주간의 변동에 따라 스톱 라인을 설정하여 동적으로 추적한 스톱의 효과를 얻을 수 있다. 이것은 추세에서 지속적인 수익을 창출하는 동시에 회전을 효과적으로 제어할 수 있다.

  1. 수익률이 높다. 동향을 따라가며, 손실을 제어하는 위험을 막고, 높은 수익률을 얻는다.

  2. 회수 제어 ATR 동적 추적은 갑작스러운 사건의 영향을 줄이고, 효과적으로 회수를 제어

  3. 매개 변수는 간단하다. 단 두 개의 매개 변수만 사용해서 위험과 이익의 균형을 이루고, 과도한 최적화를 피한다.

위험 분석

이 전략에는 몇 가지 위험도 있습니다. 주요 위험은 다음과 같습니다:

  1. 트렌드 반전 위험. 전략 자체는 트렌드 반전을 판단할 수 없으며, 갑작스러운 변동이 발생하면 큰 손실을 초래할 수 있다.

  2. SMA 지연 위험. SMA는 지연성이 있어서 트렌드 변화를 즉각적으로 반영할 수 없다.

  3. ATR 변수 설정 위험. ATR 변수가 너무 크거나 너무 작으면 정책 성능에 영향을 미칩니다.

대응방법:

  1. 다른 지표와 결합하여 MACD와 같은 추세를 판단합니다.
  2. 다양한 변수 조합을 테스트하여 최적의 균형을 찾습니다.

최적화 방향

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

  1. 다양한 SMA와 ATR 변수 조합을 테스트하여 최적의 변수를 찾습니다.

  2. 다른 기술 지표 판단 역전, 예를 들어 MACD를 추가하십시오.

  3. 변화 제지, 이동 제지 등으로 손해 제지를 최적화한다.

  4. 주식의 기본 지표와 결합하여, 부진한 주식을 구입하는 것을 피하십시오.

요약하다

이 전략은 트렌드 추적 및 동적 위험 관리 방법을 통합하여 긴 선을 보유하는 동안의 중지 손실 및 정지 최적화를 구현합니다. 그것은 높은 수익률, 회수 제어, 위험 이익 균형의 특징을 가지고 있습니다. 그러나 또한 특정 트렌드 반전 위험과 변수 최적화 어려움이 있습니다.

전략 소스 코드
/*backtest
start: 2023-01-30 00:00:00
end: 2024-02-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SMA+ATR Strategie", overlay=true)

// Benutzer-Inputs für SMA, ATR und die Anzeigeoption
smaLength = input(200, title="SMA Länge")
atrLength = input(14, title="ATR Länge")
showSMAandATR = input(true, title="Zeige SMA und ATR-Bänder")

// Berechnung von SMA und ATR
sma = ta.sma(close, smaLength)
atr = ta.atr(atrLength)

// Kauf- und Verkaufslogik basierend auf SMA und ATR
buyCondition = close > sma + atr
sellCondition = close < sma - atr

// Variable zum Speichern des Eintrittspreises
var float entryPrice = na

// Kauf- und Verkaufssignale
if (buyCondition)
    strategy.entry("Buy", strategy.long)
    entryPrice := close // Speichere den Eintrittspreis

if (sellCondition)
    // Nur wenn ein Kauf stattgefunden hat
    if not na(entryPrice)
        // Berechne die Performance seit dem Kaufsignal
        performanceSinceBuy = ((close - entryPrice) / entryPrice) * 100
        // Anzeigen der Performance
        // Wähle die Box-Farbe basierend auf dem Vorzeichen der Performance
        plColor = performanceSinceBuy >= 0 ? color.green : color.red
        // Anzeigen der Performance in der entsprechenden Farbe
        plBox = "P/L: " + str.tostring(performanceSinceBuy, "#.##") + "%"
        label.new(bar_index, high, text=plBox, color=plColor, textcolor=color.white, style=label.style_label_center, yloc=yloc.price)
        
    // Schließe den Trade und setze den Eintrittspreis zurück
    strategy.close("Buy")
    entryPrice := na

// Optionale Anzeige von SMA und ATR-Band
plot(showSMAandATR ? sma : na, color=color.blue, title="SMA 200")
plot(showSMAandATR ? sma + atr : na, color=color.green, title="SMA 200 + ATR")
plot(showSMAandATR ? sma - atr : na, color=color.red, title="SMA 200 - ATR")