本策略是一种综合运用多种技术指标的量化交易方法,旨在通过结合指数移动平均线(EMA)、相对强弱指数(RSI)、平均真实波动范围(ATR)、成交量加权平均价格(VWAP)和超级趋势(Supertrend)等指标,实现对市场趋势的精准捕捉和风险可控的交易。
策略核心原理基于多维技术指标的协同作用: 1. 使用50日和200日指数移动平均线(EMA)判断趋势方向和可能的趋势反转点 2. 通过相对强弱指数(RSI)确认趋势动量和避免过度追高或追低 3. 利用平均真实波动范围(ATR)计算动态止损和止盈距离 4. 结合成交量加权平均价格(VWAP)验证价格走势的支撑和压力位 5. 采用超级趋势(Supertrend)指标确认趋势方向和交易信号
这是一种基于多维技术指标的量化交易策略,通过系统性的指标组合和严格的风险管理,旨在捕捉市场趋势并控制交易风险。策略的核心在于指标的协同作用和动态参数优化,为量化交易提供了一种灵活且相对稳健的方法。
/*backtest
start: 2025-02-25 00:00:00
end: 2025-03-27 00:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Advanced BTC/USDT Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// ==== INPUT PARAMETERS ====
emaShortLength = input.int(50, title="Short EMA Length")
emaLongLength = input.int(200, title="Long EMA Length")
rsiLength = input.int(14, title="RSI Length")
atrLength = input.int(14, title="ATR Length")
supertrendFactor = input.float(2.0, title="Supertrend Factor")
supertrendATRLength = input.int(10, title="Supertrend ATR Length")
riskRewardRatio = input.float(2.0, title="Risk-Reward Ratio")
// ==== TECHNICAL INDICATORS ====
// Exponential Moving Averages (EMA)
emaShort = ta.ema(close, emaShortLength)
emaLong = ta.ema(close, emaLongLength)
// Relative Strength Index (RSI)
rsi = ta.rsi(close, rsiLength)
// Supertrend Indicator
[supertrend, supertrendDirection] = ta.supertrend(supertrendFactor, supertrendATRLength)
// Average True Range (ATR) for Stop Loss Calculation
atr = ta.atr(atrLength)
stopLossDistance = atr * 1.5 // ATR-based stop-loss
takeProfitDistance = stopLossDistance * riskRewardRatio
// Volume Weighted Average Price (VWAP)
vwap = ta.vwap(close)
// ==== ENTRY CONDITIONS ====
// Long Entry: Golden Cross + RSI Confirmation + VWAP Support + Supertrend Uptrend
longCondition = ta.crossover(emaShort, emaLong) and rsi > 40 and rsi < 65 and close > vwap and supertrendDirection == 1
// Short Entry: Death Cross + RSI Confirmation + VWAP Resistance + Supertrend Downtrend
shortCondition = ta.crossunder(emaShort, emaLong) and rsi > 60 and rsi < 80 and close < vwap and supertrendDirection == -1
// ==== EXIT CONDITIONS ====
// Stop-Loss and Take-Profit Levels for Long Positions
longStopLoss = close - stopLossDistance
longTakeProfit = close + takeProfitDistance
// Stop-Loss and Take-Profit Levels for Short Positions
shortStopLoss = close + stopLossDistance
shortTakeProfit = close - takeProfitDistance
// ==== TRADE EXECUTION ====
// Open Long Trade
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", from_entry="Long", limit=longTakeProfit, stop=longStopLoss)
// Open Short Trade
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", from_entry="Short", limit=shortTakeProfit, stop=shortStopLoss)
// ==== ALERT SYSTEM (OPTIONAL) ====
// Send real-time alerts for buy/sell signals
alertcondition(longCondition, title="BUY Alert 🚀", message="BTC Buy Signal! 📈")
alertcondition(shortCondition, title="SELL Alert 🔻", message="BTC Sell Signal! 📉")
// ==== PLOTTING ====
// Plot Moving Averages
plot(emaShort, color=color.blue, title="50 EMA")
plot(emaLong, color=color.red, title="200 EMA")
// Plot Supertrend
plot(supertrend, color=supertrendDirection == 1 ? color.green : color.red, title="Supertrend")
// Plot VWAP
plot(vwap, color=color.orange, title="VWAP")
// 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")