이 전략은 여러 가지 기술적 지표를 결합한 트렌드를 따르는 거래 시스템입니다. 주로 파라볼릭 SAR, 단순 이동 평균 (SMA), 방향 움직임 지수 (DMI) 를 사용하여 시장 추세와 입구 지점을 결정하며, 비율 기반의 이익 목표 및 MACD 미연을 통해 출구를 최적화합니다. 핵심 개념은 강력한 추세를 확인한 후 입장을 입력하고 미리 설정된 이익 목표에 도달하거나 트렌드 역전 신호가 나타나면 출구하는 것입니다.
이 전략은 다층 필터링 메커니즘을 사용합니다. 1. 초기 거래 신호는 SAR 크로스오버를 통해 캡처됩니다. 2. 전체 트렌드 방향은 50주기 SMA를 사용하여 결정됩니다. 3. DMI 지표는 트렌드 강도와 방향을 확인 합니다. 4. 진입 조건은: SAR 이상의 가격 교차, SMA 이상의 가격 및 상승 DMI 5. 이중 출구 메커니즘: 3%의 목표 수익 또는 MACD 하향 크로스오버 6. 시장 변동성 기준을 위한 ATR 지표
이 전략은 여러 가지 기술적 지표의 조화를 통해 비교적 완전한 트렌드-추천 거래 시스템을 구축합니다. 그것의 강점은 신호 확인 신뢰성과 위험 통제 유연성에 있습니다. 내재된 지연 위험이 있지만 전략은 매개 변수 최적화 및 동적 관리 메커니즘을 통해 좋은 실용적 가치를 유지합니다. 지속적인 최적화 및 개선으로이 전략은 강력한 거래 도구로 사용될 수 있습니다.
/*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")