리소스 로딩... 로딩...

이중SMA 동적 트렌드 스마트 리스크 관리 전략

저자:차오장, 날짜: 2024-11-29 11:06:38
태그:SMATPSLATRROC

img

전반적인 설명

이 전략은 이중 이동 평균에 기반한 지능적인 트렌드 추적 시스템으로, 기울기 지표와 함께 최고와 최하위의 이동 평균을 계산하여 시장 트렌드를 식별하며, 위험 관리를 위한 동적인 수익 취득 및 스톱-러스 메커니즘과 결합합니다. 전략의 핵심은 슬림 임계로 잘못된 신호를 필터링하는 데 있으며, 수익을 잠금하기 위해 트레일링 스톱을 사용하여 트렌드 추적 및 위험 통제의 유기적인 조합을 달성합니다.

전략 원칙

이 전략은 두 개의 이동 평균 시스템을 핵심 거래 논리로 사용하며, 높은 가격과 낮은 가격 시리즈 모두에서 이동 평균을 계산합니다. 가격이 상당히 긍정적 인 기울기와 함께 상위 평균보다 높을 때 긴 신호가 생성되며, 가격이 상당히 부정적인 기울기와 함께 하위 평균보다 낮을 때 짧은 신호가 발생합니다. 오스실레이션 시장에서 빈번한 거래를 피하기 위해 전략에는 기울기 임계 메커니즘이 포함되어 있으며, 이동 평균 기울기 변화가 설정된 임계값을 초과 할 때만 트렌드 유효성을 확인합니다. 리스크 관리를 위해 전략은 초기 공격적인 수익 목표를 사용하여 역동적인 수익 취득 및 손실 중지 메커니즘을 구현하며 획득 된 이익을 보호하기 위해 후속 스톱을 설정합니다.

전략적 장점

  1. 트렌드 식별의 높은 정확성: 이중 이동 평균과 기울기 문턱의 조합은 측면 시장에서 잘못된 신호를 효과적으로 필터링합니다.
  2. 포괄적 인 위험 관리: 동적 인 스톱 로스 메커니즘은 가격 움직임에 자동으로 조정되며 수익을 보호하고 트렌드 개발을 허용합니다.
  3. 유연한 매개 변수: 이동 평균 기간, 이익/손실 비율 및 기울기 문턱과 같은 주요 매개 변수는 다른 시장 특성에 맞게 조정할 수 있습니다.
  4. 명확하고 간단한 논리: 전략 논리는 직관적이고 이해하기 쉽고 유지 보수와 최적화를 촉진합니다.
  5. 높은 적응력: 다른 시간 프레임과 거래 도구에 적용됩니다.

전략 위험

  1. 트렌드 역전 위험: 급격한 트렌드 역전 시, 트레일링 스톱은 모든 수익을 시간 내에 차단하지 않을 수 있습니다.
  2. 매개 변수 민감성: 전략 성능은 매개 변수 설정에 민감하며, 다른 시장 환경은 다른 매개 변수 조합을 요구할 수 있습니다.
  3. 오시일레이션 시장 성과: 기울기 필터링에도 불구하고, 매우 변동적인 시장에서 잘못된 신호가 여전히 발생할 수 있습니다.
  4. 슬라이프 효과: 매우 변동적인 기간 동안 실제 실행 가격은 신호 가격과 크게 다를 수 있습니다.

최적화 방향

  1. 변동성 적응 메커니즘을 도입: ATR에 기반한 기울기 문턱 및 스톱-러스 거리를 동적으로 조정하는 것을 고려하십시오.
  2. 시장 환경 필터링 추가: 다른 시장 조건에서 다른 매개 변수 조합을 사용하기 위해 트렌드 강도 지표를 포함합니다.
  3. 이윤 취득 및 중단 손실 메커니즘을 최적화: 부분 이윤을 점차적으로 차단하기 위해 다단계 수익 목표를 설계하십시오.
  4. 부피 분석을 추가합니다. 트렌드 유효성을 확인하기 위해 부피 데이터를 포함합니다.
  5. 시간 필터링을 도입하십시오. 매우 변동적인 시장 기간 동안 거래를 피하십시오.

요약

이 전략은 트렌드 추종과 리스크 관리를 유기적으로 결합한 양적 거래 전략이다. 이중 이동 평균 시스템과 기울기 임계의 협력을 통해 전략은 시장 추세를 정확하게 파악할 수 있으며, 동적인 수익 취득 및 스톱 로스 메커니즘은 포괄적인 리스크 통제를 제공합니다. 매개 변수 선택과 시장 적응력 개선의 여지가 있지만 명확한 논리적 틀과 유연한 매개 변수 시스템은 후속 최적화에 좋은 기반을 제공합니다. 라이브 트레이딩에서 전략을 적용 할 때 거래자가 특정 시장 특성과 자신의 위험 선호도에 따라 다양한 매개 변수를 철저히 백테스트하고 최적화하는 것이 좋습니다.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SMA Buy/Sell Strategy with Significant Slope", overlay=true)

// Parametri configurabili
smaPeriod = input.int(20, title="SMA Period", minval=1)
initialTPPercent = input.float(5.0, title="Initial Take Profit (%)", minval=0.1)  // Take Profit iniziale (ambizioso)
trailingSLPercent = input.float(1.0, title="Trailing Stop Loss (%)", minval=0.1) // Percentuale di trailing SL
slopeThreshold = input.float(0.05, title="Slope Threshold (%)", minval=0.01)    // Soglia minima di pendenza significativa

// SMA calcolate su HIGH e LOW
smaHigh = ta.sma(high, smaPeriod)
smaLow = ta.sma(low, smaPeriod)

// Funzioni per pendenza significativa
isSignificantSlope(sma, threshold) =>
    math.abs(sma - sma[5]) / sma[5] > threshold / 100

slopePositive(sma) =>
    sma > sma[1] and isSignificantSlope(sma, slopeThreshold)

slopeNegative(sma) =>
    sma < sma[1] and isSignificantSlope(sma, slopeThreshold)

// Condizioni di BUY e SELL
buyCondition = close > smaHigh and low < smaHigh and close[1] < smaHigh and slopePositive(smaHigh)
sellCondition = close < smaLow and high > smaLow and close[1] > smaLow and slopeNegative(smaLow)

// Plot delle SMA
plot(smaHigh, color=color.green, linewidth=2, title="SMA 20 High")
plot(smaLow, color=color.red, linewidth=2, title="SMA 20 Low")

// Gestione TP/SL dinamici
longInitialTP = strategy.position_avg_price * (1 + initialTPPercent / 100)
shortInitialTP = strategy.position_avg_price * (1 - initialTPPercent / 100)

// Trailing SL dinamico
longTrailingSL = close * (1 - trailingSLPercent / 100)
shortTrailingSL = close * (1 + trailingSLPercent / 100)

// Chiusura di posizioni attive su segnali opposti
if strategy.position_size > 0 and sellCondition
    strategy.close("Buy", comment="Close Long on Sell Signal")
if strategy.position_size < 0 and buyCondition
    strategy.close("Sell", comment="Close Short on Buy Signal")

// Apertura di nuove posizioni con TP iniziale e Trailing SL
if buyCondition
    strategy.entry("Buy", strategy.long, comment="Open Long")
    strategy.exit("Long TP/Trailing SL", from_entry="Buy", limit=longInitialTP, stop=longTrailingSL)

if sellCondition
    strategy.entry("Sell", strategy.short, comment="Open Short")
    strategy.exit("Short TP/Trailing SL", from_entry="Sell", limit=shortInitialTP, stop=shortTrailingSL)


관련

더 많은