SMA-ATR 동적 후속 정지 전략

저자:차오장, 날짜: 2024-02-06 10:06:29
태그:

img

전반적인 설명

이 전략은 간단한 이동 평균 (SMA) 및 평균 진정한 범위 (ATR) 를 기반으로 동적 인 추적 스톱 손실을 설정하는 장기적인 거래 전략입니다. 이 전략은 트렌드 추적 및 위험 관리의 장점을 결합하여 수익을 극대화하면서 인하를 제어합니다.

전략 논리

종료 가격이 SMA 200 더하기 ATR 14를 넘을 때 장면을 입력하고 종료 가격이 SMA 200 빼기 ATR 14를 넘을 때 포지션을 닫습니다. 전략은 주요 트렌드 방향을 결정하기 위해 SMA 200를 사용하여 ATR 14와 동적으로 스톱 로스 라인을 설정하여 동적 트레일링 스톱 로스를 실현합니다. 구체적으로, 종료 가격이 SMA 200 더하기 ATR 14을 넘을 때 구매 신호가 발사됩니다. 이 브레이크는 현재 시장이 상승 추세에 머물러 있음을 의미합니다. 종료 가격이 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")

더 많은