이 전략은 EMA, MACD, VWAP 및 RSI와 같은 여러 지표를 결합하여 높은 확률의 거래 기회를 포착합니다. 트렌드 방향을 결정하기 위해 EMA, 모멘텀을위한 MACD, 볼륨을위한 VWAP 및 과잉 구매 및 과잉 판매 조건을위한 RSI를 사용합니다. 이 전략은 수익을 보호하기 위해 후속 스톱 손실을 사용하여 이러한 지표의 조합을 기반으로 구매 및 판매 신호를 생성합니다.
이 전략은 시장 조건을 평가하고 수익을 보호하기 위해 트레일링 스톱 로스를 사용하여 거래 신호를 생성하기 위해 여러 지표를 결합합니다. 전략 매개 변수는 사용자의 선호도에 따라 조정되어 전략의 유연성을 향상시킬 수 있습니다. 그러나 전략은 불안정한 시장에서 성능이 좋지 않고 트렌드 역전 중에 더 큰 드래운드와 직면 할 수 있으므로 다른 시장과 도구에 최적화 및 개선되어야합니다. 미래 최적화는 전략의 안정성과 수익성을 향상시키기 위해 더 많은 필터링 조건, 동적 스톱 로스 방법, 매개 변수 최적화 및 위치 사이징을 추가하는 것을 고려 할 수 있습니다.
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Intraday Strategy", overlay=true) // Input parameters emaLength = input.int(50, title="EMA Length") macdShort = input.int(12, title="MACD Short Period") macdLong = input.int(26, title="MACD Long Period") macdSignal = input.int(9, title="MACD Signal Period") rsiLength = input.int(14, title="RSI Length") rsiOverbought = input.int(70, title="RSI Overbought Level") rsiOversold = input.int(30, title="RSI Oversold Level") risk = input.float(1, title="Risk Percentage", minval=0.1, step=0.1) trailOffset = input.float(0.5, title="Trailing Stop Offset", minval=0.1, step=0.1) // Calculating indicators ema = ta.ema(close, emaLength) [macdLine, signalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal) rsi = ta.rsi(close, rsiLength) vwap = ta.vwap(close) // Entry conditions longCondition = ta.crossover(macdLine, signalLine) and close > ema and rsi < rsiOverbought and close > vwap shortCondition = ta.crossunder(macdLine, signalLine) and close < ema and rsi > rsiOversold and close < vwap // Exit conditions longExitCondition = ta.crossunder(macdLine, signalLine) or close < ema shortExitCondition = ta.crossover(macdLine, signalLine) or close > ema // Position sizing based on risk percentage capital = strategy.equity positionSize = (capital * (risk / 100)) / close // Executing trades if (longCondition) strategy.entry("Long", strategy.long, qty=1) if (shortCondition) strategy.entry("Short", strategy.short, qty=1) if (longExitCondition) strategy.close("Long") if (shortExitCondition) strategy.close("Short") // Trailing stop loss if (strategy.position_size > 0) strategy.exit("Trailing Stop Long", from_entry="Long", trail_price=close, trail_offset=trailOffset) if (strategy.position_size < 0) strategy.exit("Trailing Stop Short", from_entry="Short", trail_price=close, trail_offset=trailOffset) // Plotting indicators plot(ema, title="EMA", color=color.blue) hline(rsiOverbought, "Overbought", color=color.red) hline(rsiOversold, "Oversold", color=color.green) plot(rsi, title="RSI", color=color.purple) plot(vwap, title="VWAP", color=color.orange)