이 전략은 세 가지 기술 지표인 VWAP, MACD 및 RSI를 기반으로 한 양적 거래 전략이다. 이 전략은 볼륨 가중 평균 가격 (VWAP), 이동 평균 컨버전스 디버전스 (MACD), 상대 강도 지수 (RSI) 의 신호를 결합하여 거래 기회를 식별합니다. 리스크 관리를 위해 비율 기반의 영리 및 스톱 로스 메커니즘을 통합하고 자본 활용을 최적화하기 위해 전략 위치 사이징을 사용합니다.
핵심 논리는 세 가지 주요 지표의 포괄적 분석에 기반합니다.
구매 조건은 다음과 같습니다.
판매 조건은 다음을 요구합니다.
이 전략은 VWAP, MACD 및 RSI의 세 가지 고전적인 기술 지표를 결합하여 비교적 완전한 거래 시스템을 구축합니다. 디자인은 거래 품질을 향상시키기 위해 여러 지표의 크로스 검증을 통해 신호 신뢰성과 리스크 관리를 강조합니다. 최적화가 필요한 측면이 있지만 전반적인 프레임워크는 건전하며 좋은 확장성을 제공합니다. 거래자는 다양한 시장 조건에서 백테스팅을 통해 전략을 검증하고 라이브 구현 전에 특정 요구 사항에 따라 매개 변수를 최적화하는 것이 좋습니다.
/*backtest start: 2024-10-27 00:00:00 end: 2024-11-26 00:00:00 period: 4h basePeriod: 4h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("pbs", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Input for take-profit and stop-loss takeProfitPercent = input.float(0.5, title="Take Profit (%)", step=0.1) / 100 stopLossPercent = input.float(0.25, title="Stop Loss (%)", step=0.1) / 100 macdFastLength = input.int(12, title="MACD Fast Length") macdSlowLength = input.int(26, title="MACD Slow Length") macdSignalLength = input.int(9, title="MACD Signal Length") rsiLength = input.int(14, title="RSI Length") rsiOverbought = input.int(70, title="RSI Overbought Level", step=1) rsiOversold = input.int(30, title="RSI Oversold Level", step=1) vwap = ta.vwap(close) [macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalLength) macdHistogram = macdLine - signalLine rsi = ta.rsi(close, rsiLength) plot(vwap, color=color.purple, linewidth=2, title="VWAP") hline(rsiOverbought, "Overbought", color=color.red, linestyle=hline.style_dotted) hline(rsiOversold, "Oversold", color=color.green, linestyle=hline.style_dotted) plot(macdLine, color=color.blue, title="MACD Line") plot(signalLine, color=color.orange, title="Signal Line") // Buy Condition longCondition = ta.crossover(close, vwap) and macdHistogram > 0 and rsi < rsiOverbought // Sell Condition shortCondition = ta.crossunder(close, vwap) and macdHistogram < 0 and rsi > rsiOversold // Execute trades based on conditions if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Take Profit/Stop Loss", "Long", limit=close * (1 + takeProfitPercent), stop=close * (1 - stopLossPercent)) if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Take Profit/Stop Loss", "Short", limit=close * (1 - takeProfitPercent), stop=close * (1 + stopLossPercent)) // Plot Buy/Sell Signals plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal") plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")