이 전략은 여러 가지 기술적 지표를 결합한 트렌드-추천 거래 시스템입니다. 시장 트렌드가 명확하게 정의 될 때 거래를 실행하기 위해 RSI (비례 강도 지수), MACD (동기 평균 컨버전스 디버전스) 및 SMA (단순 이동 평균) 를 통합합니다. 이 전략은 또한 더 나은 리스크 관리를 위해 수익을 취하고, 손실을 멈추고, 후속 중지 메커니즘을 통합합니다.
이 전략은 다음과 같은 핵심 조건에 따라 거래를 실행합니다.
이 모든 조건이 동시에 충족되면 시스템은 긴 신호를 생성합니다. 또한 전략은 5%의 수익 목표, 3%의 스톱 로스 제한, 그리고 2%의 트레일링 스톱을 설정하여 축적된 이익을 보호합니다. 거래 조건에 대한 이러한 다층 접근 방식은 정확성과 보안을 향상시키는 데 도움이됩니다.
이 전략은 여러 기술적 지표의 조합을 통해 포괄적인 거래 시스템을 구축합니다. 트렌드 다음 논리 및 리스크 관리 고려 사항을 모두 포함합니다. 최적화 할 수있는 영역이 있지만 전반적인 프레임워크는 좋은 확장성과 적응력을 제공합니다. 성공적인 구현은 거래자가 실제 시장 조건에 따라 매개 변수를 최적화하고 전략을 개선해야합니다.
/*backtest start: 2024-12-03 00:00:00 end: 2024-12-10 00:00:00 period: 45m basePeriod: 45m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Flexible Swing Trading Strategy with Trailing Stop and Date Range", overlay=true) // Input parameters rsiPeriod = input.int(14, title="RSI Period") macdFastLength = input.int(12, title="MACD Fast Length") macdSlowLength = input.int(26, title="MACD Slow Length") macdSignalSmoothing = input.int(9, title="MACD Signal Smoothing") smaShortPeriod = input.int(20, title="Short-term SMA Period") smaLongPeriod = input.int(50, title="Long-term SMA Period") takeProfitPercent = input.float(5.0, title="Take Profit Percentage") stopLossPercent = input.float(3.0, title="Stop Loss Percentage") trailingStopPercent = input.float(2.0, title="Trailing Stop Percentage") // Date range inputs startDate = input(timestamp("2023-01-01 00:00"), title="Start Date") endDate = input(timestamp("2023-12-31 23:59"), title="End Date") // Calculate RSI rsi = ta.rsi(close, rsiPeriod) // Calculate MACD [macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalSmoothing) // Calculate SMAs smaShort = ta.sma(close, smaShortPeriod) smaLong = ta.sma(close, smaLongPeriod) // Buy condition buyCondition = ta.crossover(macdLine, signalLine) and rsi < 70 and close > smaShort and smaShort > smaLong // Execute buy orders within the date range if (buyCondition ) strategy.entry("Buy", strategy.long) // Calculate take profit and stop loss levels takeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercent / 100) stopLossLevel = strategy.position_avg_price * (1 - stopLossPercent / 100) // Set take profit, stop loss, and trailing stop strategy.exit("Take Profit", "Buy", limit=takeProfitLevel) strategy.exit("Stop Loss", "Buy", stop=stopLossLevel) strategy.exit("Trailing Stop", "Buy", trail_price=close * (1 - trailingStopPercent / 100), trail_offset=trailingStopPercent / 100) // Plot Buy signals plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") // Plot SMAs plot(smaShort, color=color.blue, title="20 SMA") plot(smaLong, color=color.red, title="50 SMA") // Plot MACD and Signal Line plot(macdLine, color=color.blue, title="MACD Line") plot(signalLine, color=color.orange, title="Signal Line") // Plot RSI hline(70, "Overbought", color=color.red) hline(30, "Oversold", color=color.green) plot(rsi, color=color.purple, title="RSI") // Debugging plots plotchar(buyCondition , char='B', location=location.belowbar, color=color.green, size=size.small) plotchar(strategy.opentrades > 0, char='T', location=location.abovebar, color=color.blue, size=size.small) plot(stopLossLevel, color=color.red, title="Stop Loss Level") plot(takeProfitLevel, color=color.green, title="Take Profit Level")