
이 전략은 다중 기술 지표에 기반한 혼합 거래 시스템으로, 평균선 ((EMA), 상대적으로 강한 지표 ((RSI) 과 슈퍼 트렌드 ((SuperTrend) 을 결합하여 시장의 추세를 포착한다. 전략은 고정 파라미터 설정을 채택하고, 2 시간 시간 주기만을 위해 특별히 최적화되어 있으며, 21/55/200 주기의 평균선 시스템으로 추세를 식별하고, 동시에 RSI ((14) 운동량 필터와 슈퍼 트렌드 ((3,14) 를 결합하여 손실을 관리한다. 이 전략은 또한 1.5 배의 거래량이 발생하도록 요구하며, ATR을 통해 변동률을 확인하여 거래의 신뢰성을 높인다.
이 전략의 핵심 논리는 다층적인 기술 분석 프레임워크를 기반으로 합니다.
이 전략은 여러 가지 기술 지표의 조합을 통해 비교적 완전한 거래 시스템을 구축한다. 이 전략의 장점은 시장 추세를 효과적으로 포착하고 여러 조건 필터링을 통해 거래의 신뢰성을 높일 수 있다는 것이다. 일부 고유한 위험이 있지만, 최적화 및 개선으로 전략의 전반적인 성능을 향상시킬 여지가 있다. 이 전략은 특히 변동성이 높은 시장에서 사용하기에 적합하지만 시장 환경의 변화와 위험 통제에 주의를 기울여야 한다.
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-16 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Hybrid Trend Momentum Strategy by Biege ver. 1.0", overlay=true)
// ———— SUPERTREND FIX ————
supertrendWrapper(factor, atrPeriod) =>
[stLine, stDir] = ta.supertrend(factor, atrPeriod)
[stLine, stDir]
// ———— GLOBAL EMA CALCULATIONS ————
fastEMA = ta.ema(close, 21)
slowEMA = ta.ema(close, 55)
trendEMA = ta.ema(close, 200)
atrVal = ta.atr(14)
atrEMA = ta.ema(atrVal, 48)
rsiVal = ta.rsi(close, 14)
rsiEMA = ta.ema(rsiVal, 14)
volumeEMA = ta.ema(volume, 20)
[supertrendLine, supertrendDir] = supertrendWrapper(3, 14)
// ———— TRADE THROTTLING SYSTEM ————
var int lastTradeTime = na
tradeCooldown = input.int(360, "Cooldown (minutes)", minval=60, step=15) * 60 * 1000
// ———— ENHANCED ENTRY CONDITIONS ————
entryCondition =
ta.crossover(fastEMA, slowEMA) and
rsiVal > rsiEMA + 10 and
close > supertrendLine and
close > trendEMA and
volume > volumeEMA * 1.5 and
atrVal > atrEMA and
(na(lastTradeTime) or time - lastTradeTime >= tradeCooldown)
// ———— ULTRA-OPTIMIZED EXIT CONDITIONS ————
exitCondition =
ta.crossunder(fastEMA, slowEMA) or // Main EMA cross remains
ta.crossunder(rsiVal, rsiEMA - 15) or // Increased from -10 to -15 (harder trigger)
ta.crossunder(close, supertrendLine * 0.98) // Changed from 1.01 to 0.98 (2% buffer below)
// ———— TRADE EXECUTION ————
if entryCondition
strategy.entry("Buy", strategy.long)
lastTradeTime := time
if exitCondition
strategy.close("Buy")
// ———— VISUALS ————
plot(fastEMA, "Fast EMA", color.new(#2962FF, 0), 2)
plot(slowEMA, "Slow EMA", color.new(#FF6D00, 0), 2)
plot(trendEMA, "Trend EMA", color.new(#AA00FF, 0), 2)
plot(supertrendLine, "SuperTrend", color.new(#00C853, 0), 2)
plotshape(entryCondition, "Buy", shape.triangleup,
location.belowbar, color.new(#00E676, 0), size=size.small)
plotshape(exitCondition, "Sell", shape.triangledown,
location.abovebar, color.new(#FF1744, 0), size=size.small)