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