이 전략은 여러 가지 기술 지표에 기반한 트렌드를 따르는 거래 시스템으로, EMA 트렌드, RSI 과잉 구매/ 과잉 판매 조건, 그리고 ATR 변동성 지표를 결합하여 다차원 시장 분석을 통해 거래 승률 및 수익률을 향상시킵니다. 핵심 논리는 트렌드 방향을 확인하기 위해 단기 및 장기 EMA 크로스오버를 사용하며, 거짓 브레이크오프를 필터링하고 정확한 트렌드 포착을 위해 보유 기간을 동적으로 조정하기 위해 RSI 지표를 활용합니다.
이 전략은 트렌드 결정의 주요 기초로 20일 및 50일 EMA를 사용한다. 단기 EMA가 장기 EMA를 넘어서면 상승세가 확인되고, 역행한다. 트렌드 확인을 바탕으로, RSI 지표는 과잉 구매/ 과잉 판매 판단을 위해 도입되며, 상승세 동안 과잉 판매 지역에서 RSI가 30 이하로 떨어지면 긴 신호를 유발하고, 하락세 동안 과잉 구매 지역에서 RSI가 70 이상으로 상승하면 짧은 신호를 유발한다. ATR 지표는 시장 변동성을 측정하며, ATR이 낮은 변동성 환경에서 거래를 피하기 위해 설정된 임계값을 초과할 때만 거래를 실행한다.
이 전략은 EMA 트렌드, RSI 과잉 구매/대판 조건, ATR 변동성의 포괄적인 분석을 통해 비교적 완전한 거래 시스템을 구축한다. 그것의 핵심 장점은 여러 지표의 교차 검증에 있으며, 잘못된 신호의 영향을 효과적으로 감소시킨다. 매개 변수 최적화와 위험 통제 메커니즘 개선을 통해 전략은 여전히 상당한 최적화 잠재력을 가지고 있다. 거래자는 특정 시장 환경에 따라 매개 변수를 조정하고 라이브 거래에서 사용할 때 위험 통제 조치를 엄격히 시행하는 것이 좋습니다.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("High Win Rate BTC Strategy", overlay=true) // 参数设置 emaShortLength = input(20, title="Short EMA Length") emaLongLength = input(50, title="Long EMA Length") rsiLength = input(14, title="RSI Length") rsiOverbought = input(70, title="RSI Overbought Level") rsiOversold = input(30, title="RSI Oversold Level") atrLength = input(14, title="ATR Length") atrThreshold = input(1.0, title="ATR Threshold") holdBars = input(5, title="Hold Bars") // 计算指标 emaShort = ta.ema(close, emaShortLength) emaLong = ta.ema(close, emaLongLength) rsi = ta.rsi(close, rsiLength) atr = ta.atr(atrLength) // 趋势确认 uptrend = emaShort > emaLong downtrend = emaShort < emaLong // 入场条件 longCondition = uptrend and close > emaShort and rsi < rsiOverbought and atr > atrThreshold shortCondition = downtrend and close < emaShort and rsi > rsiOversold and atr > atrThreshold // 出场条件 var int holdCount = 0 if (strategy.position_size > 0 or strategy.position_size < 0) holdCount := holdCount + 1 else holdCount := 0 exitCondition = holdCount >= holdBars // 执行交易 if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) if (exitCondition) strategy.close_all() // 绘制指标 plot(emaShort, color=color.blue, title="Short EMA") plot(emaLong, color=color.red, title="Long EMA") hline(rsiOverbought, "RSI Overbought", color=color.red) hline(rsiOversold, "RSI Oversold", color=color.green) plot(rsi, color=color.purple, title="RSI")