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

다중 평형 이동 평균 동적 크로스오버 트렌드

저자:차오장, 날짜: 2025-01-17 15:53:16
태그:MAEMARSIATRSMARMAWMASLTP

 Multi-Smoothed Moving Average Dynamic Crossover Trend Following Strategy with Multiple Confirmations

전반적인 설명

이 전략은 트렌드를 따르는 시스템으로, 여러 개의 평형 이동 평균을 기반으로 삼중 평형화를 사용하여 시장 소음을 필터하고, RSI 모멘텀 지표, ATR 변동성 지표 및 200주기 EMA 트렌드 필터를 결합하여 거래 신호를 확인합니다. 이 전략은 1시간 시간 프레임에서 작동하며, 이는 기관 거래 행동과 조화를 이루면서 거래 빈도와 트렌드 신뢰성을 효과적으로 균형있게합니다.

전략 원칙

전략의 핵심은 가격의 세 배 평형화를 통해 주요 트렌드 라인을 구축하고 짧은 기간 신호 라인과 교차를 통해 거래 신호를 생성하는 것입니다. 거래 신호는 동시에 다음 조건을 충족해야합니다. 1. 200EMA에 대한 가격 지위는 주요 트렌드 방향을 확인합니다. 2. RSI 지표 위치가 동력을 확인 3. ATR 지표는 충분한 변동성을 확인합니다. 세 번 매끄러운 MA와 신호 라인 교차 특정 입구점을 확인 스톱 로스는 ATR 기반의 동적 스톱을 사용하며, 수익은 ATR의 2배로 설정되어 유리한 리스크/어워드 비율을 보장합니다.

전략적 장점

  1. 세 번 평평화 는 거짓 신호 를 현저 히 줄이고 트렌드 판단 의 신뢰성 을 향상 시킨다
  2. 다중 확인 메커니즘은 주요 추세와 거래 방향이 일치하는지 보장합니다.
  3. 동적 스톱 로스 및 취득 설정은 다른 시장 변동성 환경에 적응합니다.
  4. 1시간 시간 프레임에서의 전략 운영은 더 낮은 시간 프레임 오스칠레이션을 효과적으로 피합니다.
  5. 재 페인팅 기능은 백테스트 결과의 신뢰성을 보장합니다.

전략 위험

  1. 다양한 시장에서 연속적인 작은 손실을 초래할 수 있습니다.
  2. 여러 확인 메커니즘이 놓친 거래 기회를 초래할 수 있습니다.
  3. 신호 지연은 입력 포인트 최적화에 영향을 줄 수 있습니다.
  4. 효과적인 신호를 생성하기 위해 충분한 변동성을 필요로 합니다.
  5. 극심한 시장 조건에서 동적 정지는 충분히 시기적절하지 않을 수 있습니다.

전략 최적화 방향

  1. 보조 확인으로 볼륨 표시기를 추가할 수 있습니다.
  2. 적응적 매개 변수 최적화 메커니즘을 도입하는 것을 고려하십시오.
  3. 양적 추세 강도 평가를 추가 할 수 있습니다
  4. 스톱 로스 및 트레이프 이윤 곱셈 설정 최적화
  5. 시장 성과를 개선하기 위해 오시레이터 지표를 추가하는 것을 고려하십시오.

요약

이것은 완전한 구조와 엄격한 논리를 가진 트렌드를 따르는 전략입니다. 여러 매끄러운 처리 및 여러 확인 메커니즘을 통해 거래 신호의 신뢰성을 효과적으로 향상시킵니다. 동적 위험 관리 메커니즘은 좋은 적응력을 제공합니다. 약간의 지연이 있지만, 전략은 여전히 매개 변수 최적화 및 추가 보조 지표를 통해 개선 할 수있는 상당한 여지가 있습니다.


/*backtest
start: 2024-12-17 00:00:00
end: 2025-01-16 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=6
strategy("Optimized Triple Smoothed MA Crossover Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)

// === Input Settings ===
slength = input.int(7, "Main Smoothing Length", group="Moving Average Settings")
siglen = input.int(12, "Signal Length", group="Moving Average Settings")
src = input.source(close, "Data Source", group="Moving Average Settings")
mat = input.string("EMA", "Triple Smoothed MA Type", ["EMA", "SMA", "RMA", "WMA"], group="Moving Average Settings")
mat1 = input.string("EMA", "Signal Type", ["EMA", "SMA", "RMA", "WMA"], group="Moving Average Settings")

// === Trend Confirmation (Higher Timeframe Filter) ===
useTrendFilter = input.bool(true, "Enable Trend Filter (200 EMA)", group="Trend Confirmation")
trendMA = ta.ema(close, 200)

// === Momentum Filter (RSI Confirmation) ===
useRSIFilter = input.bool(true, "Enable RSI Confirmation", group="Momentum Confirmation")
rsi = ta.rsi(close, 14)
rsiThreshold = input.int(50, "RSI Threshold", group="Momentum Confirmation")

// === Volatility Filter (ATR) ===
useATRFilter = input.bool(true, "Enable ATR Filter", group="Volatility Filtering")
atr = ta.atr(14)
atrMa = ta.sma(atr, 14)

// === Risk Management (ATR-Based Stop Loss) ===
useAdaptiveSL = input.bool(true, "Use ATR-Based Stop Loss", group="Risk Management")
atrMultiplier = input.float(1.5, "ATR Multiplier for SL", minval=0.5, maxval=5, group="Risk Management")
takeProfitMultiplier = input.float(2, "Take Profit Multiplier", group="Risk Management")

// === Moving Average Function ===
ma(source, length, MAtype) =>
    switch MAtype
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "RMA" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)

// === Triple Smoothed Calculation ===
tripleSmoothedMA = ma(ma(ma(src, slength, mat), slength, mat), slength, mat)
signalLine = ma(tripleSmoothedMA, siglen, mat1)

// === Crossovers (Entry Signals) ===
bullishCrossover = ta.crossunder(signalLine, tripleSmoothedMA)
bearishCrossover = ta.crossover(signalLine, tripleSmoothedMA)

// === Additional Confirmation Conditions ===
trendLongCondition = not useTrendFilter or (close > trendMA)  // Only long if price is above 200 EMA
trendShortCondition = not useTrendFilter or (close < trendMA) // Only short if price is below 200 EMA

rsiLongCondition = not useRSIFilter or (rsi > rsiThreshold)  // RSI above 50 for longs
rsiShortCondition = not useRSIFilter or (rsi < rsiThreshold) // RSI below 50 for shorts

atrCondition = not useATRFilter or (atr > atrMa)  // ATR must be above its MA for volatility confirmation

// === Final Trade Entry Conditions ===
longCondition = bullishCrossover and trendLongCondition and rsiLongCondition and atrCondition
shortCondition = bearishCrossover and trendShortCondition and rsiShortCondition and atrCondition

// === ATR-Based Stop Loss & Take Profit ===
longSL = close - (atr * atrMultiplier)
longTP = close + (atr * takeProfitMultiplier)

shortSL = close + (atr * atrMultiplier)
shortTP = close - (atr * takeProfitMultiplier)

// === Strategy Execution ===
if longCondition
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", from_entry="Long", stop=longSL, limit=longTP)

if shortCondition
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", from_entry="Short", stop=shortSL, limit=shortTP)

// === Plots ===
plot(tripleSmoothedMA, title="Triple Smoothed MA", color=color.blue)
plot(signalLine, title="Signal Line", color=color.red)
plot(trendMA, title="200 EMA", color=color.gray)

// === Alerts ===
alertcondition(longCondition, title="Bullish Signal", message="Triple Smoothed MA Bullish Crossover Confirmed")
alertcondition(shortCondition, title="Bearish Signal", message="Triple Smoothed MA Bearish Crossover Confirmed")


관련

더 많은