
이 전략은 기술 지표와 기계 학습 방법을 결합한 트렌드 추적 시스템이다. 전략은 상대적으로 강한 지표 ((RSI), 평균 트렌드 지표 ((ADX) 및 선형 회귀 예측 모델을 통합하여 다차원 분석을 통해 시장 추세와 거래 기회를 결정한다. 이 전략은 5 분 시간 주기에서 작동하며 RSI 초과 오버 바이 신호, ADX 트렌드 확인 및 선형 회귀 예측을 결합하는 방식으로 완전한 거래 의사 결정 시스템을 구현한다.
전략은 트레이딩 신호를 확인하기 위해 세 층의 필터링 메커니즘을 사용합니다.
이 전략은 전통적인 기술 분석과 현대적인 예측 방법을 결합하여 비교적 완전한 거래 시스템을 구축한다. 전략의 핵심 장점은 거짓 신호의 영향을 효과적으로 줄일 수 있는 다차원 신호 확인 메커니즘에 있다. 예측 모델을 개선하고, 매개 변수 조정 메커니즘을 최적화하고, 위험 관리를 강화함으로써, 전략에는 큰 최적화 공간이 있다. 실제 적용에서, 투자자는 특정 시장 특성과 자신의 위험 감수 능력에 따라 전략 매개 변수를 적절히 조정하도록 권고한다.
/*backtest
start: 2025-01-20 00:00:00
end: 2025-02-19 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("RSI + ADX + ML-like Strategy (5min)", overlay=true)
// ———— 1. Inputs ————
rsiLength = input(14, "RSI Length")
adxLength = input(14, "ADX Length")
mlLookback = input(20, "ML Lookback (Bars)")
// ———— 2. Calculate Indicators ————
// RSI
rsi = ta.rsi(close, rsiLength)
// ADX
[diPlus, diMinus, adx] = ta.dmi(adxLength, adxLength)
// ———— 3. Simplified ML-like Component (Linear Regression) ————
var float predictedClose = na
sumX = math.sum(bar_index, mlLookback) // FIXED: Using math.sum()
sumY = math.sum(close, mlLookback) // FIXED: Using math.sum()
sumXY = math.sum(bar_index * close, mlLookback) // FIXED: Using math.sum()
sumX2 = math.sum(bar_index * bar_index, mlLookback)
slope = (mlLookback * sumXY - sumX * sumY) / (mlLookback * sumX2 - sumX * sumX)
intercept = (sumY - slope * sumX) / mlLookback
predictedClose := slope * bar_index + intercept
// ———— 4. Strategy Logic ————
mlBullish = predictedClose > close
mlBearish = predictedClose < close
enterLong = ta.crossover(rsi, 30) and adx > 25 and mlBullish
enterShort = ta.crossunder(rsi, 70) and adx > 25 and mlBearish
// ———— 5. Execute Orders ————
strategy.entry("Long", strategy.long, when=enterLong)
strategy.entry("Short", strategy.short, when=enterShort)
// ———— 6. Plotting ————
plot(predictedClose, "Predicted Close", color=color.purple)
plotshape(enterLong, "Buy", shape.triangleup, location.belowbar, color=color.green)
plotshape(enterShort, "Sell", shape.triangledown, location.abovebar, color=color.red)