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

다중 지표 트렌드 수익 최적화 전략

저자:차오장, 날짜: 2024-12-11 17:22:57
태그:SARATRMACDSMADMIADX

img

전반적인 설명

이 전략은 여러 가지 기술적 지표를 결합한 트렌드를 따르는 거래 시스템입니다. 주로 파라볼릭 SAR, 단순 이동 평균 (SMA), 방향 움직임 지수 (DMI) 를 사용하여 시장 추세와 입구 지점을 결정하며, 비율 기반의 이익 목표 및 MACD 미연을 통해 출구를 최적화합니다. 핵심 개념은 강력한 추세를 확인한 후 입장을 입력하고 미리 설정된 이익 목표에 도달하거나 트렌드 역전 신호가 나타나면 출구하는 것입니다.

전략 원칙

이 전략은 다층 필터링 메커니즘을 사용합니다.

  1. 초기 거래 신호는 SAR 크로스오버를 통해 캡처됩니다.
  2. 전체 트렌드 방향은 50주기 SMA를 사용하여 결정됩니다.
  3. DMI 지표는 트렌드 강도와 방향을 확인합니다.
  4. 진입 조건은: SAR 이상의 가격 교차, SMA 이상의 가격 및 상승 DMI
  5. 이중 출구 메커니즘: 3%의 목표 수익 또는 MACD 하락 크로스오버
  6. 시장 변동성 기준을 위한 ATR 지표

전략적 장점

  1. 여러 가지 기술 지표의 교차 검증은 잘못된 신호를 줄여줍니다.
  2. 트렌드 추적 및 추진력 지표의 조합은 성공률을 향상시킵니다.
  3. 고정된 수익률은 일관성 있는 수익을 보장합니다.
  4. MACD 격차 출구 메커니즘은 트렌드 역전 유출을 방지합니다.
  5. 전략 매개 변수는 다양한 시장 특성에 따라 유연하게 조정할 수 있습니다.
  6. ATR 모니터링은 시장 상태에 대한 참조를 제공합니다.

전략 위험

  1. 여러 가지 지표가 신호 지연으로 이어질 수 있습니다.
  2. 고정된 수익률 목표가 강한 추세에 의해 조기 퇴출을 초래할 수 있습니다.
  3. 스톱 로스 메커니즘이 없으면 위험 노출이 증가합니다.
  4. 다양한 시장에서 과도한 잘못된 신호가 발생할 수 있습니다.
  5. DMI 지표는 불안정한 시장에서 잘못된 신호를 생성할 수 있습니다.

최적화 방향

  1. ATR 기반의 동적 정지 장치를 사용하여 적응적 인 스톱 손실 메커니즘을 구현하십시오.
  2. 높은 변동성 기간 동안 포지션 크기를 조정하기 위한 변동성 필터를 개발
  3. 트렌드 역전 검출을 향상시키기 위해 MACD 매개 변수를 최적화하십시오.
  4. 증강 신호 신뢰성을 위해 볼륨 확인 메커니즘을 추가
  5. 시장 변동성에 기초한 동적 수익 목표를 개발

요약

이 전략은 여러 가지 기술적 지표의 조화를 통해 비교적 완전한 트렌드-추천 거래 시스템을 구축합니다. 그것의 강점은 신호 확인 신뢰성과 위험 통제 유연성에 있습니다. 내재된 지연 위험이 있지만 전략은 매개 변수 최적화 및 동적 관리 메커니즘을 통해 좋은 실용적 가치를 유지합니다. 지속적인 최적화 및 개선으로이 전략은 강력한 거래 도구로 사용될 수 있습니다.


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

//@version=5
strategy("Swing Trading Strategy with DMI", overlay=true)

// Define parameters
sarStart = input.float(0.02, title="SAR Start")
sarIncrement = input.float(0.02, title="SAR Increment")
sarMax = input.float(0.2, title="SAR Max")
atrLength = input.int(10, title="ATR Length")
macdShort = input.int(12, title="MACD Short Length")
macdLong = input.int(26, title="MACD Long Length")
macdSignal = input.int(9, title="MACD Signal Length")
smaLength = input.int(50, title="SMA Length")
dmiLength = input.int(14, title="DMI Length")
adxSmoothing = input.int(14, title="ADX Smoothing") // Smoothing period for ADX
targetProfitPercentage = input.float(3.0, title="Target Profit Percentage")

// Calculate SAR
sar = ta.sar(sarStart, sarIncrement, sarMax)

// Calculate ATR
atr = ta.atr(atrLength)

// Calculate MACD
[macdLine, macdSignalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal)

// Calculate SMA
sma = ta.sma(close, smaLength)
bullishTrend = close > sma

// Calculate DMI
[plusDI, minusDI, adx] = ta.dmi(dmiLength, adxSmoothing) // Specify ADX smoothing period

// Determine if DMI is bullish
dmiBullish = plusDI > minusDI

// Define buy signal
buySignal = ta.crossover(close, sar) and bullishTrend and dmiBullish

// Track buy price and position state
var float buyPrice = na
var bool inPosition = false

// Enter position
if (buySignal and not inPosition)
    buyPrice := close
    inPosition := true
    strategy.entry("Buy", strategy.long)

// Define target price (3% above the buy price)
targetPrice = na(buyPrice) ? na : buyPrice * (1 + targetProfitPercentage / 100)

// Define MACD sell signal
macdSellSignal = ta.crossunder(macdLine, macdSignalLine)

// Define sell signal
sellSignal = inPosition and (close >= targetPrice or macdSellSignal)

// Exit position
if (sellSignal)
    inPosition := false
    strategy.exit("Sell", "Buy", limit=targetPrice)

// Plot SAR on the chart
plot(sar, color=color.red, style=plot.style_cross, linewidth=2)

// Plot SMA (optional, for visualizing the trend)
plot(sma, color=color.blue, title="SMA")

// Plot DMI +DI and -DI
plot(plusDI, color=color.green, title="+DI")
plot(minusDI, color=color.red, title="-DI")

// Plot buy signal on the chart
//plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")

// Plot sell signal on the chart
//plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Optional: Plot background color for buy and sell signals
bgcolor(buySignal ? color.new(color.green, 90) : na, title="Buy Signal Background")
bgcolor(sellSignal ? color.new(color.red, 90) : na, title="Sell Signal Background")


관련

더 많은